• ベストアンサー

[EXCEL]列の項目を何種類かカウントする方法

いつもお世話になっています。Excelで3000件ぐらいのデータを整理したいのですが、普通に合計などはできますが、1列に何種類かのデータが色々な順で混在している場合、それが全部で何個かではなく、何種類かをすぐに計算する方法はありますか? たとえば、"りんご"・"みかん"・"いちご"・"りんご"・"ばなな" とそれぞれ入力しているとして、個数は5個だけれども種類は4種類ですよね。この種類の数を出せるとうれしいのですが。どなたか教えてください。 今、使っているのはOffice2003ですが、方法が違うようならOffice2000での方法もわかる方いらっしゃれば教えてください、お願いします。

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

  • ベストアンサー
  • oosaki
  • ベストアンサー率48% (88/183)
回答No.3

自信はありませんが、 以下の数式は、1件目のデータを1と返し、2件目移行に出現する重複データを0と返す数式です。 =IF(A1=0,0,IF(COUNTIF($A$1:A1,A1)>1,0,1)) はじめに、上記式のセル番地A1とはデータの始まりがセルA1の場合ですので、ご自身のデータで始まりのセル番地と置き換えて下さい。あとはオートフィルでコピーです。 最後に、ランダムに算出された1と0に対し、SUM関数で合計を求めれば種類(重複しない個数)を出すことができるかと思います。

mkx123456
質問者

お礼

ありがとうございました。すごいです。スッキリしている式なので、分かりやすく使いやすいです。 種類の個数も正確に求められました。ありがとうございました。

その他の回答 (4)

  • ja7awu
  • ベストアンサー率62% (292/464)
回答No.5

例えば、A1:A10に種類カウント対象データが、あるとしたとき、 範囲内に空白を許可し、その空白を種類としてカウントしない場合は、 =SUMPRODUCT(IF(A1:A10<>"",1/COUNTIF(A1:A10,A1:A10),0)) または、 =SUM(IF(A1:A10<>"",1/COUNTIF(A1:A10,A1:A10))) の数式を入れ、双方 Ctrl+Shift+Enter で確定します。(両端が{}で括られてます。) また、次の2つは、範囲内に空白を許可しない場合です。 =SUMPRODUCT(1/COUNTIF(A1:A10,A1:A10)) または、 =SUM(1/COUNTIF(A1:A10,A1:A10)) こちらは、Ctrl+Shift+Enter で確定する。 これで範囲内の種類の数が表示されますが、如何でしょうか。

mkx123456
質問者

お礼

ありがとうございます。試してみましたが、DIV/#0と表示されうまくいきませんでした。何度か確認してみます。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.4

最近似たような質問がありました http://okweb.jp/kotaeru.php3?qid=1478412

参考URL:
http://okweb.jp/kotaeru.php3?qid=1478412
mkx123456
質問者

お礼

すみません。気をつけます。

  • kaisendon
  • ベストアンサー率44% (114/257)
回答No.2

こんばんは 作業列を使ってもいいですか? 仮にB列を作業列にします。    A    B    C 1 名前 2 りんご 3 みかん 4 いちご 5 りんご 6 ばなな 7 データが2行目から始まってるとして B2に =IF(A2="","",IF(MATCH(A2,$A$2:$A$3000,)=ROW(A1),ROW(A1),"")) と入力 B3000までフィルコピー 任意のセルに =COUNT(B:B)  これで何種類あるか求められるはずです。 注)B2に入れた式の ROW(A1) の部分は データの一行目に「1」  二行目に「2」という数字が欲しいのでそうしているので A1セルの内容を参照しているわけではありません。 実際のデータが何行目から始まるのかは分かりませんが ROW(A1) の部分は A1 のままにしていてください。 例)データが3行目から始まるのなら B3に =IF(A3="","",IF(MATCH(A3,$A$3:$A$3000,)=ROW(A1),ROW(A1),"")) として B3000までフィルコピー 必要に応じて作業列は非表示にして下さい。

