• ベストアンサー

Excel関数 初回受注日を求める

B列に注文者、C列に注文日のが入力されていてD列にそれぞれの注文者の初回注文日を関数で求めたいのですがうまくいきません… =DMIN($B$2:$C$9,C2,$C$2:$C$9) =MIN(IF(B3=$B:$B,$C:$C,"")) 同じ注文者が複数回注文していて、B列には名前が重複しています。B3の注文者の注文でC列の注文日が一番古いものをD3に入れたいのですが、どこが間違っていますか?上記の2つだと、注文者関係なくC列にある1番古い注文日をひっぱってきてしまいます(>_<)

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.2

DMIN関数は、そのような使い方は全くできません。 またMIN関数を使ったその数式がエラーなく使えるかどうかは、(ご相談ではナイショになってる)ご利用のエクセルのバージョンによって違ってきます。 サンプルデータに限って言えば、「同じ人の発注記録」は少なくとも日付順なので、 D3: =IF(B3="","",VLOOKUP(B3,B:C,2,FALSE)) 以下コピー で十分と見受けられます。 #オマケ 何かの理由で同じ人の発注記録も順不同なのであれば、ご質問でやろうとしていた計算式の修正で D3: =IF(B3="","",MIN(INDEX((B$3:B$999<>B3)*99999+C$3:C$999,))) 以下コピー のような事もできますが、データ数が多くなるとシートが極端に重たくなるので、お勧めはしません。 #ご相談投稿では、ご利用のソフト名は元より、普段あなたがご利用のソフトのバージョンまでキチンと明記する事を憶えて下さい。

その他の回答 (2)

noname#204879
noname#204879
回答No.3

D3: {=MIN(IF(B$3:B$65536=B3,C$3:C$65536,""))} ← 配列数式

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.1

上の式は使えませんね。 検索条件が$C$2:$C$9は全ての日付になってます。 $B$2:$B$3なら3行目は正しい値ですが、 4行目以降には見出しが無いので使えなくなります。 下の式の場合 D3に記入後にCtrl+Shift+Enterで確定すると、数式バーに {=MIN(IF(B3=$B:$B,$C:$C,""))} と表示されます。 これを下方にコピーすれば正しい値が表示されますよ。 ただ表示書式はB列に合わせてください。

関連するQ&A