• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBA 条件検索について)

VBAの条件検索について

このQ&Aのポイント
  • VBAを使用して、複数のシート間で条件検索を行うプログラムを作成したいです。具体的には、sheet1とsheet2の特定の列の値が一致する行を探し、それに対応するsheet1の別の列の値からsheet2の同じ列の値を引いた結果をsheet3の列に表示するプログラムです。
  • プログラムの実行例を示します。sheet1のA列とB列の値が7と1であり、sheet2の同じ列の値が7と1の行を探します。その後、sheet1のC列の値3からsheet2のC列の値4を引き、その結果-1をsheet3のC列に表示します。同様に他の行も処理され、結果が表示されます。
  • 現在、自分でプログラムを作成しましたが、空欄の検索ができず、うまく動作しません。どなたかご教示いただけないでしょうか?お願いします。

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

  • ベストアンサー
  • jcctaira
  • ベストアンサー率58% (119/204)
回答No.1

mekarattaさん こんにちは。 下記のプログラムでできるかと思います。 Sub test() Dim sh1 As Worksheet Dim sh2 As Worksheet Dim sh3 As Worksheet Dim a  As Long Dim b  As Long Set sh1 = Sheets("Sheet1") Set sh2 = Sheets("Sheet2") Set sh3 = Sheets("Sheet3") a = 1 Do While (sh1.Cells(a, "A") <> "" Or sh1.Cells(a, "B") <> "")  b = 1  Do While (sh2.Cells(b, "A") <> "" Or sh2.Cells(b, "B") <> "")   If sh1.Cells(a, "A") = sh2.Cells(b, "A") And _     sh1.Cells(a, "B") = sh2.Cells(b, "B") Then    sh3.Cells(a, "A") = sh1.Cells(a, "A")    sh3.Cells(a, "B") = sh1.Cells(a, "B")    sh3.Cells(a, "C") = sh1.Cells(a, "C") - sh2.Cells(b, "C")    Exit Do   End If   b = b + 1  Loop  a = a + 1 Loop End Sub 注)d1 = sh1.Cells(a,1) & sh1.Cells(a,2)   連結して比較しない方が良いと思います。   例えばA1=11 B1=2 と A2=1 B2=12 はどちらも 112 となってしまうので危険です。 ご確認ください。

mekaratta
質問者

お礼

ありがとうございます

その他の回答 (1)

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.2

一例です。 シートマクロにしていますので、Sheet3タブ上で右クリック→コードの表示→以下のコードを貼り付けでお試しください。 Sub sample() Set st1 = Sheets(1) Set st2 = Sheets(2) Columns("A:C").Cells.Clear For i = 1 To st1.UsedRange.Rows.Count For j = 1 To st2.UsedRange.Rows.Count If st1.Cells(i, 1) = st2.Cells(j, 1) And _ st1.Cells(i, 2) = st2.Cells(j, 2) Then Cells(i, 1).Resize(1, 2).Value = st1.Cells(i, 1).Resize(1, 2).Value Cells(i, 3).Value = st1.Cells(i, 3) - st2.Cells(j, 3) Exit For End If Next Next End Sub

関連するQ&A