質問: エクセルの表から2つの条件に合致する値を表示したいのですが、添付した画像のような条件の場合に、どのように検索範囲を並び替えるとか関数を設定すればうまくいくでしょうか? ピンポイントでない日付を抽出するやり方がとても難しくいくら考えてもネットで調べてもわかりませんでした。 どなたかやり方を教えていただけると大変助かります。
回答: VBAによる回答です。 以下のを標準モジュールにコピペしてマクロ登録して実行して下さい。 「<---」の部分は実態に応じて変更を。 Sub Main() Const StartRM = 3 '<---元表の左上セルの次の行No Const CM = 1 '<---元表の左上セルの列No Const StartRH = 3 '<---購入表の左上セルの次の行No Const CH = 5 '<---購入表の左上セルの列No Dim WSM As Worksheet, WSH As Worksheet Dim LastRM, LastRH, RM, RH Dim Hiduke1, Hiduke2, Hinmoku, Kakaku Dim Flg As Boolean Set WSM = Worksheets("Sheet1") '<---元表のあるシート Set WSH = Worksheets("Sheet1") '<---購入表のあるシート LastRM = Cells(Rows.Count, CM).End(xlUp).Row LastRH = Cells(Rows.Count, CH).End(xlUp).Row For RH = StartRH To LastRH Hiduke1 = WSH.Cells(RH, CH + 0) Hiduke2 = DateAdd("m", -1, Hiduke1) Hinmoku = WSH.Cells(RH, CH + 1) Flg = False For RM = StartRM To LastRM If Hiduke1 >= WSM.Cells(RM, CM + 0) Then If Hiduke2 < WSM.Cells(RM, CM + 0) Then If Hinmoku = WSM.Cells(RM, CM + 1) Then Kakaku = WSM.Cells(RM, CM + 2) Flg = True Exit For End If End If End If Next RM Select Case Flg Case True: WSH.Cells(RH, CH + 2) = Kakaku Case Else: WSH.Cells(RH, CH + 2) = "NG" End Select Next RH End Sub