みなさん,こんにちは。
シンノユウキ(shinno1993)です。
食品標準成分表をPower Queryで整形する方法について,連載形式で紹介しています。
前回の記事はこちら
別表のデータをダウンロードし,それをすべて整形しました。
今回は,特定のシートにしかないレコードの抽出を行っていきます。具体的には,アミノ酸成分表にしかないレコードを抽出し本表に追加する作業を行います。
というのも,食品標準成分表は本表にすべての食品が含まれているわけではありません。本表のレコード数は2,478件ですが,索引番号は2,481まであります。つまり,別表のみに含まれる食品が3つああることを示しています。食品標準成分表2020年版(八訂)の第1章にも下記のように説明があります:

せっかく食品標準成分表を計算可能な形にするのであれば,こういったデータについても計算可能にしたいところ。本表データに別表を結合していく場合,別表にしかないレコードを追加しておかないと,3つの食品についてはデータを結合できなくなります。
前書きが長くなりましたが,今回はアミノ酸成分表にしかないレコードの抽出と本表への追加について紹介します。
では行きましょう!
別表のみに含まれるレコードを抽出する方法
抽出したいレコードが含まれるテーブルに除外したいテーブルが含まれるシートを結合させ,結合時にデータが紐付けられなかったレコードのみフィルタリングで抽出するようにします。
ステップ①:アミノ酸成分表に本表データを結合する
まずはアミノ酸成分表(別表)に本表のデータを結合します。
①「クエリ」→②「結合」を選択します:

結合したいテーブルと照合する列を選択するダイアログが表示されます。
下記を参照し,操作してください:

- 抽出したいレコードが含まれるテーブルを選択します。今回はアミノ酸成分表のみに含まれるレコードを抽出したいので,「アミノ酸」を選択します
- 照合列を選択します。「索引番号」で紐付けていきましょう。
- 除外したいレコードが含まれるテーブルを選択します。「本表」を選択します。
- 照合列を選択します。上と同じく「索引番号」を選択します。
- 「OK」をクリックします。
ステップ②:本表データを展開する
本表が結合できたら,今度はそれを展開していきます。
①末尾の列:「本表」の展開ボタンをクリック→②「索引番号」のみにチェック(他のチェックを外す)→③「OK」をクリックします:

これで本表のデータが展開できました。
ステップ③:本表データがないレコードのみ抽出する
ではいよいよ,本表のデータがないレコードのみ抽出していきます。
①列:「本表.索引番号」のフィルターボタンをクリック→②「昇順で並び替え」をクリックします:

そして,①再度,列:「本表.索引番号」のフィルターボタンをクリック→②「(null)」だけにチェック→③「OK」をクリックします:

これで,本表データで紐付けられなかったレコードが抽出できました!
ステップ④:不要な列を削除する
別表のみに含まれるレコードを抽出したら,今度は本表にそのレコードを追加します。本表に追加できるよう,不要な列を削除しましょう。「食品群」・「食品番号」・「索引番号」・「食品名」があれば,他の列は不要です:

上記までが完了したら,「保存して閉じる」でデータを読み出しましょう。
ステップ⑤:本表にレコードを追加する
最後に「本表」に上記までで抽出したレコードを追加していきます。
①「クエリ」→②「追加」をクリックします:

そして,①「2つのテーブル」→②「本表」→③「アミノ酸のみの食品」→④「OK」をクリックします:

これで,2つのテーブルうが結合した1つのテーブルができました。並び順が変わってしまいましたので,「索引番号」を「昇順で並び替え」しておきましょう:

またクエリ名も本表とアミノ酸成分表のみに含まれるレコードを結合したものなので,「本表+アミノ酸のみ」とでも変更しておきましょう:

最後に「保存して閉じる」でデータを読み出しましょう。下記のように2,481行(本表2,478行+アミノ酸のみ3行)となっていればOKです:

まとめ
今回は今回はアミノ酸成分表にしかないレコードを抽出し,それを本表に追加する方法について紹介しました。
次回は,本表に別表のデータを結合する方法について紹介したいと思います。
連載目次
- 食品標準成分表をPower Queryで整形する方法【栄養士向け】
- 栄養士のためのPower Query基礎知識【できること・メリット】
- 栄養士のためのPower Query超入門【インポート・変換・書き出し】
- Power Queryで複数のシートを縦に結合する方法
- Power Queryで不要な行・列を削除する方法【データクリーニング】
- Power Queryで値を置換する方法【完全一致と部分一致】
- Power Queryで食品標準成分表の別表のデータを整形する方法
- Power Queryで特定シートのみに含まれるレコードを抽出する方法現在のページ
- Power Queryで複数のシートを横に結合する方法【クエリのマージ】
- Power Queryでファイルパスを相対パスで指定する方法