前提
実装案が全く思い浮かばないため、
先人の知恵を拝借したいです。
実現したいこと
Excelに3シート
「A」「B」「AB合算※Cシートと呼称します」というシートがあります。
それぞれ
「A」「B」「C」は共通のヘッダで
コード,金額を持っています。
例えばAシートには
01,1000
02,2000
03,3000
05,5000
Bシートには
01,1500
02,2500
04,4500
とあるとしたら、
VBAの実装でCシートにコードの昇順で
01,2500 'AシートとBシートの金額合算値(コードごと)
02,4500 'AシートとBシートの金額合算値(コードごと)
03,3000 'Aシートにあるが、BシートにはないデータはAシートのデータだけ
04,4500 'Bシートにあるが、AシートにはないデータはBシートのデータだけ
05,5000 'Aシートにあるが、BシートにはないデータはAシートのデータだけ
と出力されるようにしたいのです。
該当のソースコード
現在実装で考え付いているところまでで
sheetADataCnt = 4
sheetBDataCnt = 3
MaxCnt = sheetADataCnt + sheetBDataCnt
VBA
1For h = 1 To MaxCnt 2 For i = 1 To sheetADataCnt 3 For j = 1 To sheetBDataCnt 4 'AコードとBコードの突合せ 5 If SheetA.Cells(i,1).Value = SheetB.Cells(j,1).Value Then 6 'コード転記 7 SheetC.Cells(h ,1).Value = SheetA.Cells(i,1).Value 8 '金額転記 9 SheetC.Cells(h ,2).Value = SheetA.Cells(i,2).Value + SheetB.Cells(j,2).Value 10 End If 11 Next 12 Next 13Next
と上記のようにしています。
ただ、このやり方だと
Cシートには
01,2500
02,4500
しか出力されません。
これは当たり前ですが、If条件を満たしたときだけCシートに書き写す処理になっているので
ここからIFの条件文を追加してAシートのみのデータ、BシートのみのデータをCシートに反映したいのでが、実装案が浮かびません。
Cシートに反映させるときにコードの昇順になっている必要があるところが
悩ませている原因であり、上手い打開案がないでしょうか。
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー