Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1527 / 13644 ツリー ←次へ | 前へ→

【73759】レポートフォームにある値を一つずつ取得したい dada 13/2/9(土) 14:58 質問[未読]
【73837】Re:レポートフォームにある値を一つずつ取... UO3 13/2/19(火) 12:46 発言[未読]
【73838】Re:レポートフォームにある値を一つずつ取... UO3 13/2/19(火) 13:48 発言[未読]

【73759】レポートフォームにある値を一つずつ取得...
質問  dada E-MAIL  - 13/2/9(土) 14:58 -

引用なし
パスワード
   下記レポートフォームになる数値をSheet3のように並べ替えたい。
Sheet1とSheet2のサイズ・位置は基本的に同じ。Total行と列は必要なし。

フォーム内にある特定のセルをヘッダーとして扱い、詳細データにくっつけてSheet3に飛ばしたいイメージです。空白列やセルが間にあるため、レンジ指定ができませんでした。
VBA初心者のため、お手数お掛けします!

    A    B    C    D    E    F    G    H    I
1                                    
2    <Sheet1>                                
3        部署1    ←ヘッダー                        
4        空白行                            
5    ヘッダー→    種類    JPY    空白列    USD    空白列    EUR    空白列    Total
6        人件費    1        6        11        18
7        光熱費    2        7        12        21
8        水道費    3        8        13        24
9        交際費    4        9        14        27
10        雑費    5        10        15        30
11        total    15        40        65        120
                                    
    A    B    C    D    E    F    G    H    I
1                                    
2    <Sheet2>                                
3        部署2    ←ヘッダー                        
4    ヘッダー→    空白行                            
5        種類    JPY    空白列    USD    空白列    EUR    空白列    Total
6        人件費    1        6        11        18
7        光熱費    2        7        12        21
8        水道費    3        8        13        24
9        交際費    4        9        14        27
10        雑費    5        10        15        30
11        total    15        40        65        120
                                    
                                    
<Sheet3>                
<こうしたい>                
                
    部署1    人件費    JPY    1
    部署1    光熱費    JPY    2
    部署1    水道費    JPY    3
    部署1    交際費    JPY    4
    部署1    雑費    JPY    5
    部署1    人件費    USD    6
    部署1    光熱費    USD    7
    部署1    水道費    USD    8
    部署1    交際費    USD    9
    部署1    雑費    USD    10
    部署1    人件費    EUR    11
    部署1    光熱費    EUR    12
    部署1    水道費    EUR    13
    部署1    交際費    EUR    14
    部署1    雑費    EUR    15
    部署2    人件費    JPY    1
    部署2    光熱費    JPY    2
    部署2    水道費    JPY    3
    部署2    交際費    JPY    4
    部署2    雑費    JPY    5
    部署2    人件費    USD    6
    部署2    光熱費    USD    7
    部署2    水道費    USD    8
    部署2    交際費    USD    9
    部署2    雑費    USD    10
    部署2    人件費    EUR    11
    部署2    光熱費    EUR    12
    部署2    水道費    EUR    13
    部署2    交際費    EUR    14
    部署2    雑費    EUR    15

【73837】Re:レポートフォームにある値を一つずつ...
発言  UO3  - 13/2/19(火) 12:46 -

引用なし
パスワード
   ▼dada さん:

こんにちは

なぜか回答がないですねぇ・・

教えてください。
アップされたフォーマットは固定と考えていいのですか?
列が可変で、別の通貨も登場するとか、行も可変で別の費目が登場するとか?

それはそれで、対応できますが、そうではなく、固定ということなら
もっと簡単ですよね?
というか、固定ならSheet3に式をいれてもいけそうですが?

【73838】Re:レポートフォームにある値を一つずつ...
発言  UO3  - 13/2/19(火) 13:48 -

引用なし
パスワード
   ▼dada さん:

とりあえずガチガチの固定フォーマットだというコードです。

Sub Sample()
  Dim shn As Variant
  Dim i As Long
  Dim j As Long
  Dim k As Long
  Dim x As Long
  Dim v(1 To 30, 1 To 4) As Variant
  
  For Each shn In Array("Sheet1", "Sheet2")
    With Sheets(shn)
      For j = 3 To 7 Step 2    '抽出列
        For k = 6 To 10     '抽出行
          i = i + 1      '転記行
          v(i, 1) = .Range("B3").Value  '部署
          v(i, 2) = .Cells(k, "B").Value '費目
          v(i, 3) = .Cells(5, j).Value  '通貨
          v(i, 4) = .Cells(k, j).Value  '金額
        Next
      Next
    End With
  Next
  
  With Sheets("Sheet3")
    .UsedRange.ClearContents
    .Range("A1").Resize(UBound(v, 1), UBound(v, 2)).Value = v
    .Select
  End With
  
  MsgBox "転記完了"
  
End Sub

1527 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free