• ベストアンサー

[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