• ベストアンサー

Excelである表から文字列を抽出、別の表で整理

 A 1 おにぎり 2 おにぎり 3 おにぎり 4 ラーメン 5 そば (続く) 上のような既存の表から、品名を抽出し下のような集計表を作ろうとしています。 同じ品名がある場合詰めてリストアップします。 ←この方法が分からず難儀しています。  B    C 1 おにぎり 3 2 ラーメン 1 3 そば   1 (続く) B1~B3(続く)セルにどのような数式が考えられますでしょうか? よろしくお願いいたします。

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

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

こんにちは! 一例です。 とりあえず同Sheetに表示するとします。 ↓の画像のように作業用の列を1列設けます (今回はF列にしていますが、目障りであれば列を非表示にするか遠く離れた列にします) F2セルに =IF(COUNTIF($A$2:A2,A2)=1,ROW(),"") という数式を入れオートフィルでずぃ~~~!っと下へコピーしておきます。 そして、C2セルに =IF(COUNT(F:F)<ROW(A1),"",INDEX(A:A,SMALL(F:F,ROW(A1)))) D2セルに =IF(C2="","",COUNTIF(A:A,C2)) という数式を入れ、C2・D2セルを範囲指定 → D2セルのフィルハンドルで下へコピーすると 画像のような感じになります。 以上、参考になれば良いのですが・・・m(__)m

mryn
質問者

お礼

ありがとうございます。 非常にスマートですね。 すばらしいです!

その他の回答 (2)

  • chonami
  • ベストアンサー率43% (448/1036)
回答No.2

ピボットテーブルの方が早くないですかね?

mryn
質問者

お礼

ありがとうございます。 ピボットテーブルという手もあるかなと思いましたが、 今回は数式で実現したかったのです。

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.1

例示のレイアウト(1行目からデータが入力されている)なら、以下のような数式で重複のない文字列データを表示することができます。 =INDEX(A:A,SMALL(INDEX((MATCH($A$1:$A$100&"",$A$1:$A$100&"",)<>ROW($A$1:$A$100))*1000+ROW($A$1:$A$100),),ROW(A1)))&" 上記の数式は比較的計算負荷の高い配列数式ですので、(データ範囲が広い場合や)表示するデータ数が多くなる場合は、再計算に時間がかかりシートが重くなるかもしれません。 このような場合は、計算方法を手動にして、データを更新したいときだけF9キーで再計算するなどの対応するとよいと思います。

mryn
質問者

お礼

早速のご回答ありがとうございます。 出来るんですね。 すばらしいです。

関連するQ&A

専門家に質問してみよう