読者です 読者をやめる 読者になる 読者になる

カロリー計算〜その1〜

カロリー計算を本気でしてみようと思い、まずは成分表が欲しい・・・。と思う。
ところが成分表のCSVXML等のデータは配布されていないらしい。

文部科学省

http://www.mext.go.jp/b_menu/shingi/gijyutu/gijyutu3/houkoku/1298713.htm

に、
資源調査分科会報告「日本食品標準成分表2010」について
というサイトがあり、ここから成分表をダウンロードすることができる。

しかし、しかしである。

[PDF]01穀類
http://www.mext.go.jp/component/b_menu/shingi/toushin/__icsFiles/afieldfile/2011/01/25/1299012_1.pdf

なんだなんだ、このみにくいPDFは!?

結構、というか相当困ってしまった。これではデータとして取得できないではないか。
もちろん、困ってばかりいても状況が改善するわけでもないので、
さらにググりまくると、大変素晴しいサイトを発見した。

『日本食品標準成分表2010』のPDFを.txtファイルに変換する
http://fujiitoshiki.com/wordpress/?p=26

ここで、ExcelからVBAを使ってTXTに変換してくれるというもの。
喜んで、ありがたく使わせてもらった。

ところが、このプログラム、大変残念なことに食品によっては大切な情報が欠落することがあるのだ。
例えば、

の場合、
こんな情報になる。(それぞれのカロリーや栄養素については30%果実ジュース以外はきちんと取得できる。)

1001	玄穀
1002	精白粒
1003	あわもち
1004	オートミール

精白粒はあわ以外にもいろんな種類があるのでこれではちょっと厳しい。
本当はこういう風にしたい。

1001	玄穀
1002	あわ(精白粒)
1003	あわ(あわもち)
1004	えんばく(オートミール)

そこで、非常に面倒ではあるが、エクセルで手入力をすることに。
具体的にはこんな風にした。

A B C D
1 1001 =if(b1="",d1,CONCATENATE("b1","(",D1,")")) 玄穀
2 1002 あわ =if(b2="",d1,CONCATENATE("b2","(",D2,")")) 精白粒
3 1003 あわ =if(b3="",d1,CONCATENATE("b3","(",D3,")")) あわもち
4 1004 えんばく =if(b3="",d1,CONCATENATE("b3","(",D3,")")) オートミール

エクセルでB列とC列を追加してB列には追加分を手入力。C列は上の数式を入力して、あとはマウスでえいやってコピーした。
現在はまだ統合マクロは使っていない。

これでなんとか成分データをCSV出力させることができた。
こういう時エクセルは便利だ。
〜その2〜へ続く。
http://d.hatena.ne.jp/ymlab/20120103