プロが教える店舗&オフィスのセキュリティ対策術

データー表には図のようなデーターがあります。出荷日(ピンク)の値によって
スケジュール表(別シート)の日付値を参照し ”データー”の日付値とくらべ
”以前”であれば、データー表の末尾列にシュケジュール表の店名を転記を行いたい。

フィルターを手でかけて行うと以下のようなりますが・・・。
ステップ1 SC_発送日の2行目:2021/3/17 
  →”データー”シート出荷日 2021/3/17以前でフィルタ 末尾列に”なごや”
ステップ2 SC_発送日の3行目:2021/4/18
  →出荷日 2021/4/17以前、かつ末尾列が空欄でフィルタ 末尾列に”おおさか”
      (データー表に該当ないなのでスキップ)
フィルターをかけて記載するにもスケジュール表の行数が多く手では無理と思い、
今回相談しています
”データー”シートの「出荷日」の列位置は固定ではありませんが、項目名は変化しません。
簡単なマクロは組んだことはありますが自分の手に負えず、今回相談しております。
ご不明な点あれば追記します。よろしくお願いします。

「エクセルマクロ:日付値で、別シートの日付」の質問画像

質問者からの補足コメント

  • ステップ2に本文ミスあり以下の通りです。
      正:→出荷日 2021/4/18以前、かつ

      補足日時:2021/05/20 23:43

A 回答 (1件)

こんにちは



ご説明の転記のルールが理解できないので、勝手に別解釈しました。
正しいかどうかわかりませんが、例示と同様の結果になります。
値を変えるなどして、ルール通りかどうかをご確認ください。

※ スケジュール表の日付は、昇順に並んでいることを前提にしています。
(もしも、そうでない場合は、適宜修正願います)
以下、ご参考までに。

Sub Sample_Q12370260()
Dim sh, rng, f
Const sht1 = "スケジュール表" '「スケジュール表」シートのシート名
Const sht2 = "データー" ' 「データー」シートのシート名

f = "=IF(ISNUMBER(D2),INDEX(@!B:B," & _
   "IFERROR(MATCH(D2-1,@!A:A,1),1)+1),"""")&"""""

Set sh = Worksheets(sht2)
Set rng = Range(sh.Cells(1, 4), sh.Cells(Rows.Count, 4).End(xlUp))

With rng.Offset(1, 1)
 .FormulaLocal = Replace(f, "@", sht1)
 .Value = .Value
End With
End Sub
    • good
    • 0
この回答へのお礼

ありがとうございます。
期待通りの結果になりました。
自分の勉強不足わかりました。
INDEX関数とMATCH 関数勉強をします。
ありがとうございます。

お礼日時:2021/05/22 22:10

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!