• 締切済み

重複データの集約を繰り返す方法について

エクセルのVBAで質問です。 複数シートのB行に重複したデータがあります。 (複数シートともデータ数は違いますが同じデータがあります) この重複したーデータを集約しA行に横に出力する為下記のマクロを組みました。 '集約する Dim Dic, i As Long, buf As String, Keys Set Dic = CreateObject("Scripting.Dictionary") On Error Resume Next Do Until Cells(i, 2).Value = "" buf = Cells(i, 3).Value Dic.Add buf, buf i = i + 1 Loop '出力 Keys = Dic.Keys For i = 0 To Dic.Count - 1 Cells(1, i + 5) = Keys(i) Next i Set Dic = Nothing これで集約はできたのですが、他のシートも連続して同じ集約作業をさせたいと思っています。 しかし、くり返し作業をさせると1枚目のシートは集約できますが2枚目以降のシートが同じように集約できません。 適切なくり返しができる構文をご教示いただきたくお願い致します。

みんなの回答

  • myRange
  • ベストアンサー率71% (339/472)
回答No.1

Sub Test()  Dim Dic, i As Long, buf As String, Keys  Set Dic = CreateObject("Scripting.Dictionary")  On Error Resume Next  Dim Sht As Worksheet  For Each Sht In Worksheets    i = 1    Do Until Sht.Cells(i, 2).Value = ""      buf = Sht.Cells(i, 2).Value      Dic.Add buf, buf      i = i + 1    Loop '出力    Sht.Cells(1, 5).Resize(1, Dic.Count).Value = Dic.Keys    Dic.RemoveAll  Next Sht End Sub '----------------------------------------------- ●buf = Sht.Cells(i, 2).Value これが提示のコードでは、Cells(i,3) とC列参照になってたので B列に修正した。   以上です。  

alex_
質問者

お礼

ご教示ありがとうございます。 しかも ●buf = Sht.Cells(i, 2).Value →●buf = Sht.Cells(i, 3).Value まで修正いただき助かりました。 今回の内容は自分のスキルアップにつながりました。 こんごも有効にマクロが使えるよう努力していく所存です。 ありがとうございました。

関連するQ&A