「取得と変換」の機能は、"VLOOKUP関数" の代わりに使うことができます
- 「項目」の内容を「別の表」を参照して入力する「表引き」は便利
- 「取得と変換」を使った「表引き」は、やり直しができる
- 「氏名」のフィールド(項目)を、「CODE表」から表引きする
- 1."VLOOKUP関数" で表引きする
- 2・"取得と変換" で表引きする
- 作成されたシートを「修正」する
- "XLOOKUP関数" はさらに便利になりました
「項目」の内容を「別の表」を参照して入力する「表引き」は便利
表にデータを入力する際に、「一覧表を参照」して一致した内容を入力する「表引き」は入力効率が上がる便利な機能です。
「code」を入力するだけで「氏名」が表示される
「表引き」には通常"VLOOKUP関数"を用いる
「表引き」には通常 "VLOOKUP関数" を使いますが、その他にもいくつかの方法があります。
Excel2016から追加された新しい機能「取得と変換」は、"複数の表を結合" するだけではなく、VLOOKUP関数のように「表引き」することができます。
「取得と変換」を使った「表引き」は、やり直しができる
「取得と変換」を使って"表引きする" 方法は、VLOOKUP関数を使う場合と比較して手順(工数)は多く複雑な操作になってしまいますが、「取得と変換」を使う方法は "元の表には手を加えない" 、"操作内容を「クエリ」として保存する" という特徴があり、何度もやり直すことができるのがメリットです。
「氏名」のフィールド(項目)を、「CODE表」から表引きする
「code」のフィールド(項目)を入力するだけで、「氏名のフィールドが "code表" から表引きで表示」する方法には複数あり、それぞれに特徴があります。
- 「VLOOKUP関数」を使う方法
- 「取得と変換」を使う方法
1."VLOOKUP関数" で表引きする
VLOOKUP関数を使えば「code」を入れるだけで「氏名」を表示させる "表引き" が簡単にできます。
"同じシート" にある「表」を参照
今回の例では「"同じシート"にある表」を参照しましたが、「"別のシート"や"別のブック(ファイル)"にある表」を参照することもできます。
"別のブック(ファイル)" にある「表」を参照
同一のシートにある「表」だけではなく、別のブック(ファイル)にある「表」を参照することもできます。
しかし、別のファイルの「表」を指定する場合は「そのブック(ファイル)を開いておく必要がある」など多少操作が面倒です。
2・"取得と変換" で表引きする
「取得と変換」はExcel2016から "標準機能" になりましたが、実際は外部プログラム(アドイン)として機能します。
プログラム名は "Power Query(クエリ)" で、Excelからデータを抽出することができます。
※ 外部プログラム(アドイン)とExcelは連動して動作しますが、現時点では何度もやり直しをすると誤動作を起こす場合もあります。
Power Queryでデータを抽出する
データタブの「データの取得」の機能から、外部プログラム(アドイン)のPower Queryを呼び出します。
- 「データタブ」を選択
- 「データの取得」をクリック
- プルダウンメニューから「ファイルから」を選択
- プルダウンメニューから「ブックから」を選択
- データの取り込みダイアログで"表引きしたい表が含まれるファイル”「社員別売上」を選択
- 「インポート」をクリック
"ナビゲーター" で、「変換する表があるシート」を選択
「ナビゲーター」の画面では、ファイル(ブック)に含まれる「シート」の一覧が表示されます、その中から目的のシートを選択します。
- 変換する表があるシート「masuter」を選択
- 「master」が選択されているのを確認(※ "空欄" は「null」で表示)
- 「データの変換」をクリック
"Power Query エディター" が開きます
「氏名」の項目を入力するために「参照する表が含まれるファイル」を "クエリに追加" します。
- 「新しいソース」をクリック
- プルダウンメニューから「ファイル」を選択
- プルダウンメニューから「Excel」を選択
- データの取り込みダイアログで変換に使用するDATAの「CODE表」が含まれるファイル「社員別売上」を選択(※ 今回の場合は「master」と同じファイル)
- 「OK」ボタンをクリック
ナビゲーターで参照用の表「code表」を選択
ナビゲーターで参照するために使用する「code表」があるシートを選択
- ナビゲーターで「code表」のシートを選択
- 「データの変換」をクリック
「タイトル行(ヘッダー)」を設定する
表の "タイトル行が「1行目」になっていない(空白行がある)場合" は「1行目を ヘッダーとして使用」をクリック(※ 空白行(null)が複数ある場合は、複数回)して、「タイトル行」が「ヘッダー」になるようにします。
- 追加されたクエリ「code表」を選択
- 「1行目をヘッダーとして使用」を "2回" クリック
※ 「表」を作成する場合、「A1」のセルを表の左上にするようにしましょう
"変換用のDATA"用のクエリ「code表」をマージ
変換する表のクエリ「master」と変換用のDATAのクエリ「code表」をマージします。
- クエリ一覧から、変換するクエリ「master」を選択
- 「クエリのマージ」をクリック
- マージするクエリ「code表」を選択
マージの「基準にする列」を選択します
マージの "基準にする列" にする「code」を選択します。
"ヘッダーの部分をクリック" すると「項目(列)」が選択状態になります。
- 「master」のヘッダーの「code」部分をクリックして選択
- 「code表」のヘッダーの「code」部分をクリックして選択
- 「OK」をクリック
「code」を基準にして、データを展開します
変換用に追加された項目「code表」のタイトル部分にある「ボタン」をクリックして、どの「項目」を参照(展開)の対象にするかを指定します。
- マージで追加された「code表」の "ヘッダー" 部分の「ボタン」をクリック
- ダイアログで「展開」にチェック
- 「すべての列の選択」のチェックを外す
- 「氏名」にチェックを入れる
- 「OK」ボタンをクリック
「氏名」の項目が、「code表」を参照して入力されました
「code表(3)氏名」の項目が、"code表" を参照(表引き)して入力されました。
Power Queryを閉じて、Excelに読み込みます
Power Queryを閉じると、開いている(「取得と変換」を実行した)ブックに変換した新しいシートが作成されます。
- 「ファイル」タブの「閉じて読み込む」をクリック
新しいシートが作成されました
開いていたブックに、フィールド(項目)が追加され、「氏名」の内容が「code表」を参照(表引き)して入力されています。
作成されたシートを「修正」する
作成された(追加された)シートは、クエリによって新たなフィールド(項目)「code表(3)氏名」が追加されています。
もとからあった「氏名」のフィールドも残っているので、不要になったフィールドを削除します。
通常通り、Excelの画面で編集しても問題はありませんが、追加されたシートは「クエリ」と連携(連動)しています。
クエリを修正(編集)しておけば、同じ作業を繰り返すときに便利なので "クエリ" を編集(修正)しておきます。
追加された「シート」は"クエリ"と連携している
クエリ(Power Query)で作成した(追加した)シートは、再度Power Queryを使って編集することができます。
"Power Query"を立ち上げる
表の部分の「セル」をクリックして選択すると、「クエリのタブ」が表示されます。
クエリタブで「編集」をクリックすることで、Power Queryが立ち上がります。
- "表" のどこか1カ所を選択する
- 「クエリ」タブを選択
- 「編集」をクリック
フィールド(項目)を移動する
ヘッダー(項目名)の部分を 「ドラッグ」することで "フィールド(項目)を移動" することができます。
- 一番右にある「code表(3)氏名」を、左から2番目に移動(ドラッグ)する
フィールド(項目)を削除する
削除したい項目「氏名」のヘッダー部分をクリックすることで、列全体が選択状態になるので、「列の削除」コマンドで列(項目)を削除します。
- 削除する「氏名」のヘッダー部分をクリックして選択
- 「列の削除」をクリック
- 「閉じて読み込む」をクリックして、Power Queryを終了します。
「シート」が修正されました
Power Queryが終了し、シートが修正されました。
このように「取得と変換」を使って「表引き」をすることができます。
VLOOKUP関数を使うより手順(工数)は多くなってしまいますが、「取得と変換(Power Query)」を使う方法には、VLOOKUP関数を使う方法と比較していくつかのメリットがあります。
- 参照する範囲を気にしなくて良い
- 作成した「数式」をコピーする必要がない
- 元の「表」にはいっさい手を加えない
- 「クエリ」として保存されるので、同じ操作を繰り返しできる
- クエリの「ステップ」を戻って修正できる
いろいろなメリットがありますが、とくに5番目の「ステップを戻る」機能は、表引きの対象にする「列」を修正する場合に便利です。
クエリの「ステップ」を戻す
"クエリの設定" ダイアログの「適用したステップ」のボックスで、ステップを「マージされたクエリ」まで戻すことで、表引きする「項目」を選択し直すことができます。
"XLOOKUP関数" はさらに便利になりました
表引きに使う関数としては、VLOOKUP関数が多く用いられますが、使いにくい点(欠点)もあります。
それを補う形で、Office(Excel)2019とOffice365では新しく"XLOOKUP関数" が追加されました。
- 「項目」の内容を「別の表」を参照して入力する「表引き」は便利
- 「取得と変換」を使った「表引き」は、やり直しができる
- 「氏名」のフィールド(項目)を、「CODE表」から表引きする
- 1."VLOOKUP関数" で表引きする
- 2・"取得と変換" で表引きする
- 作成されたシートを「修正」する
- "XLOOKUP関数" はさらに便利になりました