web-dev-qa-db-ja.com

Excelの列の一意の値をカウントする

いくつかのデータを含む列を持つ.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))

返却値 enter image description here

39
Ivanka Todorova

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

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


@ lli Schmid による回答からコピーされました このCOUNTIF()式は何をしていますか?

=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になります。ゼロによる除算は許可されていないため、エラーがスローされます。

105
barry houdini

試してください-=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を押して数式を配列にします(そうしないと正しく計算されません)

15
Nilesh Deshmukh

一意の値を取得するだけでなく、一意の値のカウントを取得する別の簡単な方法を次に示します。関心のある列を別のワークシートにコピーし、列全体を選択します。 [データ]-> [重複の削除]-> [OK]をクリックします。これにより、重複する値がすべて削除されます。

11
Arconath

これはエレガントな配列式です(私がここで見つけた http://www.Excel-easy.com/examples/count-unique-values.html )。

タイプ

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

cTRL-SHIFT-ENTERで確定します

9
Your Excel Guy

条件で一意にカウントします。列AはIDであり、条件ID=32を使用し、列Bは名前であり、特定のIDの一意の名前をカウントしようとしています。

=SUMPRODUCT((B2:B12<>"")*(A2:A12=32)/COUNTIF(B2:B12,B2:B12))
3
Derek

私に発生したばかりの別のトリッキーな方法(テストし、動作しました!)。

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

色に基づくフィルター:

Excel -- 2013 at least -- lets you filter on color. Sweet!

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

2
SeanKilleen

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/

1
furicle

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

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

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

1
Jerry

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

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

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

0
Henry Tran

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

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

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

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

0
grab74