みなさん,こんにちは。
シンノユウキ(shinno1993)です。
今回は,「Excelで栄養計算ソフトを自作しよう」の第2回です。以下の記事の続きとなります:
栄養計算ソフトを作成するためには,それ用に最適化された食品成分表が必要になります。
文科省からExcel形式で配布されていますが,これをそのまま栄養計算ソフトの食品成分表として利用することはできません。活用しやすいように,整理する必要があります。
今回は食品成分表をダウンロードし,それを栄養計算に用いることができるように整えるという作業,すなわち食品成分表のダウンロードとデータクリーニングを行っていきます。
では,行きましょう!
楽したい!という方は
ここでは,手作業にて食品成分表をクリーニングする作業を行っていきます。
しかし,それが面倒で,楽したいなーという方は,以下のリンクから,Excelのマクロ機能を用いてクリーニングできる方法を紹介しています。参考にしてください。
前回のおさらい
まずは前回のおさらいから。
前回は,これから作成していく栄養計算ソフトについて,下記の点について紹介しました:
- どんなソフトにするか
- なぜ栄養計算ソフトを自作するのか
いよいよ今回から,実際のソフトの作成に移っていきます。
食品成分表をダウンロードしよう
食品成分表のExcelファイルをダウンロードする
食品成分表は,文部科学省のHPからExcelファイルの形式でダウンロードできます。
今回は,用意されているExcelファイルを少し加工したものを用意しています。下記のボタンからダウンロードしてください。
2015年より前はExcelファイルでのデータは提供されていませんでした。ですので,成分値を利用するのは非常に大変でした。便利な時代になりましたね。
本表のみ利用する
日本食品標準成分表には,一般成分が掲載されている成分表の他に,アミノ酸成分表や脂肪酸成分表,炭水化物成分表などがあります。
今回は簡便化のため,一般成分のみが掲載されている成分表:「本表」のみを利用します。
もし,アミノ酸成分表等についても利用したい場合は,頑張って組み込んでみてください。
食品成分表について
成分表の中身を確認してみよう
食品成分表がダウンロードできたら,そのファイルの中身を確認してみましょう:
こんな感じのExcelファイルが開けましたか?
多くの食品について,エネルギーやたんぱく質などの成分値が記載されています。これらを利用して栄養計算を行っていきます。
このままでは栄養計算に使えない!
ただし,このそのままの状態では栄養計算に利用することはできません。
それは以下のような理由によります:
- 文字列で入力されたデータがある
- 未測定やTrで入力されたデータがある
この画像で,セルの左上に緑の三角が付いているセルがありますよね?この画像だと,「48.0」や「10.0」などです。
こういったデータは文字列で入力されているため,栄養計算に利用することはできません。そのため,こういったデータは修正する必要があります。
小数点以下の「0」を表現しなければならない(有効数字)関係上,このような文字列形式のデータになっていると思われます。
また,Trと入力されているデータもあります。こういった記号や記法にはそれぞれ意味があります:
記号 | 意味 | 栄養計算での扱い (個人的推奨) |
---|---|---|
- | 未測定(0ではない) | 0 もしくは 類似食品で代替 |
0 | 最小記載量の1/10未満または検出されない | 0 |
Tr | 最小記載量の1/10以上かつ5/10未満 | 0 |
(数値) | 推計値 | 数値 |
(0) | 含まれていないと推定される成分 | 0 |
[数値] | 原材料の収載値等と配合割合から栄養計算 の手法を用いて計算された成分値 | 数値 |
こういった意味があるのは理解できますが,残念ながらそのまま栄養計算に用いることはできません。そのため,こういった記号や記法で書かれた箇所も修正する必要があります。
食品成分表のデータをクリーニングしよう
では,これから食品成分表のデータを修正していきましょう。
記号や記法,文字列は次のように修正することにします:
- 「-」「Tr」「(0)」,「(Tr)」→「0」
- 「(数字)」→「数字」
- 「文字列で入力された数字」→「数字」
このように修正することは,かなり強引に思えるかもしれません。しかし,栄養計算を行う上では仕方ない誤差と捉えることもできます。ただし,こういった扱いによって誤差が生じている可能性があることは認識しておく必要があります。
では,順番にやっていきましょう。
「-」「Tr」「(0)」「(Tr)」→0,「(数字)」「[数字]」→数字
まずは,-やTrなどを0に,(数字)は数字に修正していきましょう。
置換で「-」→「0」に
最初は「 -」を「0」に置換します。Excelの機能「置換」を使うと便利です。
置換する範囲(D12:BH2489)を選択し,Ctrl + H で検索と置換画面を開きます。
下記のように検索する文字列と置換後の文字列を入力し,一括で置換します:
- 検索する文字列:- を入力します。
- 置換後の文字列:0 を入力します。
- 「セル内容が完全に同一であるものを検索する」にチェックを入れます。
- 「すべて置換」をクリックします。
置換で「Tr」→「0」に
同様の手順で,「Tr」も「0」に変更します。置換画面で下記を入力し「置換」を行います:
- 検索する文字列:Tr
- 置換後の文字列:0
()を取り除こう
次は()で囲まれた値を変更します。
この場合は()を削除したほうが後々の作業で便利です。
手順は先ほどのと同様で,置換画面で下記を入力し「置換」を行います:
- 検索する文字列: (
- 置換後の文字列:
- セル内容が完全に同一であるものを検索する:チェックを外す
- 検索する文字列: )
- 置換後の文字列:
- セル内容が完全に同一であるものを検索する:チェックを外す
置換後の文字列は空白にしてください。
また,この場合は,「セル内容が完全に同一であるものを検索する」のチェックを外します。
以下の2つの画面になればOKです:
[ ] を取り除こう
最後に [ ] も取り除きます。下記のように,一つずつ置換していきます:
その他の修正すべき文字列
実は上記以外にも,修正すべき文字列があります。それは下記の2つです:
- 数字†
- *
これらの記号が付された成分値は,それぞれ備考欄に注意書きが掲載されています。本来であれば備考欄を参照しつつ利用したいところですが,なかなかそうもいきません。下記のように修正しましょう:
- 「数字†」→数字
- 「~*」→「0」
†は空白で置換すればOKです。*はExcelの検索における特殊記号ですので,「~*」を0で置換するようにします。
これで,大まかなクリーニングは終了しました。後は文字列を数字に修正する作業が残っているだけです。
文字列を数字に修正しよう
まずは,文字列で入力されたデータを文字列に修正していきます。
文字列で入力されたデータを数字に変換するためには,そのセルにカーソルをあわせて,
表示された注意マークをクリックします。そうすると,次のようなメニューが現れます。
この状態で,「数字に変換する」をクリックすると,
緑の三角が消え,数字に変換されたことがわかります。
ただし,これを一つずつやっていくのは大変ですよね。そこで一気に行います。
全ての範囲を選択した状態で,同じように数値に変換すればOKです。
まず,下記のような感じで全ての範囲(A12:BH2489)を選択します:
この状態で注意マークをクリックし,「数字に変換」をすると全ての範囲で文字列を数字に変換することができます。
この作業は,かなり時間がかかります。場合によっては1分以上かかることも。Excelがエラーを起こさない限りは根気よく待つようにしましょう。
以上で,食品成分表のデータクリーニングは完了です!成分値が栄養計算できる形式に整いました。
まとめ
今回は,食品成分表をダウンロードし,それを栄養計算可能な形式に修正する作業を行いました:
- 食品成分表のダウンロード
- 「-」を「0」に置換
- 「Tr」を「0」に置換
- 「(」を「」(空白)に置換
- 「)」を「」(空白)に置換
- 「[」を「」(空白)に置換
- 「]」を「」(空白)に置換
- 「†」を「」(空白)に置換
- 「*」を「0」に置換
- 文字列を数値に変換
今回はここまで。次回からソフト作成の具体的な部分に突入していきます!
次回の記事はこちら:
連載目次
- Excelで栄養計算ソフトを自作しよう!【成分表2020年版対応】
- 栄養計算ソフトのための食品成分表をExcelで作成しよう!【成分表2020年版対応】現在のページ
- VLOOKUP関数で食品成分表から食品名を検索しよう!【成分表2020年版対応】
- Excelで食品成分表から食品のエネルギーを算出してみよう!【成分表2020年版対応】
- Excelで食品成分表から色々な栄養素の成分値を算出してみよう!【成分表2020年版対応】
- SUM関数で算出した栄養素を合計してみよう!【成分表2020年版対応】
- SUMIF関数で食事区分ごとに栄養素を合計しよう!【成分表2020年版対応】
- 【完成】Excelで栄養計算ソフトを作成してみた!【成分表2020年版対応】
()を削除する際は,片方ずつ削除していきます。まず ( を削除し,次に ) を削除します。