以前、https://oshiete.goo.ne.jp/qa/11091473.html で質問したのですが、F列H列I列に追加でJ列とK列の項目も統合範囲に入れたいのですが、どこをどの様にマクロを書き足せば良いですか?
又、Sheet2のE列にSheet1のJ列、Sheet2のF列にSheet1のK列の統合結果も追加したいです。
宜しくお願いします。
No.1ベストアンサー
- 回答日時:
こんばんは!
前回回答した者です。
今回の質問はSheet1の F・H・I・J・K列 の5条件が一致したものの合計をSheet2に表示したい!
というコトですよね。
前回のコードに少し手を加えてみました。
Sub Sample2()
Dim myDic As Object
Dim i As Long, lastRow As Long
Dim myStr As String, wS As Worksheet
Dim myKey, myItem, myR, myAry
Set myDic = CreateObject("Scripting.Dictionary")
Set wS = Worksheets("Sheet2")
lastRow = wS.Cells(Rows.Count, "A").End(xlUp).Row
If lastRow > 1 Then
Range(wS.Cells(2, "A"), wS.Cells(lastRow, "F")).ClearContents '//★//
End If
With Worksheets("Sheet1")
lastRow = .Cells(Rows.Count, "F").End(xlUp).Row
myR = Range(.Cells(2, "F"), .Cells(lastRow, "L"))
For i = 1 To UBound(myR, 1)
myStr = myR(i, 1) & "_" & myR(i, 3) & "_" & myR(i, 4) & "_" & myR(i, 5) & "_" & myR(i, 6) '//★//
If Not myDic.exists(myStr) Then
myDic.Add myStr, myR(i, 7)
Else
myDic(myStr) = myDic(myStr) + myR(i, 7)
End If
Next i
myKey = myDic.keys
myItem = myDic.items
myR = Range(wS.Cells(2, "A"), wS.Cells(UBound(myKey) + 2, "F"))
For i = 0 To UBound(myKey)
myAry = Split(myKey(i), "_")
myR(i + 1, 1) = myAry(0)
myR(i + 1, 2) = myAry(1)
myR(i + 1, 3) = myAry(2)
myR(i + 1, 4) = myItem(i)
myR(i + 1, 5) = myAry(3) '//★//
myR(i + 1, 6) = myAry(4) '//★//
Next i
Range(wS.Cells(2, "A"), wS.Cells(UBound(myKey) + 2, "F")) = myR '//★//
Set myDic = Nothing
wS.Activate
MsgBox "完了"
End With
End Sub
※ 「★」の行が前回と変わっているところです。
尚、列数が多いと列方向にループしても良いのですが、
前回のコードをそのまま使った方が判りやすいと思い、ループはしていません。
Sheet1のすべての列が対象ではない(G列だけが飛んでいる)のと、
表示する列順がSheet1の列順と異なるためループするために変数を追加する必要がありそうです。
そうなると判りにくくなると思い、一つ一つ値を入れています。m(_ _)m
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) SUMIFSと日付変換 10 2023/04/16 15:38
- Visual Basic(VBA) VBAでvlookup関数から、別シート参照するやり方・・・ 2 2022/11/14 18:49
- Visual Basic(VBA) 改行ごとに行を追加し、数量を分割 4 2023/07/11 16:39
- Excel(エクセル) エクセルの日付抽出 2 2023/02/03 15:02
- Visual Basic(VBA) Sheet「状況」から、分類の年齢別カウント数をSheet「D表」へ転記する下記マクロを作っています 7 2022/12/14 17:57
- Excel(エクセル) エクセルでのコピーペースト 6 2022/09/03 07:14
- Visual Basic(VBA) VBA 別sheetからの転記なのですが 2 2023/05/22 15:55
- Visual Basic(VBA) VBAで日付入力しているのですが 4 2023/03/02 11:25
- Visual Basic(VBA) 2つのシートの任意のセルの番号が一致したら、一致した行をコピーする VBA 2 2023/06/19 20:48
- Excel(エクセル) 【VBA】A列にある連続したデータの1番下に文字列を入力したい 1 2023/01/28 04:40
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VLOOKUPの列番号の最大は?
-
エクセルで離れた列を選択して...
-
「段」と「行」の違いがよくわ...
-
LEFT関数とIF関数の組み合わせ...
-
VBA 指定した列にある日時デー...
-
VBA Splitで「引数の数が一致...
-
【マクロ】【VBA】条件付き書式...
-
エクセルマクロで表の途中の集...
-
ExcelVBAでリストの項目に必要...
-
Excel 2007で複合グラフ(折線...
-
エクセル マクロ 範囲指定で...
-
エクセルのソートで、数字より...
-
例題を繰り返しマクロで記述したい
-
エクセルマクロPrivate Subを複...
-
最終行に合計(最終行が列によ...
-
最近急にVBAの処理速度が遅くな...
-
エクセル 1つのシートを日付で...
-
Alt+Shift+↑を一括で行うには、...
-
Excel で、二つの表の値が条件...
-
エクセルでセル12個間隔で合...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで離れた列を選択して...
-
VLOOKUPの列番号の最大は?
-
「段」と「行」の違いがよくわ...
-
LEFT関数とIF関数の組み合わせ...
-
VBA 指定した列にある日時デー...
-
CSVファイルの「0落ち」にVBA
-
エクセルで複数列の検索をマク...
-
Excelの行数、列数を増やしたい...
-
エクセルマクロの組み方
-
エクセルマクロPrivate Subを複...
-
リストからデータを紐付けしたい
-
エクセルのソートで、数字より...
-
エクセルで住所を県と市・郡と...
-
VBAで別ブックの列を検索し、該...
-
Excel文字列一括変換
-
VBA
-
エクセル 重複 隣の列 一番...
-
列方向、行方向の定義
-
Alt+Shift+↑を一括で行うには、...
-
VBAで結合セルを転記する法を教...
おすすめ情報