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

商品ごとの返品情報が書かれているシートに、出荷履歴から商品ごとの直近の出荷日を求めたいのですが、どのようにしたらよいでしょうか?

返品のデータ↓出したい日付
返品日付直近の出荷日
商品B5月1日3月4日
商品C9月7日6月7日
商品C9月9日9月8日
商品B12月3日10月7日

出荷履歴
出荷日付
商品A1月3日
商品B3月4日
商品B5月3日
商品C6月7日
商品C9月8日
商品B10月7日

「エクセルで直近の日付を求めたい」の質問画像

A 回答 (4件)

 御質問内容の中には、各データが入力されているセルや、処理を行った結果を表示させるセル等が、それぞれどの列の何行目のセルであるのかという事に関する説明が何もありませんので、取り敢えずの話として、「返品」と入力されているセルがB3セル、「出荷」と入力されているセルがF3セルであるものと仮定して回答致します。


 尚、以下の方法では、作業列として使用するために、未使用の列を2列必要とます。
 ここでは仮に、I列とJ列を使う事にします。

 まず、I4セルに次の関数を入力して下さい。

=IF(OR(INDEX($F:$F,ROW())="",ISERROR(1/DAY(INDEX($G:$G,ROW())))),"",INDEX($F:$F,ROW())&"◆"&TEXT(INDEX($G:$G,ROW()),"yyyymmdd"))

 次に、J4セルに次の関数を入力して下さい。

=IF($I4="","",COUNTIF($I:$I,">"&$I4)+1)

 次に、I4~J4の範囲をコピーして、同じ列範囲の5行目以下に、「出荷履歴」の表の行数を上回るのに十分な行数となるまで貼り付けて下さい。
 次に、D4セルに次の関数を入力して下さい。

=IF(OR(INDEX($B:$B,ROW())="",ISERROR(1/DAY(INDEX($C:$C,ROW())))),"",IF(COUNTIF($I:$I,">"&INDEX($B:$B,ROW())&"◆")-COUNTIF($I:$I,">"&INDEX($B:$B,ROW())&"◆"&TEXT(INDEX($C:$C,ROW()),"yyyymmdd")),INDEX($G:$G,MATCH(COUNTIF($I:$I,">"&INDEX($B:$B,ROW())&"◆"&TEXT(INDEX($C:$C,ROW()),"yyyymmdd"))+1,$J:$J,0)),"無し"))

 次に、D4セルをコピーして、D5以下(「直近の出荷日」欄において枠線で囲まれている全てのセル)に貼り付けて下さい。

 これで、直近の出荷日が自動的に表示されます。
 尚、万が一、「返品のデータ」の「日付」欄に「その商品に関する出荷データの中で最も古い日付」よりも更に古い日付が入力された場合には、「無し」と表示されます。
 又、「返品のデータ」の「返品」欄に、出荷した記録の無いデータが入力された場合も、同様に「無し」と表示されます。
「エクセルで直近の日付を求めたい」の回答画像4
    • good
    • 0

データがそのようでしたら、


C2:
=LOOKUP(B2,IF(E$2:E$7=A2,F$2:F$7))
必ずコントロールキーとシフトキーを押しながらEnterで入力する
とかで出来ます。


まぁでも
=MAX(IF((E$2:E$7=A2)*(F$2:F$7<=B2),F$2:F$7))
必ずコントロールキーとシフトキーを押しながらEnterで入力する
のほうが簡単かな?
「エクセルで直近の日付を求めたい」の回答画像3
    • good
    • 0

No.1です!


たびたびごめんなさい。

前回の投稿で間違いがありました。
最後の範囲指定ですが、1行目からでも大丈夫です。
他の関数と勘違いしていました。

どうも失礼しました。m(_ _)m
    • good
    • 0

こんばんは!



日付セルはシリアル値が入っている前提です。
セルの配置が判らないので、↓の画像の配置の場合の一例です。

画像ではC2セルに
=IF(COUNTBLANK(A2:B2),"",MAX(IF(E$2:E$1000=A2,IF(F$2:F$1000<=B2,F$2:F$1000))))
これは配列数式になってしまいますので、Shift+Ctrl+Enterで確定!
この画面からコピー&ペーストする場合は
上記数式をドラッグ&コピー → C2セルを選択 → 数式バー内に貼り付け → そのまま(編集可能なまま)
Shift+Ctrlキーを押しながらEnterキーで確定!
数式の前後に{ }マークが入り配列数式になります。
これをオートフィルで下へコピー!
これで画像のような感じになります。

※ 項目行(文字列行)は範囲指定しないように、2行目以降を範囲指定します。
※ 配列数式はPCにかなりの負担を掛けますので、データ量が極端に多い場合はおススメしません。
作業用の列などを利用する方法が良いと思います。m(_ _)m
「エクセルで直近の日付を求めたい」の回答画像1
    • good
    • 0

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