• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBAで複数条件検索どうすればよいですか?)

VBAで複数条件検索方法 | Excel2010

このQ&Aのポイント
  • エクセル2010・VBAを使用して、複数条件でデータを検索する方法を教えてください。
  • 【Sheet1】と【Sheet2】のデータを比較し、条件に合う行の納品日を入力し、ロットNoに色を付ける方法を知りたいです。
  • Find関数を使用して試行錯誤しましたが、うまく動作しないため、支援を求めています。

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

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんばんは! 色々やり方はあると思いますが・・・ 一例です。 >納品日は検索した日の日付になります。 とありますが、とりあえずSheet2(納品リスト)のA列日付としています。 Sheet1(発注リスト)に重複があっても対応できるようにしてみました。 ↓のコードを標準モジュールにコピー&ペーストしてマクロを実行してみてください。 Sub Sample1() Dim i As Long, k As Long, c As Range, wS1 As Worksheet, wS2 As Worksheet Set wS1 = Worksheets("発注リスト") Set wS2 = Worksheets("納品リスト") Application.ScreenUpdating = False i = wS1.Cells(Rows.Count, "A").End(xlUp).Row Range(wS1.Cells(2, "D"), wS1.Cells(i, "D")).ClearContents k = wS2.Cells(Rows.Count, "A").End(xlUp).Row With wS1 .Cells.Interior.ColorIndex = xlNone .Range("A:A").Insert With .Range(wS1.Cells(2, "A"), wS1.Cells(i, "A")) .Formula = "=C2 & ""_"" & D2" .Value = .Value End With End With With wS2 .Cells.Interior.ColorIndex = xlNone .Range("A:A").Insert With .Range(wS2.Cells(2, "A"), wS2.Cells(k, "A")) .Formula = "=C2 & ""_"" & D2" .Value = .Value End With End With For k = 2 To wS2.Cells(Rows.Count, 1).End(xlUp).Row Set c = wS1.Range("A:A").Find(what:=wS2.Cells(k, "A"), LookIn:=xlValues, lookat:=xlWhole) If c Is Nothing Then wS2.Cells(k, "D").Interior.ColorIndex = 3 Else For i = 2 To wS1.Cells(Rows.Count, "A").End(xlUp).Row If wS1.Cells(i, "A") = wS2.Cells(k, "A") Then With wS1.Cells(i, "E") .Value = wS2.Cells(k, "B") .NumberFormatLocal = "m/d" End With wS1.Cells(i, "D").Interior.ColorIndex = 4 End If Next i End If Next k wS1.Range("A:A").Delete wS2.Range("A:A").Delete Application.ScreenUpdating = True End Sub ※ 両SheetともA列を作業用の列として挿入していますので、 コードでは元データは1列ずつずれています。m(_ _)m

ecolife007v
質問者

お礼

お礼遅くなりました。ありがとうございます。 >両SheetともA列を作業用の列として挿入していますので・・・ この部分の動きが、手こずりましたが、大体の動きが理解できました。勉強になりました。 ありがとうございました。

関連するQ&A