web-dev-qa-db-ja.com

範囲内の異なる値の数を数える方法は?

私はすでにフィルタなどを使って整理された大きなテーブルを持っています。その列の中に異なる値の数を含む特定の列の下に要約を追加したいです。

=COUNTDISTINCT(A2:A100)という関数はありませんので、代わりに何ができますか?(Excel 2003)

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

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

配列式を使用せずにそれを行います。

31
Lance Roberts

私は ここでの解決策 を見つけました。しかしねえ、それはうまくいきます...

= SUM(IF(COUNTIF(A2:A100、A2:A100)= 0、 ""、1/COUNTIF(A2:A100、A2:A100))))

そしてを押す Ctrl+Shift+Enter。押すだけ Enter 間違った結果を与えるでしょう。

2つのリソースが見つかりました。

http://www.excelforum.com/Excel-worksheet-functions/365877-count-distinct-values.html

そして

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

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

1
Sux2Lose

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

=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. [詳細フィルタ]ダイアログボックスで、[別の場所にコピー]をクリックします。
  4. カウントする範囲がまだ選択されていない場合は、[リスト範囲]ボックスの情報を削除してから、データが含まれている列をクリックします(または範囲を選択します)。
  5. [コピー先]ボックスで、ボックス内の情報を削除するかボックス内をクリックしてから、一意の値をコピーする空白の列をクリックします。
  6. Unique records onlyチェックボックスをオンにして、OKをクリックします。

    選択した範囲の一意の値が新しい列にコピーされます。

  7. 範囲内の最後のセルの下の空白セルに、ROWS機能を入力します。引数としてコピーしたばかりの固有値の範囲を使用してください。たとえば、一意の値の範囲がB1:B45の場合は、次のように入力します。
    = ROWS(B1:B45)

1

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

Ctrl + Shift + Enterで確定

セルごとに、それが発生した回数を数え、これらすべての値の逆数を合計します。いくつかの文字列または数字が5回あるとします。その逆数は0.2で、これは5回合計されるので、1が加算されます。最後に、さまざまな値の数を示します。

注:空白があると動作しません!

1
user221470

= SUM(IF(頻度(IF(小計(3、オフセット(A2:A100) - 行(A2:A100) - 行(A2)、0,1))、) "、0))、行(A2:A100) - 行(A2)+1)、1))

この数式を貼り付けた後に、必ずCtrl + Shift + Enterキーを押してください。これはA2:A100の範囲のためです、それに応じて範囲を調整してください。

0
Vlada

このリンクを試してください。これは、空白のセルを省略してリスト内の一意の値を数える方法を示しています。

http://www.functioninexcel.com/lists-arrays/count-unique-values-in-a-list/

= sum(if(frequency(一致(リスト、リスト、0)、一致(リスト、リスト、0))> 0、1))

たとえば、 "List"がセルの範囲です。

List = $ A $ 2:$ A $ 12 OR- List = offset($ A $ 1 , match(rept( "z"、255)、$ A:$ A)) - または - List = offset($ A $ 1、 , match(value(rept( "9"、255))、$ A:$ A))

0
Charles Hunt