Excel VBA質問箱 IV

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

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


794 / 76735 ←次へ | 前へ→

【81604】Re:重複Key毎の合計を求める
発言  γ  - 21/1/21(木) 23:24 -

引用なし
パスワード
   遅くなりました。

dictionaryとは、
Key → Item
という対応関係を管理する容れ物です。

・Keyは文字列とか数値などをとることが多いですが、
・Itemも色々なものを保持することができます。
既に提示されたのは、配列の行番号をとったものですが、
(提示された方法のように)配列そのものを持たせることもできます。

こんな感じになるでしょう。参考にしてみて下さい。

Sub test()
  Dim dic As Object
  Dim k As Long, j As Long, r As Long
  Dim s As String
  Dim v As Variant
  Dim itm As Variant
  Dim key As Variant

  Set dic = CreateObject("Scripting.Dictionary")

  For k = 2 To 10
    s = Cells(k, 1).Value
    If Not dic.Exists(s) Then
      v = Cells(k, 2).Resize(1, 6).Value
      dic(s) = v
    Else
      'いったん取り出し
      itm = dic(s)

      '各要素に加算
      v = Cells(k, 2).Resize(1, 6).Value
      For j = 1 To 6
        itm(1, j) = itm(1, j) + v(1, j)
      Next

      '再度 格納
      dic(s) = itm
    End If
  Next
  Sheet2.Range("A2").Resize(dic.Count, 1) = Application.Transpose(dic.keys)

  '結果をシートに書き出す
  r = 1
  For Each key In dic
    itm = dic(key)
    r = r + 1
    Sheet2.Cells(r, 2).Resize(1, 6) = itm
  Next
End Sub

考え方に焦点を当てていますので、元データの行数や列数とか、
転記先の一行目の項目名、などは適当にしています。
そちらで修正して下さい。
また、各配列は、あえて一次元に変換せず、二次元のままにしています。
1 hits

【81600】重複Key毎の合計を求める assya 21/1/20(水) 21:49 質問[未読]
【81601】Re:重複Key毎の合計を求める γ 21/1/21(木) 7:39 発言[未読]
【81602】Re:重複Key毎の合計を求める assya 21/1/21(木) 15:09 回答[未読]
【81604】Re:重複Key毎の合計を求める γ 21/1/21(木) 23:24 発言[未読]
【81605】Re:重複Key毎の合計を求める assya 21/1/22(金) 12:01 お礼[未読]
【81603】Re:重複Key毎の合計を求める マナ 21/1/21(木) 18:42 発言[未読]
【81606】Re:重複Key毎の合計を求める assya 21/1/22(金) 12:03 お礼[未読]

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