2010-09-17 14:13:03 +0000 2010-09-17 14:13:03 +0000
32
32

範囲内の異なる値の数をカウントするには?

フィルタなどを使用してすでに整理された大きなテーブルを持っています。特定の列の下に、その列に含まれる明確な値の数を含む要約を追加したいのですが、どのようにすればよいでしょうか?

*関数=COUNTDISTINCT(A2:A100)がないので、代わりに何ができますか? * (Excel 2003)

私はテーブルやフィルタリングを変更したくないので、 この類似の質問 への回答を正確に使用することはできません。私は修正ではなく、ワークシートに追加が必要です。

回答 (7)

32
32
32
2011-06-05 08:44:38 +0000
=SUMPRODUCT((A2:A100 <> "")/COUNTIF(A2:A100,A2:A100 & ""))

は配列式を使わなくてもできます。

7
7
7
2010-09-17 14:16:02 +0000

解決策はこちら ](http://www.j-walk.com/ss/excel/usertips/tip061.htm)という、とんでもない遠回りな解決方法を見つけました。でもね、うまくいったんだよ・・・。

=SUM(IF(COUNTIF(A2:A100,A2:A100)=0, “”, 1/COUNTIF(A2:A100,A2:A100))

を押して、Ctrl+Shift+Enterを押します。Enterだけを押すと間違った結果になります。

1
1
1
2013-05-02 05:42:13 +0000

=SUM(1/COUNTIF(A2:A100;A2:A100))

Ctrl+Shift+Enterで確認

各セルごとに発生回数をカウントし、その逆数を合計します。ある文字列や数字が5回発生したとします。その逆数は0.2で、5回合計すると1が加算されます。最終的には、異なる値の数が得られます。

**注意:空白がある場合は動作しません。

1
1
1
2010-09-17 15:08:28 +0000

2つのリソースが見つかりました。 http://www.excelforum.com/excel-worksheet-functions/365877-count-distinct-values.html

http://www.cpearson.com/excel/Duplicates.aspx

そこから実行可能な解決策を見つけることができるはずです。

1
1
1
2010-09-17 15:10:55 +0000

この記事 は、テキスト値に対してこれを示しています。

=SUM(IF(FREQUENCY(IF(LEN(C3:C25)>0,MATCH(C3:C25,C3:C25,0),""), IF(LEN(C3:C25)>0,MATCH(C3:C25,C3:C25,0),""))>0,1))

と、数値の場合を示しています。

=SUM(IF(FREQUENCY(C3:C25, C3:C25)>0,1))

この記事 は同様の式を示していますが、フィルターを使った方法も示しています。

フィルターを使ってユニークな値の数をカウントする

高度なフィルターを使って、データの列からユニークな値を抽出して貼り付けます。そして、ROWS関数を使って、新しい範囲の項目の数をカウントすることができます。

  1. 列の最初の行に列ヘッダーがあることを確認します。
  2. データ] メニューで [フィルタ] をポイントし、[詳細フィルタ] をクリックします。 3.詳細フィルタダイアログボックスで、[別の場所にコピー]をクリックします。
  3. カウントする範囲がまだ選択されていない場合は、[リスト範囲] ボックスで情報を削除してから、データを含む列をクリックします (または範囲を選択します)。 5.コピー先ボックスで、ボックス内の任意の情報を削除するか、ボックス内をクリックしてから、一意の値をコピーする空白の列をクリックします。
  4. ユニークレコードのみ] チェックボックスを選択し、[OK] をクリックします。

7.範囲の最後のセルの下の空白のセルに、ROWS 関数を入力します。先ほどコピーした一意の値の範囲を引数として使用します。例えば、一意の値の範囲が B1:B45 の場合は、次のように入力します。
=ROWS(B1:B45)

0
0
0
2013-07-02 11:56:27 +0000

このリンクを試してみてください。空白セルを省略したリスト内の一意の値をカウントする方法を示しています。 http://www.functioninexcel.com/lists-arrays/count-unique-values-in-a-list/

= sum( if( frequency( match( リスト , リスト , リスト , 0 ) , match( リスト , リスト , リスト , 0 ) ) > 0 , 1 ))

ここで、"List" はセルの範囲を表します。-OR- リスト = offset($A$1,,,match( value(rept(“9”,255)) , $A:$A ))

0
0
0
2013-08-03 23:06:09 +0000

=SUM(IF(FREQUENCY(IF(SUBTOTAL(3,OFFSET(A2:A100,ROW(A2:A100)-ROW(A2),0,1)),MATCH(“~”&A2:A100,A2:A100&“,0),ROW(A2:A100)-ROW(A2)+1),1)

この式を貼り付けた後、必ずCONTROL+SHIFT+ENTERを押してください。これはA2:A100の範囲のためのものなので、それに応じて範囲を調整してください。