• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBA 複数のシートをまたいでの連想配列)

VBA 複数のシートをまたいでの連想配列を作成する方法

このQ&Aのポイント
  • VBAを使用して、Excelの複数のシートにまたがって合計を取り、連想配列に格納し、別のシートに書き出す方法について教えてください。
  • プロシージャーの下から6行目の箇所でエラーコード451が出る場合、どのように修正すれば良いかも教えてください。
  • また、作成した連想配列のキーと値を特定のセルに書き込む方法についても教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • HohoPapa
  • ベストアンサー率65% (455/693)
回答No.1

こんなカンジでしょうか。 Sub 年間集計()  Dim Dic  Dim i As Integer  Dim j As Integer  Dim sh As Worksheet  Dim rng As Range  Dim buf As String  Dim num As Integer  Dim Keys() As Variant  Set Dic = CreateObject("Scripting.Dictionary")  For Each sh In Worksheets   For Each rng In sh.Range("J2", sh.Cells(Rows.Count, 10).End(xlUp))    buf = rng.Value    num = rng.Offset(, 1).Value    If Not Dic.Exists(buf) Then     Dic.Add buf, num    Else     Dic.Item(buf) = Dic.Item(buf) + num    End If   Next rng  Next sh  j = 2  Keys = Dic.Keys  With Worksheets("Sheet13")   For i = 0 To Dic.Count - 1    .Cells(j, 1) = Keys(i)   'エラー箇所    .Cells(j, 2) = Dic.Item(Keys(i))    j = j + 1   Next i  End With End Sub

6338-tm
質問者

お礼

HohoPapa様 エラーにならずに、書き出しまで出来ました。 変数にすると出来る様になるんですね。 そこのところが理解出来ていないので、勉強します。 ありがとうございました。

その他の回答 (1)

  • Chiquilin
  • ベストアンサー率30% (94/306)
回答No.2

Excel2013なら連想配列なんて使わなくても データを一か所 に集めてから RemoveDuplicatesメソッドを使えばおしまい だと思います。 重複した値を削除 RemoveDuplicatesメソッド - Excel VBA他サンプル等 https://excwlvba.blogspot.jp/2013/06/removeduplicates.html

6338-tm
質問者

お礼

Chiquilin様 今回は、連想配列でいたかったので、連想配列のままで行きますが、 ご回答いただいた内容を勉強させて頂き、次回に活かしたいと思います。 ありがとうございました。

関連するQ&A