- 締切済み
エクセルで直近の日付を求めたい
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- kagakusuki
- ベストアンサー率51% (2610/5101)
御質問内容の中には、各データが入力されているセルや、処理を行った結果を表示させるセル等が、それぞれどの列の何行目のセルであるのかという事に関する説明が何もありませんので、取り敢えずの話として、「返品」と入力されているセルが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以下(「直近の出荷日」欄において枠線で囲まれている全てのセル)に貼り付けて下さい。 これで、直近の出荷日が自動的に表示されます。 尚、万が一、「返品のデータ」の「日付」欄に「その商品に関する出荷データの中で最も古い日付」よりも更に古い日付が入力された場合には、「無し」と表示されます。 又、「返品のデータ」の「返品」欄に、出荷した記録の無いデータが入力された場合も、同様に「無し」と表示されます。
- keithin
- ベストアンサー率66% (5278/7941)
- tom04
- ベストアンサー率49% (2537/5117)
No.1です! たびたびごめんなさい。 前回の投稿で間違いがありました。 最後の範囲指定ですが、1行目からでも大丈夫です。 他の関数と勘違いしていました。 どうも失礼しました。m(_ _)m
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! 日付セルはシリアル値が入っている前提です。 セルの配置が判らないので、↓の画像の配置の場合の一例です。 画像では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