• ベストアンサー

EXCEL/グループ数を数えるには?

EXCELでグループ数を効率よくカウントする 方法を探しています。以下のようなデータが ある時、合計で表中に何グループあるかを 関数やマクロで効率的に算出する方法です。 No. Group No. 1 ASAP4425 2 ASAP4425 3 ASAP4425 4 ASAP4425 … 7944 CIFA3356 7945 CIFA3356 7946 CIFA3356 7947 FOBA3326 7948 FOBA3326 7949 FOBA3326 1) 同じグループをまとめて1件というように 集計したいのです。例中で言えば、No.1-4は 同じGroup名なので合わせて1件とカウントします。 7944-7946も1件というようにカウントします。 同様に以下のGroup名も同じものをまとめて1件と カウントしていき、最終的に何グループあるかを 調べたいのです。 2) ひとつのGroupに含まれる個別の件数は 一定しません。2つで1グループの案件もあれば、 100件以上が同じGroup 名を所有していることも あります。 総件数が9000件近くあり、いちいち手作業で分類 するのが面倒ですし、何よりも間違いが起きるのを 恐れています。単純にセル数のカウントではないので、 上手い関数もおもいつきません。 07年度予算策定のため分類作業中なのです。 宜しくお願い致します

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

  • ベストアンサー
  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.3

途中に空白がなければ =SUM(INDEX(1/COUNTIF(B1:B9000,B1:B9000),)) 途中に空白があるなら http://oshiete1.goo.ne.jp/qa2710769.html を参照してください

masa007
質問者

お礼

思い描いていた通りの結果が出ました。 非常に助かります。 まだまだ知らない関数がたくさんありますね。 もっと勉強せねば。。。 ありがとうございました!

その他の回答 (4)

  • maron--5
  • ベストアンサー率36% (321/877)
回答No.5

◆あまりスマートな式ではありませんが =COUNT(INDEX(1/(MATCH(IF(ISNUMBER(FIND(" ",A1:A9000)),MID(A1:A9000,FIND(" ",A1:A9000)+1,50),A1:A9000),IF(ISNUMBER(FIND(" ",A1:A9000)),MID(A1:A9000,FIND(" ",A1:A9000)+1,50),A1:A9000),)*(A1:A9000<>"")=ROW(A1:A9000)),)) ★この式は「配列数式」です。式を入力後、Ctrl+Shift+Enter をおして、式を確定させてください。 ★確定すると、式の両端に{ }がつきます。 ★本例では、「3」になります ★少し、時間がかかりますがごめんなさい

  • bucho412
  • ベストアンサー率50% (1/2)
回答No.4

Excelにはデータの集計に便利な 「ピボットテーブル」という機能があります。 今回のご質問のようなケースではピボットテーブルを 利用すれば、容易に解決できるのでないかと思います。 (同一データ毎に、その合計値計算や、同一データの数を  カウントする) ピボットテーブルの使い方は少々慣れが必要ですが、 使いこなせれば非常に強力な機能です。 (参考URL) http://kokoro.kir.jp/excel/pivottable.html

回答No.2

とても原始的な方法 B1: 1 B2: if(A2<>A1,1,0) 以下ずっっっっっと下までコピー。 C1: =sum(B:B) もっとマシな方法 B1: 1+sumproduct((A1:A7948<>A2:A7949)*1) いずれも、グループ名でソートしてある条件で何回変化したかを数 えています。最初のグループをカウントしないから1足してるのね。

  • shut0325
  • ベストアンサー率40% (490/1207)
回答No.1

なんか関数もありそうですが、探すのが面倒だし、9000件程度ならVBAでグループ名の列を対象に、「グループ名を変数に入れる→順次比較する→一致したらカウント+削除→どこかに記録」みたいなループで処理したらどうでしょうか? ちょっと非効率ですが、考えることに時間とられるよりてっとり早いかと。

関連するQ&A