- 締切済み
重複データの集約を繰り返す方法について
エクセルの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枚目以降のシートが同じように集約できません。 適切なくり返しができる構文をご教示いただきたくお願い致します。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- myRange
- ベストアンサー率71% (339/472)
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列に修正した。 以上です。
お礼
ご教示ありがとうございます。 しかも ●buf = Sht.Cells(i, 2).Value →●buf = Sht.Cells(i, 3).Value まで修正いただき助かりました。 今回の内容は自分のスキルアップにつながりました。 こんごも有効にマクロが使えるよう努力していく所存です。 ありがとうございました。