mkx123456
質問者

お礼

非表示にする作業列などもどんどん活用するべきなんですね。一度にしようとしてサッパリ混乱してきます。 ありがとうございました。

  • grape16
  • ベストアンサー率55% (52/93)
回答No.1

(1) データを並べ替えて良いなら...    A     B 1      2 いちご  =$A2<>$A1 3 ばなな  =$A3<>$A2 4 みかん  =$A4<>$A3 5 りんご  =$A5<>$A4 6 りんご  =$A6<>$A5 7 種類の数 =COUNTIF(B$2:B$6,TRUE) (2) データを並べ替えないなら...    A      B 1  2 りんご  =COUNTIF($A$2:$A$6,A2) 3 みかん  =COUNTIF($A$2:$A$6,A3) 4 いちご  =COUNTIF($A$2:$A$6,A4) 5 りんご  =COUNTIF($A$2:$A$6,A5) 6 ばなな  =COUNTIF($A$2:$A$6,A6) 7 種類の数 =COUNTA(B$2:B$6)/HARMEAN(B$2:B$6) というような方法でいかがでしょうか。トリッキーな感じですがちゃんと答えが出ますよ。

mkx123456
質問者

お礼

ありがとうございました。考え方の参考になりました。

関連するQ&A

  • エクセル2010で 項目の抜き出しをしたい

    エクセル2010で 項目の抜き出しをしたいです。 たとえば、A列に りんご りんご バナナ トマト りんご バナナ みかん トマト メロン バナナ リンゴ みかん ぶどう とデータが入っているとき、これらのデータには、 トマト バナナ りんご リンゴ みかん メロン ぶどう という種類のデータが入っているということを簡単に表示する方法が知りたいです。 どうぞよろしくお願いします。

  • 同じ文字列の隣の数値を合計し、その多い順にリスト化

    よろしくお願い致します。 Excel の計算式と作業列のみを用い、同じ文字列の隣の数値を合計し、その多い順にリスト化する方法についてお知恵をお貸しください。 やりたいことは以下になります。 ばななが合計7、りんごが合計5、みかんとなしが合計3なのでC列の通り合計か大きい順番に表されます。 A     B C りんご  1  ばなな     ばなな  2     りんご みかん  3 みかん りんご 4     なし ばなな 5 なし 3 みかんとなしは同数ですが、 上にあるみかんがつ先にきます。 以上、よろしくお願い致します。

  • エクセルで2列に入力された同一データを全て抽出したい

    下の表でA列とB列に入力された「バナナ」を全て、すなわち1,2,3,5行目を抽出をしたいのです。 データ量が1000行を越すため、効率よく抽出する 方法を教えてください。     A    B 1 バナナ  みかん 2 りんご  バナナ 3 バナナ  バナナ 4 いちご  みかん 5 バナナ  いちご

  • 並べ替え方法

    A列 B列 C列 D列 E列 品目 単価 個数 (イメージ) りんご 100 50 りんご 100 60 りんご 110 りんご 90 80 りんご 80 みかん 50 30 30 みかん 50 20 みかん みかん 40 40 みかん 60 バナナ 150 30 バナナ 150 40 バナナ 70 バナナ 140 50 バナナ 90 A列 B列 C列のデータがランダムにあるとしてそれを 品目ごと単価ごとに集約して D列 E列に集計するにはどうしたら良いですか? お詳しい方がいらしたら、どうかご教授ください。

  • エクセル データの比較・抽出方法について

    列1と列2を比べて、データが一致しないものを抽出したいのですが、方法がわかりません。どなたかご存知のかた教えていただけないでしょうか? 列1     列2 りんご   りんご みかん   メロン もも    もも いちご   バナナ 列2にあって 列1にないもの (→この場合メロン・バナナ) 列1にあって 列2にないもの (→この場合みかん・いちご) をそれぞれ分かるようにしたいのです。 エクセルの関数を使ってできたらよいなと思うのですが どなたか知恵を貸していただけないでしょうか。 よろしくお願いします。

  • Excel2003 並び替えに関する質問 VBA初心者

    エクセルの並び替えにおいて質問させていただきます。  A列  B列  C列   D列 りんご  1  バナナ  4 バナナ  2  みかん  6 すいか  3  いちご  8 みかん  4  もも   3 いちご  5  すいか  2 ドリア  6  ぶどう  1 というものを  A列  B列  C列   D列 りんご  1   バナナ  2  バナナ  4 すいか  3  すいか  2 みかん  4  みかん  6 いちご  5  いちご  8 ドリア  6           もも   3         ぶどう  1 というようにA列にならってC,D列の項目を並び替えて、並び替えられないものは下に列挙させるようなやり方をVBAで組みたいのですが、まずはどうすればよいのかわかりません。 もし、これを見て答えられるようであれば、どなたか教えていただければ幸いです。 どうか宜しくお願いします。

  • 教えてください

    次のような表があります 会社名  個数  フリガナ  コード りんご   1  リンゴ    2 バナナ   2  バナナ    1 みかん   5  ミカン    3 いちご   2  イチゴ    4 上の表に基づいて縦の列は、フリガナの1文字目に該当するもの 横の列はコード その2つの交差したところに個数を自動的にいれたいのですが、できますか    1 2 3 4 ←(コード)  あ  か  さ   た  な  は 2  ま  や  ら   1  わ  ↓  フリガナの1文字目

  • エクセル 同名の場合はB列にC列の数値を入れたい!

     A列  B列   C列     D列 りんご        50    みかん みかん        30    ぶどう いちご        20    ばなな ぶどう        40    りんご ばなな        60     いちご ↑上記のような表があります。 もしA列とD列が同名であればC列の金額をB列に表示したいのですがよい関数はありますでしょうか?? おわかりの方教えてくださーい!

  • 複数条件で重複しないデータをカウントする方法

    困っています。 エクセルの関数を教えてください。 複数条件に該当するデータをカウントする方法を教えてください。 A列とB列には不特定多数の名称と地名が入力されています。 このような表です。 A列(品名)    B列(出荷先)     いちご       東京 いちご       埼玉 いちご       東京  みかん       山梨 みかん       岐阜 りんご       埼玉  りんご       大阪 りんご       大阪 以下1500品目 A列のいちごでB列の出荷先が東京であるものは2件あります。 この「件数」を関数で表示させる方法を教えてください。 よろしくお願いいたします。

  • EXCEL VBA 複数列を2列にまとめる

    下記のようなデータ(列数も行数も常に変わり、固定ではない)を ┌───────────────── │ A 列  | B列   | C列   | D列 ├─────────────────── │ 1 │伝票01 │品名01 | 品名02 │品名03 ├─────────────────── | 2 │0011 │みかん │みかん | りんご ├─────────────────── │ 3 │1001 │りんご  │いちご |    ├─────────────────── │ 4 │1100 │いちご  │みかん | ぶどう  └─────────────────── ↓のように2列にまとめる方法はございますでしょうか?VBAを希望しております。   よろしくお願い申し上げます。 ┌───────────────── │ A │ B   ├───────────────── │ 1 │伝票  │品名 ├───────────────── │ 2 │0011_品名01 │みかん  ├───────────────── │ 3 │1001_品名01 │りんご    ├───────────────── │ 4 │1100_品名01 │いちご ├───────────────── │ 5 │1001_品名02 │みかん  ├───────────────── │ 6 │1100_品名02 │いちご  ├───────────────── │ 7 │1001_品名02 │みかん  ├───────────────── │ 8 │1100_品名03 │りんご  ├───────────────── │ 9 │1001_品名03 │  ├───────────────── │ 0 │1001_品名03 │ぶどう  ├─────────────────

専門家に質問してみよう