Excelで条件に基づいて動的なリストを作成する方法(3つの方法)

  • これを共有
Hugh West

今日は、Excelで単一または複数の条件に基づいて動的なリストを作成する方法を紹介します。

練習用ワークブックをダウンロードする

条件に基づく動的リスト.xlsx

Excelのダイナミックリストとは?

ダイナミックリストとは、データセットから作成され、元のデータセットの値が変更されたり、元のデータセットに新しい値が追加されたりすると、自動的に更新されるリストである。

を超える点数を獲得した生徒の名前のリストがあります。 60 を試験的に行っています。

ここで、ジェニファー・マーロのマークを、"S "から "M "に変えると、"S "になります。 68 まで 58 そして、ロス・スミスという新しい生徒を追加し、マークを付けます。 81 を選択すると、リストが自動的に調整されます。

これをダイナミックリストと呼びます。

Excelで条件に基づいて動的なリストを作成する3つの方法

ここでは、データセットに 学生証のことです。 名前 マークス ひまわり幼稚園と呼ばれる学校の一部の生徒のことです。

今日の目的は、このデータセットの条件に基づいて動的なリストを作成することです。 今日は、単一条件と複数条件の両方を使用します。

1.FILTER関数とOFFSET関数の使い方(Excel新バージョン用)

まず最初に、このような組み合わせで フィルター , オフセット そして COUNTA の機能を使用することができます。

があります。 フィルター 関数は オフィス365 をお持ちの方のみが対象となります。 オフィス365 のサブスクリプションが必要です。

ケース1:単一の基準で判断する場合

を超える平均点の生徒のリストをダイナミックに作ってみよう。 60 .

この計算式を使うことができます。

=FILTER(OFFSET(C5,0,0,COUNTA(C:C)-1,1),OFFSET(D5,0,0,COUNTA(D:D)-1,1)>=60)

以上取得した生徒のリストをご覧の通りです。 60 .

そして、明らかにこれは動的なリストです。 データセットの値を変更したり、データセットに新しい値を追加したりすることができます。

リストは自動的に調整されます。

計算式の説明

  • COUNTA(C:C) は、C列のうち空白でない行の数を返す。 つまり COUNTA(C:C)-1 を含まない値を持つ行の数を返します。 カラムヘッダー ( 生徒名 この例では)。
  • を持っていない場合 カラムヘッダー を使用します。 COUNTA(C:C)
  • offset(c5,0,0,counta(c:c)-1,1) セルから始まる C5 (最初の生徒の名前) と、すべての生徒の名前の範囲を返します。
  • があります。 オフセット 関数と組み合わせて使用します。 COUNTIF機能 は、数式をダイナミックに保つために使用されています。 データセットにもう一人生徒が追加されると COUNTA(C:C)-1 の式で増加します。 1 とのことです。 オフセット 関数は、学生を含むことになります。
  • 同様に OFFSET(D5,0,0,COUNTA(D:D)-1,1)>=60 収益 以上であるすべてのマークに対して 60 .
  • 最後に FILTER(OFFSET(C5,0,0,COUNTA(C:C)-1,1),OFFSET(D5,0,0,COUNTA(D:D)-1,1)>=60) を超える点数を取得したすべての学生のリストを返します。 60 .
  • データセットに新しい生徒が追加された場合。 COUNTA(C:C)-1 によって増加する。 1 であり、また フィルター 関数は、それを含む計算をリフレッシュします。
  • そのため、数式は常にダイナミックなままです。

マークを名前と一緒にリストで取得したい場合は、第一引数の第五引数を変更するだけです。 オフセット からの関数 1 まで 2 .

=FILTER(OFFSET(C5,0,0,COUNTA(C:C)-1,2),OFFSET(D5,0,0,COUNTA(D:D)-1,1)>=60)

ケース2:複数の基準で判断する場合

今回は複数の条件で試してみましょう。

60点以上の点数を取った生徒のうち、IDが以下の生徒のリストをダイナミックに作成してみます。 200 .

この計算式を使うことができます。

