巻き歪み・樽歪み・傾斜画像補正プログラムの逆のプログラム(14)エクセルからC言語への移植 | 技術日誌

技術日誌

ここでは,電子工作,木工などの趣味での記録を書いています。
なお当初はKMK研究所のメインテーマであるSPSのノウハウを書いてきましたが,順次SPSノウハウのページに複製を作っていきます。

 前に「エクセル再発見:名前付きセルが相対アドレスで参照できない」の記事を載せました。これは,エクセルで与えた定数をC言語に移植する第一弾でした。今後100個近い数式も移植する必要があります。一つ一つ書き直していたらかなりの手間になります。そこで,数式もエクセルの中でC言語に移植できる形に変形することを考えました。

 例えば下図のAO5には「=(_XX2-_XX1)/_r」という数式が入っています。そしてその計算結果がセルに表示されています。C言語で欲しいのはAN5の値(その計算結果を代入する変数名)とAO5の数式を繋いだものです。通常,AN5とAO5を単純につなぐ(=AN5&AO5)と「_UU2=1.812798」となってしまいます。調べたらセル内の数式を取り出す関数がありました。FORMULATEXT (引数)という関数です。引数は取り出したい数式の入っているセルです。AO列のセルにはその左の名前が付けられていますので,前に書いたようにINDIRECT関数を使う必要があります。したがって,AM5には上側に示されているように「=AN5&FORMULATEXT(INDIRECT("R[0]C[2]",FALSE))」という式になりました。これをAM6より下のセルに一気にコピーすることで,C言語で必要なたくさんの数式を作ることができました。