更新日 2023/5/11 2023/5/4
増補2023年版の食品標準成分表からアプリ用成分表に変換する手順です。
アプリ用成分表は食品番号を1列目にする仕様です。
(2019年版以前の注意事項は「v8アプリ用標準成分表の作成」を参照してください)
■標準成分表の入手
□文部科学省のホームページよりダウンロード
・念のため、2023年版のダウンロードしたファイルには必ずダウンロード日付(+時間)を付けておきます。(2020年版では更新があってもファイル名が変わらなかったため成分表が特定できないことになっていた)
■Excelで成分表を編集
□表示→ウィンドウ枠の固定▼→ウィンドウ枠の固定解除
□[表全体]以外のシートを削除(1穀類、2いも及びでん紛類~)
□[食品番号]を1列目に移動(列を切り取り→切り取った列を挿入)
□先頭行で挿入をして4行作成 [食品番号][単位][桁][version](今回は2020年版エクセル編集済みからコピーした)
□項目名、単位、桁、version を入力。dl20230429_1650_up20230501a(増補2023年版20230428)
・炭水化物の本表・別表1・別表2 では、項目名の先頭に carb、poly、fiber、pros、aoac、acid 、reduを付けています。(省略している食品名もあります)
・[食品番号]はそのままの名前を使用
・[carb版]、[carbダウンロードファイル名]、[carbEOL] を追加
・[版]に値を入力する。増補2023年版20230428_dl20230429_1650
・[ダウンロードファイル名]はファイル名をコピーして入力しまし、その語尾にダウンロード日付を付けた。(ファイル名_download20230429_1650.xlsx)
・データ欄もすべて[carb版]、[carbダウンロードファイル名]、[carbEOL] をコピーして入力します。(食品単位で元のデータ場所が特定でき、後日正誤確認できるため)
□他のエクセルの見出し行は削除
・列の[EOL]は項目がずれていないかの確認などに使用します。作っておくことをお勧めします。
増補2023年版本表のみ
□A列と1行を再表示する。
□AG列に項目および数値がないので列削除。
□[重量変化率][百ml重量]を挿入。(今は別に個別で対応しているため標準成分表では必要はないが、2020年版成分表との比較など行うため作成している)
・[百ml重量]はアプリ用成分表を作成したあと、アプリ「値抽出」で"百ml重量表"を作成。増補2023年版本表の[百ml重量]欄は空のままです。
・[重量変化率]は2015年版の踏襲で標準成分表には必要性はないです。2020年版から"個別重量変化率表"に自分で登録します。個人の成分表の[個別重量変化率]欄があると計算されます。2015年版とか2023年版とか関係なく、全ての版で計算できます。
□[食品群]をコピーして、値を貼り付ける。(式を数値にする)←2020年版では計算値になっていたので必要でしたが、今回2023年版では値なのでこの作業は必要なかった。
・各項目の値にはダウンロード日付(+時間)を付けておくことをおすすめします。(更新があってもファイル名が変わらないため成分表が特定できない)
■文字検索→置換
検索で存在しない場合は、置換の必要はありません。これまで入っていると困ったものがあって、念のための文字置換もあります。
(セルが見つかりました) (件の置換を完了しました)
□全角[、]で検索 ( セル) → 全角[・]で置換 ( 件)
□全角[,]で検索 ( セル) → 全角[・]で置換 ( 件)
□半角[,]で検索 ( セル) → 全角[・]で置換 ( 件)
□改行[Ctrl][j]で検索 ( セル) → 全角[。]で置換 ( 件)
・注意:[Ctrl][j]は押しても見えません。1回だけ押してください。もし、数回押してしまったら[Delete]と[BackSpace]を何回か押して見えない文字を削除して、改めて1回だけ押してください。あらかじめ検索で個数を確認してみるのも有効です。これまでは、改行はありましたので、この改行は必ず消しておいてください。もし、存在するとcsvの書き出しで1行が複数行になることがあります。特に[備考]にあります。現象としては[備考]の1部分が改行されて、1行以上のデータになる。
□注意:【半角と全角を区別する】にチェックをいれる。
□半角空白[ ]で検索 ( セル) → 文字なしで置換 ( 件)
・全角空白は標準成分表の作成では、そのままです。食品名が全角で区切られていて、そのまま使用するため。(本表[12023]備考には連続空白があり下記の対処をした)
□全角[(]で検索 ( セル) → 半角[(]で置換 ( 件)
□全角[)]で検索 ( セル) → 半角[)]で置換 ( 件)
□全角[;]で検索 ( セル) → 全角[:]で置換 ( 件)
□半角[;]で検索 ( セル) → 全角[:]で置換 ( 件)
・μは全角・半角・コードの違い、ここで置換がよいかも。備考に連続全角空白が入っていることがありました。
・アプリ成分値項目に半角[:]を使用している。備考で元の成分表では全角[:]と半角[:]が混合して使用されている。統一をどうするか保留している。
(全角[:]はそのままですが、今後の仕様で考慮する必要がでてくるかもしれない)
↓下記については、上記方法で半角・全角の区別無し(チェックをいれない)で実行しているので関係ありません。
(□全角[、]を【半角と全角を区別する】にチェックをいれて全角で置換した後、半角で検索すると本表[備考]で6セル(6件)発生した)
・[06013][06047][10195][10212][10239][11242] (4セルは半角と全角が混在していると思われる)
2020年版本表のみ…増補2023年版本表も同じでした。
□備考の小文字[µ]を大文字[µ]に置換 (UTF-8で[cebc])。増補2023年版も7セル・7件見つかりました。
( セル)( 件)
□[16059]備考の[99.9ml]を[99.9mL]、[100ml]を[100mL]に置換(□大文字と小文字を区別する)
□[12023]備考の[連続空白文字列]を手で[。]に置換
■書き出し元データの作成
□食品番号に[#]を付ける。
・シートをコピーして追加する。
・CONCATENATEを使う。例…【CONCATENATE("#",表全体!A5)】
・書式設定で枠は標準に設定(して入力欄を「Enter」)する。文字列などになっていると計算されない。
・その他計算されない場合、「F2」を押して「Enter」を押してみる。
・シートをコピーして追加する。[食品番号]の値のみコピーする。
【注意】
①特に本表で列を削除したりするため項目を範囲外に一旦コピーしておくことがあるため、csv書き出しで項目数が多くなることがある。念のためすべてで[END]の右10列ほど削除しておく。
②端末行より下に見えないデータがあってデータ数が多いことがありました。端末行より10行ほど削除しておく。
③ほとんどのファイルのcsv書き出し後、末端行は空行になっています。csv書き出しのあと、その行を削除しておく。
■書き出し・ファイル形式変更・文字種の変換
□「ファイル」「名前を付けて保存」「CSV(カンマ区切り)(*.CSV)」ファイル名を入力して保存する。
□ファイルの識別子を .csv から .txt に変更する。メッセージがでるが気にしないで変更。
□テキストデータは Shift-jis なので 秀丸エディタなどで UTF-8 に変換し、保存する。
□CR+LF は LF に変更する。
□末端行が空行の場合、空行削除する。(一応プログラムではスルーの予定ですが、2023年版のファイル作ったとき、強制終了した部分が残っていた)
・テキスト形式(txt)に変更して扱います。CSV形式だと、表計算が起動してしまい、保存すると、食品番号が数字と認識され先頭のゼロ[0]が削除されたり、括弧付き数字がマイナス表示になることがあります。
・ファイル名は英数字のみにしておきます。(漢字は使用しないでください)
・ファイル名には、変更日付と番号を付けるのをお勧めします。
・ファイル名先頭【_file4_】は必須です。
・2023年版のアプリ用成分表には必ずダウンロード日付(+時間)を付けておきます。(更新があってもファイル名が変わらないため成分表が特定できない)
・_file4_20_st_2020_dl20211228_1407_up20211228.txt
■アプリに登録
・ファイル【_list4_2023○_standard.txt】にファイル名を設定します。
・shift-JISでファイル書き出しの時、変換できない文字があった場合、【?】と表示されていることがある。変換前の文字を調べて代替文字を入力する。【?】→【μ】(2020/7/6)
■その他
・Excelでcsvで保存して、再度編集しようと Excel に読み込むと () はマイナスになるなど、元の状態で読み込むのは、かなり難しいため、Excel→csv は一方通行にしておく。
・Excelでcsvで保存して、再度編集しようと読み込むと「01234」は「1234」となるので、保存前のxlsxファイルを残しておいて編集しています。これに対し、食品番号は#を先頭に付けて対応。
・縦の欄を二つ挿入して、一方で【=IF(LEN(D1)=4,CONCATENATE(0,D1),D1】(元データがD1のとき)で計算し、もう一方で数値だけコピーをすれば、4桁の数字の前に0をつけることができました。エクセルはあまりよく知らないので、もっと良い方法があるかもしれません。【他の方法 RIGHT("00000"&A1,5)】