=FILTER(OFFSET(C5,0,0,COUNTA(C:C)-1,1),(OFFSET(D5,0,0,COUNTA(D:D)-1,1)>=60)*(OFFSET(B5,0,0,COUNTA(B:B)-1,1)<=200)))

を超える点数を獲得した生徒のリストが出来上がりました。 60 を持ち ID 下回る 200 .

そして言うまでもないが、これはダイナミックなリストである。

値を変更したり、データセットに新しい生徒を追加すると、リストが自動的に調整されます。

計算式の説明

  • ここでは、2つのダイナミックレンジの基準を掛け合わせています。 (OFFSET(D5,0,0,COUNTA(D:D)-1,1)>=60)*(OFFSET(B5,0,0,COUNTA(B:B)-1,1)<=200)となります。
  • を超える場合 2 を、すべての基準の範囲に同じように掛けてください。
  • あとは先ほどの例(単一基準)と同じです。 オフセット 関数と組み合わせて使用します。 COUNTA 関数は、数式をダイナミックに保つために使用されています。

リスト内のすべての列を表示したい場合( B列、C列 D この例では) の第一引数を変更します。 オフセット 関数を最初の列 ( B5 この例では)、第5引数に列の総数( 3 この例では)。

=FILTER(OFFSET(B5,0,0,COUNTA(C:C)-1,3),(OFFSET(D5,0,0,COUNTA(D:D)-1,1)>=60)*)

(OFFSET(B5,0,0,COUNTA(B:B)-1,1)<=200))です。

続きを読む: Excel テーブルから動的なリストを作成する(3つの簡単な方法)

2. INDEX-MATCHを他の関数と併用する(旧バージョン用)

をお持ちでない方 オフィス365 サブスクリプションは、上記の数式を使用することはできません。

古いバージョンのExcelをお使いの方のために、より複雑な方法をお見せします。 index-match、offset、small、if、row、countif。 COUNTIFS ただし、これらの数式は配列数式なので、古いバージョンのExcelで適用する場合は Ctrl+Shift+Enter をEnterではなく、Enterで入力します。

ケース1:単一の基準で判断する場合

60点以上の生徒の動的リストを作成する式は次のようになります。

=INDEX(OFFSET(C5,0,0,COUNTA(C:C)-1,1),MATCH(SMALL(IF(OFFSET(D5,0,0,COUNTA(D:D)-1,1)>=60.COUNTA(D:C)-1,1),SMALL(IF(OFFSET(C5,0,0),COUNTA(D:D)-1,1)>=60,

OFFSET(D5,0,0,COUNTA(D:D)-1,1),""),ROW(A1:INDIRECT("A"&COUNTIF(D:D,">=60"))),OFFSET(D5,0,0,COUNTA(D:D)-1,1), 0),1)...

を超えた生徒の名前を再び取得しました。 60 .

今回は数字の昇順にしました。

そして、はい、リストは動的です。 データセットに新しい学生を追加する、またはデータセット内の任意の学生のマークを変更します。

リストは自動的に調整されます。

計算式の説明

  • こちら C:C は、リストの内容を抽出したい列です ( 生徒名 この例では)自分のものを使う。
  • D:D は基準がある列( 平均点 この例では)自分のものを使う。
  • C5 D5 は、私のデータが開始されたセルです。 カラムヘッダー を使用する。
  • ">=60" が私の基準です(Greater than or equal to)。 60 この例では)自分のものを使う。
  • これらの変更以外には、式の残りの部分を変更せずに、データセットで使用してください。 目的の基準に従って、動的なリストが得られます。

ケース2:複数の基準で判断する場合

があります。 INDEX-MATCH 複数の条件に基づくダイナミックリストの計算式は、もう少し複雑です。 それでも、私はそれを示しています。

以上の点数を取った生徒の名前を取得するための公式 60 が、ある。 ID 下回る 200 になります。

=INDEX(OFFSET(C5,0,0,COUNTA(C:C)-1,1),MATCH(SMALL(IF((OFFSET(D5,0,0,COUNTA(D:D)-1,1)>=60)*)))

(OFFSET(B5,0,0,COUNTA(B:B)-1,1)<=200),OFFSET(D5,0,0,COUNTA(D:D)-1,1),""),ROW(A1:INDIRECT("A"&COUNTIFS(B:B,"=60")))),OFFSET(D5,0,COUNTA(D:D)-1,1), 0),1)...

