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

excelデータで、以下のように、1列目に名前が入り、2列目に購入したものが入るデータがあったとします。
A あ
B あ
B い
C う
C あ
C あ
D い
これを、
A あ
B あ い
C う あ あ
D い
のように、同じ名前のものは1行で、購入したものを右方向へそれぞれ新規セルに追加して書き換えたいのですが、関数を利用してどうしたらよいでしょうか。右方向に追加していくデータの順序はといません。同じ名前の人がいくつ購入しているかはランダムです。VLOOKUPとOFFSET関数を組み合わせるとできそうなのですが・・・よろしくお願いいたします。

A 回答 (2件)

A列に作業列挿入します。


A  B  C  D  E  F  G
  A  あ    1  2  3 
  B  あ  A
  B  い  B
  C  う  C
  C  あ  D
  C  あ
  D  い
A1セルに
=B1&COUNTIF(B1:B$1,B1) 下フィル
E2セルに
=VLOOKUP($D2&E$1,$A:$C,3,FALSE) 右フィル、下フィルします。
エラー処理はしていません。
参考にして作ってみてください。

この回答への補足

早速のご回答、本当にありがとうございます。
1行目の123は、半角英数で、自分で記入すればよいのですね。
また、D列のABCDは自分で記入しないといけないと思われますが、
膨大な生データB列より効率よく抽出する方法はありますか?
もしくは、自分で記入しないで自動的に記述することはできないものでしょうか。よろしくお願いいたします。

補足日時:2008/06/08 18:42
    • good
    • 0
この回答へのお礼

おかげさまで、本日たった今、会社業務を終了できました。
本当に助かりました。ありがとうございました。

お礼日時:2008/06/09 15:39

>膨大な生データB列より効率よく抽出する方法


これもCOUNTIF関数を作業列として利用した方法があります。
作業列を挿入(仮にD列)
D2セルに =IF(COUNTIF(B1:B$1,B2)=1,ROW(),"")
下フィルすると、最初に出てきた名前の場合のみ、その行番号が表示されます。
E2セルに =INDEX(B:B,SMALL(D:D,ROW(A1)))
下フィルすると、行番号があるデータだけ順に表示されます。
難しい関数ではありませんので、理解していただくと色々と応用ができるテクニックです。
参考にしてください。
E2セルのエラー処理を入れると
=IF(ISERROR(SMALL(C:C,ROW(A1)),"",INDEX(A:A,SMALL(C:C,ROW(A1))))
こんな感じになるかと思います。
    • good
    • 0
この回答へのお礼

おかげさまで、本日たった今、会社業務を終了できました。
本当に助かりました。ありがとうございました。

お礼日時:2008/06/09 15:41

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