「みんな教えて! 選手権!!」開催のお知らせ

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年度予算策定のため分類作業中なのです。
宜しくお願い致します

A 回答 (5件)

途中に空白がなければ


=SUM(INDEX(1/COUNTIF(B1:B9000,B1:B9000),))

途中に空白があるなら
http://oshiete1.goo.ne.jp/qa2710769.html
を参照してください
    • good
    • 3
この回答へのお礼

思い描いていた通りの結果が出ました。
非常に助かります。

まだまだ知らない関数がたくさんありますね。
もっと勉強せねば。。。

ありがとうございました!

お礼日時:2007/04/16 19:42

◆あまりスマートな式ではありませんが



=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」になります

★少し、時間がかかりますがごめんなさい
    • good
    • 0

Excelにはデータの集計に便利な


「ピボットテーブル」という機能があります。
今回のご質問のようなケースではピボットテーブルを
利用すれば、容易に解決できるのでないかと思います。
(同一データ毎に、その合計値計算や、同一データの数を
 カウントする)

ピボットテーブルの使い方は少々慣れが必要ですが、
使いこなせれば非常に強力な機能です。
(参考URL)
http://kokoro.kir.jp/excel/pivottable.html
    • good
    • 0

とても原始的な方法


B1: 1
B2: if(A2<>A1,1,0)
以下ずっっっっっと下までコピー。
C1: =sum(B:B)

もっとマシな方法
B1: 1+sumproduct((A1:A7948<>A2:A7949)*1)

いずれも、グループ名でソートしてある条件で何回変化したかを数
えています。最初のグループをカウントしないから1足してるのね。
    • good
    • 0

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

    • good
    • 0

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

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報