別のテーブルのサブクエリとなるテーブルを作成する

別のテーブルのサブクエリとなるテーブルを作成する

スタッフ データの大きなテーブルがあり、メイン データ セットからフィルターされたデータ セットを含むテーブルを他のワークシートに作成したいと考えています。私は広範な VBA マクロの作成経験があり、データベースと SQL で必要な作業は数分で完了しますが、ブーツで蟻塚を狙っているような気分です。

ピボット テーブルを使用して実行してみましたが、ピボット テーブルの経験が浅く、満足のいく結果が得られませんでした。

大規模なスタッフ データ セットには、開始日、現在の部署、専門スキル セットなどの情報 (通常予想される情報) が含まれています。

たとえば、X 部門で働くすべてのスタッフや、Y の専門スキルを持つすべてのスタッフを表示する動的なテーブルを他のワークシートに作成したいと思います。当然、メイン データ セットでデータが変更または追加されたときに、ワークシート テーブルを更新する必要があります。

ここに簡単な解決策があると考えるのは正しいでしょうか、それとも実際の DB を使用してそれを追求する必要がありますか?

答え1

Excel 関数に基づいて、ソース テーブルから別のテーブルにレコードをフィルター/抽出する方法を提案したいと思います。

ソーステーブル:

ここに画像の説明を入力してください


ここに画像の説明を入力してください


使い方:

  • 条件セルが空白の場合、数式はレコードを返しません。
  • 数式は単一の条件でも複数の条件でも機能します。

状況1:

ここに画像の説明を入力してください

状況2:

ここに画像の説明を入力してください

  • セル内の配列数式B31:

{=IFERROR(IF(AND(ISBLANK($B$27),ISBLANK($C$27),ISBLANK($D$27),ISBLANK($E$27),ISBLANK($F$27),ISBLANK($G$27),ISBLANK($H$27))," ",INDEX($B$2:$H$21,SMALL(IF(MMULT(($B$2:$H$21=$B$27:$H$27)*1,{1;1;1;1;1;1;1})=COUNTA($B$27:$H$27),MATCH(ROW($B$2:$B$21),ROW($B$2:$B$21)),""),ROWS($A$1:A1)),COLUMNS($A$1:A1))),"")}

  • フォーミュラを仕上げるCtrl+Shift+Enter& 横に塗りつぶします。

  • この演習の重要な特徴はMMULT機能です。
  • MMULT (行列乗算) は、2 つの配列の行列積を返します。
  • 配列1の列数は配列2の行数と同じです。
  • 配列結果には、配列1 と同じ数の行と、配列2 と同じ数の列が含まれます。

必要に応じて数式内のセル参照を調整します。

関連情報