• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:複数の条件にあう最大値(日付)を求める)

複数条件にあう最大値(日付)の求め方

このQ&Aのポイント
  • Excelを使用して複数条件に合致する最大値(日付)を求める方法について質問です。
  • 顧客名と購入商品品番を条件として、一番最近の注文日を知るための資料を作成したいです。
  • エクセル2007を使用していますが、試した方法ではうまくいかなかったため、質問させていただきました。

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

  • ベストアンサー
  • bunjii
  • ベストアンサー率43% (3589/8249)
回答No.6

回答No.5の説明不足がありました。 Sheet1のB列が標準の表示形式ではないようですから文字列となっているかも知れません。 当方ではテキストデータを取り込むときにB列を日付のシリアル値としましたので回答No.5の処理が可能でした。 CSVデータを読み込むときにB列の表示形式を標準にするとB列の値が文字列となりますので、予備的な処理で日付のシリアル値に変換する必要があります。 手順は次の通りです。 1.B列全体を選択し、「データ」タブの「区切り位置」を実行します。 2.次へ進み、「区切り文字」のチェックを全てクリアし、次へ進みます。 3.「列のデータ形式」の「日付」にチェックし、「YMD」を選択して完了します。 これでB列の値が日付のシリアル値に変換されます。

shironekochann
質問者

お礼

知識不足、説明不足だったにも関わらず、 親切に教えて頂きましてありがとうございました。 大変、勉強になりました。 教えて頂いたことを活用していきます。

その他の回答 (5)

  • bunjii
  • ベストアンサー率43% (3589/8249)
回答No.5

ご提示の模擬データで再検証してみました。 Sheet1のチェック対象はE列の「顧客名」とG列の「品番」で抽出する対象はB列の「注文日」(日付のシリアル値)と判断します。 従って、Sheet2のC2セルには次の数式を入力します。 =IF(COUNTA(A2:B2)=2,IFERROR(SUMPRODUCT(MAX((Sheet1!E$2:E$31000=A2)*(Sheet1!G$2:G$31000=B2)*Sheet1!B$2:B$31000)),""),"") Sheet2のC列は日付のシリアル値が返りますので表示形式は"yyyy/mm/dd"にします。 Sheet2のA列またはB列に検索条件の値が入力されていないときはC列は空欄となりますが、両方に入力されていて該当なしのときは1900/1/0と表示されますので条件付き書式で0のときは文字の色を白にして見えなくしました。 貼付画像はExcel 2013での検証ですがExcel 2007でも同じ結果が得られるはずです。

  • bunjii
  • ベストアンサー率43% (3589/8249)
回答No.4

>模擬データを添付させていただきました。 画像が不鮮明で読めません。 「実データに近い模擬データをCSVファイルと同等なテキストデータで提示頂ければ再検証を行ってみます。」と申し上げましたが、ご理解頂けないようですね。 下記のようなテキストデータ(カンマ区切りの文字列)を補足の投稿文の末尾に貼り付けて頂けるとデータ入力の手間が省けます。 顧客名,購入商品名,購入商品品番,注文日 A,qqq,q-1,20140801 B,www,w-1,20140730 B,qqq,q-1,20140821 C,rrr,r-1,20140625 A,rrr,r-1,20140715 C,ttt,t-1,20140821 >お手数をおかけして申し訳ございませんが、今一度だけ、ご教示お願いできませんでしょうか? 貼付画像が読めないので再検証ができません。 また、意味が不明な語句の説明も必要です。

shironekochann
質問者

補足

重ね重ね申し訳ございません。 テキストデータになります。 よろしくお願いいたします。 部署コード,注文日,担当者入力日,顧客No.,顧客名,商品名,品番,品番(色あり),注文数 6666,2014.08.17,2014.08.17,60003***,A,:-/(仮名),rrr-271,rrr-271(W),1 6666,2014.08.17,2014.08.17,60003***,A,:-/(仮名),rrr-36,rrr-36(W),1 6666,2014.08.17,2014.08.17,60003***,A,:-/(仮名),rrr-361,rrr-361(S),1 6666,2014.08.17,2014.08.17,60003***,A,:-/(仮名),rrr-28C,rrr-28(K),1 6666,2014.08.20,2014.08.20,60003***,A,:-/(仮名),www-1000,www-1000(W),1 6666,2014.08.20,2014.08.20,60003***,A,:-/(仮名),ttt-2,ttt-2(W),2 6666,2014.08.20,2014.08.20,60003***,A,:-/(仮名),rrr-81,rrr-81(S),1 6666,2014.08.20,2014.08.20,60003***,A,:-/(仮名),fff-12,fff-12(W),1 6666,2014.08.20,2014.08.20,60003***,A,:-/(仮名),ddd-45,ddd-45(W),1 6666,2014.08.20,2014.08.20,60003***,A,:-/(仮名),hhh-2,hhh-2,1 6666,2014.08.20,2014.08.20,60003***,A,:-/(仮名),www-60,www-60(W),1 6666,2014.08.20,2014.08.20,60003***,A,:-/(仮名),www-700,www-700(W),1 6666,2014.08.17,2014.08.17,60003***,A,:-/(仮名),www-70,www-70(W),1 6666,2014.08.17,2014.08.17,60003***,A,:-/(仮名),www-50,www-50(KW),1 6666,2014.08.17,2014.08.17,60003***,A,:-/(仮名),rrr-271,rrr-271(W),1 6666,2014.08.17,2014.08.17,60003***,A,:-/(仮名),rrr-36,rrr-36(W),1 6666,2014.08.20,2014.08.20,60003***,A,:-/(仮名),rrr-361,rrr-361(S),1 6666,2014.08.20,2014.08.20,60003***,A,:-/(仮名),rrr-28C,rrr-28(K),1 6666,2014.08.20,2014.08.20,60003***,A,:-/(仮名),www-1000,www-1000(W),1 6666,2014.08.20,2014.08.20,60003***,A,:-/(仮名),ttt-2,ttt-2(W),1 6666,2014.08.20,2014.08.20,60003***,A,:-/(仮名),rrr-81,rrr-81(S),1 6666,2014.08.20,2014.08.20,60003***,A,:-/(仮名),fff-12,fff-12(W),1 6666,2014.08.20,2014.08.20,60003***,A,:-/(仮名),www-45,www-45(W),1 6666,2014.08.20,2014.08.20,60003***,A,:-/(仮名),uuu-1,uuu-1(S),1 6666,2014.08.17,2014.08.17,60003***,A,:-/(仮名),www-60,www-60(W),1 6666,2014.08.17,2014.08.17,60003***,A,:-/(仮名),www-700,www-700(W),2 6666,2014.08.17,2014.08.17,60003***,A,:-/(仮名),www-70,www-70(W),1 6666,2014.08.17,2014.08.17,60003***,A,:-/(仮名),www-50,www-50(KW),1 6666,2014.08.20,2014.08.20,60003***,A,:-/(仮名),rrr-14,rrr-14(S),1

  • bunjii
  • ベストアンサー率43% (3589/8249)
