いくつかのデータを含む列を持つ.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))
返却値
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になります。ゼロによる除算は許可されていないため、エラーがスローされます。
試してください-=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を押して数式を配列にします(そうしないと正しく計算されません)
一意の値を取得するだけでなく、一意の値のカウントを取得する別の簡単な方法を次に示します。関心のある列を別のワークシートにコピーし、列全体を選択します。 [データ]-> [重複の削除]-> [OK]をクリックします。これにより、重複する値がすべて削除されます。
これはエレガントな配列式です(私がここで見つけた http://www.Excel-easy.com/examples/count-unique-values.html )。
タイプ
= SUM(1/COUNTIF(リスト、リスト))
cTRL-SHIFT-ENTERで確定します
条件で一意にカウントします。列A
はIDであり、条件ID=32
を使用し、列B
は名前であり、特定のIDの一意の名前をカウントしようとしています。
=SUMPRODUCT((B2:B12<>"")*(A2:A12=32)/COUNTIF(B2:B12,B2:B12))
私に発生したばかりの別のトリッキーな方法(テストし、動作しました!)。
Conditional Formatting
、Highlight Cells
、Duplicate Values
を選択しますData
に移動してからFilter
に移動します色に基づくフィルター:
確かに、これは、頻繁に使用するスプレッドシートよりもデータの1回限りのチェックに向いています。フォーマットの変更が必要になるためです。
Macを使用している場合
pbpaste|sort -u|wc -l
Linuxユーザーはpbpaste
をxclip xselまたは同様のものに置き換えます
Windowsユーザーは可能ですが、スクリプトを作成する必要があります... http://brianreiter.org/2010/09/03/copy-and-paste-with-clipboard-from-powershell/
次の手順を実行できます。
最初に列を分離します(隣接する列がある場合、一意の値をカウントする列の前後に空白の列を挿入します。
次に、列全体を選択し、[データ]> [高度なフィルター]に移動して、[一意のレコードのみ]チェックボックスをオンにします。これにより、すべての一意でないレコードが非表示になり、列全体を選択して一意のレコードをカウントできます。
一意のレコード数の新しい数式を追加できます
=IF(COUNTIF($A$2:A2,A2)>1,0,1)
これで、ピボットテーブルを使用して、一意のレコードカウントのSUM
を取得できます。このソリューションは、同じ値が存在する2つ以上の行があるが、ピボットテーブルで一意のカウントを報告する場合に最適です。
行1にヘッダーがあるスプレッドシートを使用していますが、データは行2以下にあります。
IDは列Aにあります。異なる値がいくつあるかを数えるために、この式を行2から最初の使用可能な列[私の場合はF]のスプレッドシートの最後まで入れます:"=IF(A2=A1,F1+1,1)"
。
次に、フリーセルで次の数式を使用します:"=COUNTIF(F:F,1)"
。このようにして、すべてのIDがカウントされると確信しています。
IDは並べ替える必要があることに注意してください。そうしないと、IDは複数回カウントされますが、配列式とは異なり、1500 rowsスプレッドシートでも非常に高速です。