41

.xlsいくつかのデータを含む列を持つファイルがあります。この列に含まれる一意の値の数をカウントするにはどうすればよいですか?

私は多くのオプションをグーグルで検索しましたが、そこにある式は常にエラーになります。例えば、

=INDEX(List, MATCH(MIN(IF(COUNTIF($B$1:B1, List)=0, 1, MAX((COUNTIF(List, "<"&List)+1)*2))*(COUNTIF(List, "<"&List)+1)), COUNTIF(List, "<"&List)+1, 0))

戻り値 ここに画像の説明を入力

4

12 に答える 12

109

A2:A100 の異なる値の数をカウントするには (空白はカウントしません):

=SUMPRODUCT((A2:A100<>"")/COUNTIF(A2:A100,A2:A100&""))


@ Ulli SchmidによるWhat is this COUNTIF() formula doing?への回答からコピー :

=SUMPRODUCT((A1:A100<>"")/COUNTIF(A1:A100,A1:A100&""))

A1:A100 内の一意のセルをカウントします。空白セルと空の文字列 ("") を含むセルは除外されます。

それはどのように行うのですか?例:

A1:A100 = [1, 1, 2, "apple", "peach", "apple", "", "", -, -, -, ...]
then:
A1:A100&"" = ["1", "1", "2", "apple", "peach", "apple", "", "", "", "", "", ...]

したがって、この&""は、空白セル (-) を空の文字列 ("") に変換するために必要です。空白のセルを使用して直接カウントする場合、COUNTIF() は 0 を返します。このトリックを使用すると、"" と - の両方が同じものとしてカウントされます。

COUNTIF(A1:A100,A1:A100) = [2, 2, 1, 2, 1, 2, 94, 94, 0, 0, 0, ...]
but:
COUNTIF(A1:A100,A1:A100&"") = [2, 2, 1, 2, 1, 2, 94, 94, 94, 94, 94, ...]

空白と "" を除くすべての一意のセルの数を取得したい場合は、次のように除算できます。

(A1:A100<>""), which is [1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, ...]

中間結果 COUNTIF(A1:A100,A1:A100&"") によって、値を合計します。

SUMPRODUCT((A1:A100<>"")/COUNTIF(A1:A100,A1:A100&""))  
= (1/2 + 1/2 + 1/1 + 1/2 + 1/1 + 1/2 + 0/94 + 0/94 + 0/94 + 0/94 + 0/94 + ...)
= 4

COUNTIF(A1:A100,A1:A100)の代わりにを使用したCOUNTIF(A1:A100,A1:A100&"")場合、これらの 0/94 の一部は 0/0 になります。ゼロによる除算は許可されていないため、エラーがスローされます。

于 2013-09-03T09:03:05.517 に答える
15

試す -=SUM(IF(FREQUENCY(MATCH(COLUMNRANGE,COLUMNRANGE,0),MATCH(COLUMNRANGE,COLUMNRANGE,0))>0,1))

ここで、COLUMNRANGE = これらの値を持つ範囲です。

例 -=SUM(IF(FREQUENCY(MATCH(C12:C26,C12:C26,0),MATCH(C12:C26,C12:C26,0))>0,1))

Ctrl+Shift+Enter を押して数式を配列にします (そうしないと正しく計算されません)

于 2013-09-03T08:31:38.140 に答える
10

これは、トリックをうまく行うエレガントな配列式です(ここで見つけましたhttp://www.excel-easy.com/examples/count-unique-values.html ):

タイプ

=SUM(1/COUNTIF(リスト,リスト))

CTRL-SHIFT-ENTER で確定します

于 2014-03-19T16:37:08.913 に答える
3

条件付きで一意にカウントします。ColAは ID で condition を使用しID=32、ColBは Name で、特定の ID の一意の名前を数えようとしています

=SUMPRODUCT((B2:B12<>"")*(A2:A12=32)/COUNTIF(B2:B12,B2:B12))
于 2014-04-14T12:15:17.743 に答える
2

私に思いついた別のトリッキーな方法(テストしたところ、うまくいきました!)。

  • 列のデータを選択します
  • メニューで、Conditional FormattingHighlight CellsDuplicate Values
  • 一意の値または重複する値を強調表示するかどうかを選択します。
  • ハイライトを保存する
  • データを選択
  • に移動しDataてからFilter

色に基づくフィルター:

Excel -- 少なくとも 2013 -- 色でフィルター処理できます。 甘い!

確かに、これは書式設定の変更が必要なため、頻繁に使用するスプレッドシートよりも 1 回限りのデータのチェックに適しています。

于 2015-06-30T20:46:05.147 に答える
1

次の手順を実行できます。

  1. 最初に列を分離します (隣接する列がある場合に一意の値をカウントする列の前および/または後に空白の列を挿入します。

  2. 次に、列全体を選択し、[データ] > [高度なフィルター] に移動して、[一意のレコードのみ] チェックボックスをオンにします。これにより、一意でないレコードがすべて非表示になるため、列全体を選択して一意のレコードを数えることができます。

于 2013-09-03T08:36:32.280 に答える
1

Macをお使いの場合

  1. ハイライト列
  2. コピー
  3. terminal.app を開く
  4. タイプpbpaste|sort -u|wc -l

Linux ユーザーpbpasteは xclip xsel などに置き換えます

Windows ユーザーの場合、可能ですが、スクリプトを作成する必要があります... http://brianreiter.org/2010/09/03/copy-and-paste-with-clipboard-from-powershell/から始めてください。

于 2015-06-05T16:20:12.820 に答える
0

一意のレコード数の新しい数式を追加できます

=IF(COUNTIF($A$2:A2,A2)>1,0,1)

SUMピボット テーブルを使用して、一意のレコード数を取得できるようになりました。このソリューションは、同じ値が存在する行が 2 つ以上あり、ピボット テーブルで一意の数を報告したい場合に最適です。

于 2015-08-28T07:09:00.263 に答える
0

行 1 にヘッダーがあり、データが行 2 以下にあるスプレッドシートを使用しています。

ID は列 A にあります。いくつの異なる値があるかをカウントするために、この式を行 2 からスプレッドシートの最初の使用可能な列の最後まで入れます [私の場合は F] : "=IF(A2=A1,F1+1,1)".

次に、フリー セルで次の数式を使用します"=COUNTIF(F:F,1)"。このようにして、すべての ID が確実にカウントされます。

ID は並べ替える必要があることに注意してください。そうしないと、複数回カウントされます...ただし、配列数式とは異なり、150000行のスプレッドシートでも非常に高速です。

于 2016-01-19T08:36:32.663 に答える