重複するデータで一意の入力値の個数を数える

重複するデータで一意の入力値の個数を数える

重複する値が入力されているデータ範囲に、一意の値が何種類あるかを数えることが必要な場合があります。たとえば、列に次のようなデータが入力されている場合を考えてみます。

  • 5、6、7、6 という数値が入力されている場合、一意の値は  5、6、7 の 3 種類です。

  • "Bradley"、"Doyle"、"Doyle"、"Doyle" という値が入力されている場合、一意の値は "Bradley" および "Doyle" の 2 種類です。

重複する値があるデータから一意の値が何種類あるかを数える方法には、いくつかの方法があります。

目的に合ったトピックをクリックしてください

フィルタを使用して一意の値の個数を数える

関数を使用して一意の値の個数を数える

フィルタを使用して一意の値の個数を数える

[フィルター オプションの設定] ダイアログ ボックスを使用して、データ列から一意の値を抽出し、別の場所に貼り付けることができます。その後、ROWS 関数を使用すると、新しい範囲にある項目の件数を数えることができます。

  1. 操作対象とするセル範囲を選択するか、テーブルにアクティブなセルがあることを確認します。

    選択したセル範囲に列見出しがあることを確認します。

  2. [データ] タブの [並べ替えとフィルター] で [詳細設定] をクリックします。

    [フィルター オプションの設定] ダイアログ ボックスが表示されます。

  3. [指定した範囲] をクリックします。

  4. [抽出範囲] ボックスに、セル参照を入力します。

    または、 ボタンの画像 (ダイアログ縮小) をクリックして一時的にダイアログ ボックスを非表示にし、ワークシート上のセルを選択してから、 ボタンの画像 (ダイアログ展開) をクリックします。

  5. [重複するレコードは無視する] チェック ボックスをオンにし、[OK] をクリックします。

    選択した範囲内の一意の値が、[抽出範囲] ボックスで指定したセルを基点として新しい位置にコピーされます。

  6. 範囲の最後に表示されたセルの下の空白のセルに、ROWS 関数を入力します。コピーした一意の値がある範囲 (列見出しを除く) を引数として使用します。たとえば、一意の値がある範囲が B2:B45 の場合、「=ROWS(B2:B45)」のように入力します。

ページの先頭へ

関数を使用して一意の値の個数を数える

この処理を実行するには、IF 関数、SUM 関数、FREQUENCY 関数、MATCH 関数、および LEN 関数の組み合わせを使用します。

  • IF 関数を使用して、条件が満たされた場合に 1 を返します。

  • SUM 関数を使用して、合計を算出します。

  • FREQUENCY 関数を使用して、一意の値の個数を数えます。FREQUENCY 関数では、文字列と 0 (ゼロ) は無視されます。この関数は、ある値の最初の出現時にその値の出現回数を返します。2 回目以降の出現時には 0 (ゼロ) を返します。

  • MATCH 関数を使用して、範囲内の文字列の位置を返します。ここで返された値は FREQUENCY 関数の引数として使用されるため、対応する文字列を評価できます。

  • LEN 関数を使用して、空白セルを検出します。空白セルの値の長さは 0 (ゼロ) です。

使用例は空白のワークシートにコピーすると、計算結果を確認できます。

その方法は?

  1. 空のブックまたはワークシートを作成します。

  2. ヘルプ トピックから使用例を選択します。

    注: 行見出しまたは列見出しは選択しないでください。

    ヘルプから使用例を選択する

    ヘルプから使用例を選択する

  3. Ctrl キーを押しながら C キーを押します。

  4. ワークシートのセル A1 を選択し、Ctrl キーを押しながら V キーを押します。

  5. 計算結果の表示と、結果を返す数式の表示を切り替えるには、Ctrl キーと Shift キーを押しながら ` (アクサン グラーブ) キーを押すか、または [数式] タブの [ワークシート分析] グループで、[数式を表示] をクリックします。

1

2

3

4

5

6

7

3.6

9

10

A

B

データ

データ

986

Bradley

Doyle

563

67

789

235

Bradley

Doyle

689

789

Doyle

143

56

237

67

235

数式

説明 (計算結果)

=SUM(IF(FREQUENCY(A2:A10,A2:A10)>0,1))

セル A2 から A10 にある一意の数値の個数を数える。空白のセルや文字列は数えない (4)。

=SUM(IF(FREQUENCY(MATCH(B2:B10,B2:B10,0),MATCH(B2:B10,B2:B10,0))>0,1))

セル B2 から B10 にある一意のテキストと数値の個数を数える (この範囲内に空白セルはないものとする) (7)。

=SUM(IF(FREQUENCY(IF(LEN(A2:A10)>0,MATCH(A2:A10,A2:A10,0),""), IF(LEN(A2:A10)>0,MATCH(A2:A10,A2:A10,0),""))>0,1))

セル A2 から A10 にある一意のテキストと数値の個数を数える。空白のセルや文字列は数えない (6)。

メモ    

  • この例の数式は、配列数式として入力する必要があります。数式を含む各セルを選択し、F2 キーを押し、Ctrl キーと Shift キーを押しながら Enter キーを押します。

  • 式の評価をステップ バイ ステップで確認するには、数式が含まれるセルをクリックし、[数式] タブの [ワークシート分析] で [数式の検証] をクリックします。

関数についての詳細情報

  • FREQUENCY 関数は、範囲内でのデータの頻度分布を、縦方向の数値の配列として返します。たとえば、FREQUENCY 関数を使うと、試験の成績の範囲内に含まれる成績の頻度分布を計算することができます。このメソッドでは、値は配列として返され、配列数式として入力されます。

  • MATCH 関数は、セルの範囲内で指定された項目を検索し、その項目の相対的な位置を返します。たとえば、範囲 A1:A3 に値 5、25、および 38 が含まれる場合、数式 =MATCH(25,A1:A3,0) は数値 2 を返します。 これは、25 が範囲内で 2 番目の項目であるためです。

  • LEN 関数は、文字列の文字数を返します。

  • SUM 関数は、引数として指定した数値を合計します。各引数には、セル範囲、セル参照、配列、定数、数式、または別の関数の結果を指定できます。たとえば、SUM(A1:A5) はセル A1 から A5 に含まれるすべての数値を合計します。

  • IF 関数は、指定された条件を評価した結果が TRUE の場合は特定の値を返し、評価した結果が FALSE の場合は別の値を返します。

ページの先頭へ

注記: 

  • 機械翻訳についての免責事項: この記事の翻訳はコンピューター システムによって行われており、人間の手は加えられていません。マイクロソフトでは、英語を話さないユーザーがマイクロソフトの製品、サービス、テクノロジに関するコンテンツを理解するのに役立てるため、こうした機械翻訳を提供しています。記事は機械翻訳されているため、用語、構文、文法などに誤りがある場合があります。

  • この記事の英語版を参照するには、ここ をクリックしてください。Microsoft コミュニティの他のメンバーと一緒に、Community Translation Framework (CTF) を使ったこの記事の改善にご協力ください。記事内の文章にマウス ポインターを合わせて、CTF ウィジェットの [翻訳を改善します] をクリックしてください。CTF の詳細については、ここ をクリックしてください。CTF を使用すると弊社の サービス利用規約 に同意したことになります。

スキルを磨く
トレーニングの探索
新機能を最初に入手
Office Insider に参加する

この情報は役に立ちましたか?

ご意見をいただきありがとうございます。

フィードバックをお寄せいただき、ありがとうございます。Office サポートの担当者におつなぎいたします。

×