回答No.3

>私が利用しているデータ内には、顧客さんが対応している下店(←この表現で正しいのか?)さんがあり、下店さん名を表示させないようにDLしても、顧客名で集計されずにDLされるので最大値が曖昧となり"0"となる? 何を言っているのか理解できません。 分からない語句は以下のとおりです。 1.下店さん 2.下店さん名を表示させないようにDL 3.顧客名で集計されずにDLされる 4.最大値が曖昧 2と3で言っているDLは何の略ですか? 尚、提示された少ないデータで検証していますので実データと異なる結果になることを再現できません。 実データに近い模擬データをCSVファイルと同等なテキストデータで提示頂ければ再検証を行ってみます。 データの行数は30行程度で良いと思います。

shironekochann
質問者

補足

bunjiiさま 大変お世話になります。 また、わかり辛い質問を再度してしまい申し訳ございません。 模擬データを添付させていただきました。 どういったフォームで、集計したいか、集計用シートも作成してみました。 お手数をおかけして申し訳ございませんが、今一度だけ、 ご教示お願いできませんでしょうか? 何とぞよろしくお願いいたします。

  • bunjii
  • ベストアンサー率43% (3589/8249)
回答No.2

Excel 2013で検証してみました。 Sheet1に提示の顧客名、購入商品名、購入商品品番、注文日がA列からD列に入力されているものとしました。 Sheet2には顧客名と購入商品品番をA列とB列に入力するものとし、最新注文日をC列に抽出する数式を設定します。 Sheet1のD列は文字列と考えていますが計算過程では自動的に数値に変換されますので、Sheet2のC列へは文字列として値を返すようにします。 Sheet2!C2=IF(COUNTA(A2:B2)=2,IFERROR(TEXT(SUMPRODUCT(MAX((Sheet1!A$2:A$31000=A2)*(Sheet1!C$2:C$31000=B2)*Sheet1!D$2:D$31000)),"標準"),""),"") Sheet2!C2を下へ必要数コピーすれば目的通りになります。 この数式はExcel 2007以降のバージョンで利用可能です。 質問では元データが30000行くらい有るとのことなので最大行番号を31000にしてあります。 実データに合わせて変更してください 行数が多いので自動再計算をOffにされた方が良いかも知れません。

shironekochann
質問者

補足

bunjii 様 早々にご教示頂いていながら、遅くなり申し訳ございません。 添付頂いた資料の通りのことがしたいと希望していました。 ありがとうございます。 やってみたところ、すべてが"0"で表示されるので、なぜ出来ないのかいろいろ試しておりました。 (答えは見つかりませんでしたが・・・。) 私が利用しているデータ内には、顧客さんが対応している下店(←この表現で正しいのか?) さんがあり、下店さん名を表示させないようにDLしても、顧客名で集計されずにDLされるので 最大値が曖昧となり"0"となる? DLデータ(シート1)の項目名の並べ方(順番)も考える必要がある? 出来ない理由は、2つのことが問題なの?かと・・・? お忙しいところ、申し訳ございませんが、 今一度ご教示いただけましたら助かります。 何とぞよろしくお願いいたします。

  • kteds
  • ベストアンサー率42% (1882/4440)
回答No.1

顧客名/注文日/品番 でsortすればいいでしょう。 事例として下記サイト参照。 事例は4つ以上となっていますが、 今回のキーは3つですので、「並べ替え」でそのまま使用できるでしょう。 http://pc.nikkeibp.co.jp/article/NPC/20060213/229074/?rt=nocnt