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

慣れない関数で計算式が作れず質問させて頂きました。
顧客毎の最新(直近)のデータを取得するには
エクセルでどのような計算式を作ればいいでしょうか。

下記のような売上データがあります。
(1)
    A     B     C     D
   日付   顧客  情報1  情報2
1  1/2  顧客1   ○   2
2  1/5  顧客2   ○   5
3  1/3  顧客1        1
4  1/5  顧客3   ○ 
5  1/4  顧客2   ○   3

※ひとつの顧客から同じに日に2回売上は無いものとしますが、
 日付は前後して入力されます。
※「日付」「顧客」は重複しています。

この表を元に顧客毎の直近リスト(2)を
作成できればと思ってます。

(2)
    AA    AB   AC   AD
   顧客   日付  情報1  情報2
1  顧客1   1/3        1
2  顧客2   1/5   ○   5
3  顧客3   1/5   ○
4  顧客4 
5  顧客5
※AAの顧客名は既に入力があります。
AB1に入る計算式はMAXを使って配列数式でなんとか
作れました。(見よう見まねですが・・・)
{=MAX(IF(b1:b5=AA1,A1:A5,""))}

AC1 AD1 にはどのような計算式を入れればいいか
お力添え頂けたらと思います。
また、何かいい方法があればエクセルで違った方法などでも
教えていただければ嬉しいです。
分かりにくくてごめんなさい。
どうぞよろしくお願いいたします。

A 回答 (2件)

配列数式で次の方法は如何でしょうか。


AC1は、
=IF(COUNTIF($B:$B,$AA2),INDEX(C:C,SUMPRODUCT(($B$2:$B$6=$AB2)*($A$2:$A$6=$AA2)*(ROW($A$2:$A$6))))&"","")
AD1は、
=IF(COUNTIF($B:$B,$AA2),INDEX(D:D,SUMPRODUCT(($B$2:$B$6=$AB2)*($A$2:$A$6=$AA2)*(ROW($A$2:$A$6))))&"","")
    • good
    • 0
この回答へのお礼

スゴイです!出来ました!!
ずっとひとりで悩んでました。。
本当にありがとうございました。

あの・・・
回答頂いてから計算式の意味を理解しようとするのですが、
知識が乏しくてよく分かりません。・゜゜・(>_<)・゜゜・。
単体ではなんとか使ったことのある関数なのですが
ちょっとでも複雑になるとダメで。。
まして配列数式で頭こんがり中です。

甘えて申し訳ないのですが
簡単にで結構ですので意味を教えて頂けないでしょうか。
(特に最後の方の「&"",」部分等・・・)
ご迷惑お掛けしてすみません。
どうぞよろしくお願い致します。

お礼日時:2007/03/01 20:19

NO1です。

以下に解説します。
(1)顧客名がない場合、該当セルを空白にする為、COUNTIF使用して有無を判定する様にしました。
(2)SUMPRODUCT内は、最新日付と顧客名と行番号をAND条件で確定したセルの行番号を取得しています。
仮に3行配列として2行目に条件一致とすると、
 最新日付{1,1,1}
 顧客名 {0,1,0}
 行番号 {1,2,3}
 上記の3要素を論理積すると結果が{0,2,0}となり、その和で2が戻される事になります。
この値がINDEX関数の行番号となり該当セルのデータを参照する事になります。
(3)&""は、INDEX関数の該当セルが空白だった場合、0表示を空白にする為です。
因みにSUMPRODUCT関数は、配列関数の為、入力完了時のshift+ctrl+enterは不要です。
    • good
    • 0
この回答へのお礼

続けて回答頂いてすみません。
有り難うございます。

すごくいい勉強になりました。
時間は掛かりましたがお陰で理解することができました。
応用できるよう頑張って行きたいと思います。

本当に有り難うございました。

お礼日時:2007/03/03 02:37

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