Kevalには、22の学習コースに分散した5,000人を超える学生のテーブルがあります。この表の各行の各学生の名前に対して、学生が登録されているコースが示されています。 Kevalは、別のワークシートで、セルA1にコース名を入力し、3行目から、リストから取得したそのコースのすべての学生をExcelで表示したいと考えています。彼は、数式でこれを行う方法があるかどうか疑問に思います。

この問題の最善の解決策は、主に、ソースデータの編成方法に依存することです。列が2つ(学生名とコース名)しかない場合は、2番目のワークシートを使用する必要さえない可能性があります。代わりに、Excelのフィルタリング機能を使用して取得できます。コース名を含む列の内容をフィルタリングするだけで、表示される内容をコース内の学生のみに簡単に制限できます。

2番目のワークシートに情報を表示する必要がある場合は、配列数式を使用して生徒を抽出するのが最適な場合があります。セルA1に目的のコースを入力し、次にセルA3に次の数式を入力します。

=IF(COUNTIF(Sheet1!$B$1:$B$5000,$A$1)<ROW()-2,"", INDEX(Sheet1!$A$1:$A$5000,SMALL(IF(Sheet1!$B$1:$B$5000=$A$1, ROW(Sheet1!$B$1:$B$5000)),ROW()-2)))

覚えておいてください。これは単一の数式であり、Ctrl + Shift + Enterを押してセルに入力する必要があります。最大のクラスに対応できる十分なセルに数式を下向きにコピーします。この式は、行1から5000のソースデータも想定しています。そうでない場合は、適切な範囲を反映するように数式を変更する必要があります。

別のアプローチは、学生/コースリストに基づいてピボットテーブルを作成することです。必要なのは、コース名と学生名の両方のフィールドがピボットテーブルの「行」領域にあることを確認することだけです。最初にコース名フィールドを配置し、次に学生名フィールドを配置すると、各コース名の下に学生が含まれるすべてのコースのリストが表示されます。

ソースデータに追加情報(成績、住所、本の割り当てなど)が関連付けられている場合は、Accessなどの実際のデータベースプログラムの使用を検討することをお勧めします。 Excelよりも優れたツールを使用してデータを操作および抽出できるようになります。

_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(12347)は、Microsoft Excel 2007および2010に適用されます。Excelの古いメニューインターフェイス用のこのヒントのバージョンは、次の場所にあります。