計算式の説明

  • こちら C:C は、リストの内容を抽出したい列です ( 生徒名 この例では)自分のものを使う。
  • B:B D:D は、基準が存在する列( 学生証 平均点 この例では)自分のものを使う。
  • B5、C5。 D5 は、私のデータが開始されたセルです。 カラムヘッダー を使用する。
  • ここでは、2つの基準を掛け合わせました。 (OFFSET(D5,0,0,COUNTA(D:D)-1,1)>=60)*(OFFSET(B5,0,0,COUNTA(B:B)-1,1)<=200)となります。 .基準が2つ以上ある場合は、適宜倍数にしてください。
  • 今回もこの中の2つの基準で COUNTIFS 関数を使用します。 countifs(b:b,"=60") . 自分のものを適宜使うのです。
  • 残りの数式は変更せずに、データセットで使用します。 複数の条件を持つ動的なリストが得られます。

続きを読む: ExcelのVBAを使った動的なデータ検証リストの作り方

3.データ検証ツールを使って、条件に基づいた動的なドロップダウンリストを作成する

これでダイナミックリストが出来上がりました。 必要であれば ダイナミックドロップダウンリストの作成 をワークシートの任意のセルに入力します。

  • ダイナミックドロップダウンリストを作成するには、ワークシートの任意のセルを選択し、次のコマンドを実行します。 データ> データバリデーション> データバリデーション の下に データツール のセクションをご覧ください。

  • を手に入れることができます。 データバリデーション ダイアログボックスの下にある 許可する オプション、選択 リスト そして、その下には 出典 オプションで、ワークシートのリストがある最初のセルの参照先を ハッシュタグ (#) ( $E$5# この例では)。

  • をクリックします。 よっしゃー 選択したセルに、次のようなドロップダウンリストが表示されます。

続きを読む: ExcelでVBAを使用して動的なドロップダウンリストを作成する方法

Excelで条件に基づいて動的な一意のリストを作成する方法

このセクションでは、条件に基づいてExcelでユニークなリストを作成する方法を紹介します。 ここでは、以下の組み合わせを使用します。 UNIQUE フィルター データセットを修正し、各生徒の好きなゲームを追加した。 ここで、基準で重複を取り除いたゲーム名を知りたい。 基準は、生徒の平均点数が 60 .

📌 ステップス

  • の組み合わせに基づいた計算式を入れてください。 UNIQUE フィルター に関する関数 セルG5 .
=UNIQUE(FILTER(E5:E25,(D5:D25>60)))

条件に基づき、独自のリストを取得します。

計算式の説明

  • FILTER(E5:E25,(D5:D25>60)

の値をフィルタリングします。 レンジE5:E25 平均点以上であることを条件とする。 60 .

結果:【テニス、バレーボール、ラグビー、テニス、サッカー、ラグビー、サッカー】。

  • UNIQUE(FILTER(E5:E25,(D5:D25>60)))

これは、前の結果からすべてのユニークな値を返します。

結果:【テニス、バレーボール、ラグビー、サッカー

結論

これらのメソッドを使用すると、Excelの任意のデータセットで単一または複数の条件に基づいて動的なリストを作成することができます。 当社のウェブサイトをご覧ください。 エクセルウィキ をクリックし、コメント欄にご意見をお寄せください。

Hugh West は、業界で 10 年以上の経験を持つ、非常に経験豊富な Excel トレーナー兼アナリストです。彼は会計と財務の学士号と経営管理の修士号を取得しています。ヒューは教えることに情熱を持っており、理解しやすい独自の教育アプローチを開発しました。彼の Excel に関する専門知識は、世界中の何千人もの学生や専門家がスキルを向上させ、キャリアで優れた成果を上げるのに役立ってきました。 Hugh はブログを通じて知識を世界に共有し、個人や企業が潜在能力を最大限に発揮できるよう無料の Excel チュートリアルとオンライン トレーニングを提供しています。