アプリ版:「スタンプのみでお礼する」機能のリリースについて

どなたかエクセルによる集計方法にお力添えください。
添付ファイルのように、シート1枚目に(1)「お客様カナ氏名」、(2)「購入年月」、(3)「購入商品コード」があります。一人のお客様が複数の商品を購入しているため、(1)の1名に対して(2)(3)は複数あります。
これを、シート2枚目で、(1)に対して「最新の購入年月」だけを選んで1行で表示させたいと思っております。
関数も使用しながらやってみたのですが、なかなかうまくいかず手作業になっております。
どなたか、効率よく集計できる方法をアドバイスいただけないでしょうか。
どうぞよろしくお願いいたします。

「エクセルによるよい集計方法を教えてくださ」の質問画像

A 回答 (5件)

プログラム組み込めば不可能ではありませんが

    • good
    • 0

Sheet1


A1:お客様かな氏名  B1:購入日 C1:商品コード  D1:識別コード
データが100行目まで入っているとします。

D2セルに =A2&B1 として、100行目まで引っ張る。


Sheet2
A1:お客様かな氏名  B1:最新購入日 C1:商品コード D1:識別コード

A列には重複しない顧客名リストを記す。

D2セルに =A2&B2 として、100行目まで引っ張る。

B2セルに

=MAX(IF(Sheet1!$A$2:$A$100=Sheet2!A2,Sheet1!$B$2:$B$100,""))

と入れて、Enterではなく、Ctrl+Shift+Enter で確定。
その後、顧客名のリストの一番下まで引っ張る。

C2セルに

=INDEX(Sheet1!$C$2:$C$100,MATCH(Sheet2!D2,Sheet1!$D$2:$D$100,0),1)

と入れて、一番下まで引っ張る。


D列が不格好と思えば、非表示にしておいても良いでしょう。

それぞれのお客様の最新購入日と商品コードが出ると思います。
ご確認ください。

また、Sheet1 のデータが今後も追加されていくなら、上の式で「100」としてあるところを、あらかじめ大き目の数字を入れておいても良いでしょう。
    • good
    • 0
この回答へのお礼

ありがとうございました。なるほど・・・と本当に勉強になりました。
本当にありがとうございました。

お礼日時:2010/12/12 15:36

D3セルに =A3&COUNTIF($A$3:A3,A3)


下へオートフィル

F3セルに =MATCH($G3&COUNTIF($A:$A,$G3),$D:$D,0)
下へオートフィル

H3セル =INDEX(B:B,$F3)
右へ下へオートフィル
「エクセルによるよい集計方法を教えてくださ」の回答画像3
    • good
    • 0

こんばんは!


一例です。

日付の列はシリアル値が入っていて、表示形式が yyyy年m月 になっているものとします。

↓の画像のように作業用の列を設けています。
Sheet1の作業列D2セルに
=IF(A2="","",IF(B2=MAX(IF($A$1:$A$1000=A2,$B$1:$B$1000)),ROW(),""))
これは配列数式になってしまいますので、この画面からコピー&ペーストしただけでは正確に表示されないと思います。
D2セルに貼り付け後、F2キーを押す、またはD2セルでダブルクリック、または数式バー内で一度クリックします。
編集可能になりますので、Shift+Ctrlキーを押しながらEnterキーで確定!
このD2セルをオートフィルでずぃ~~~!っと下へコピーします。

そして、Sheet2のA2セルに
=IF(COUNT(Sheet1!$D:$D)<ROW(A1),"",INDEX(Sheet1!A:A,SMALL(Sheet1!$D:$D,ROW(A1))))
これは配列数式ではありません。
として列方向と行方向にオートフィルでコピーすると
画像のような感じになります。

余計なお世話かもしれませんが、Sheet2で並び替えを行っても変化しませんので、
もし並び替えを行いたい場合は元データで並び替えを行ってください。

以上、参考になれば良いのですが・・・m(__)m
「エクセルによるよい集計方法を教えてくださ」の回答画像4
    • good
    • 0
この回答へのお礼

ご多忙のところ本当にありがとうございました!!今回は別の方の内容で対応しましたが、考え方など大変勉強になりました。腕を磨きたいと思います。今後ともどうぞよろしくお願いいたします。

お礼日時:2010/12/12 15:34

 適当な列(ここでは仮にI列とします)を作業列とする方法です。


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

=IF(($A3="")+SUMPRODUCT((OFFSET($A$3,,,MATCH("゛",$A:$A,-1)-ROWS($1:$2))=$A3)*(OFFSET($B$3,,,MATCH("゛",$A:$A,-1)-ROWS($1:$2))>$B3))=0,ROW(),"")

 次に、I3セルをコピーして、I4以下に貼り付けて下さい。
 次に、E3セルに次の数式を入力して下さい。

=IF(ROWS($2:2)>COUNT($I:$I),"",INDEX(A:A,LARGE($I:$I,ROWS($2:2))))

 次に、E3セルをコピーして、F3セルとG3セルに貼り付けて下さい。
 次に、F3セルの書式設定を、日付の2001/3/14等の、年月日が表示される形式に、設定して下さい。
 次に、E3~G3の範囲をコピーして、同じ列の4行目以下に貼り付けて下さい。

 以上です。
    • good
    • 0
この回答へのお礼

ありがとうございました!!今回は別の方の内容で作業してしまいましたが、あらためて時間を作り確認したところ大変勉強になりました!!本当にありがとうございました。

お礼日時:2010/12/12 15:33

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