VBAのプログラムにExcelの数式を組み込むためのコードを紹介していきます。
上の画像は、A列にある本体価格とB列にある軽減税率かどうかの判定(食品などで〇の場合は8%、その他は10%)、
C列はA列とB列で税込金額を表示する内容となっております。
画像C2セルの数式は「=IF($B2="",$A2*1.1,$A2*1.08)」となっておりますが、
VBAを利用して、数百・数千件など膨大なデータを取り込んで計算する場合、Excelの数式を毎回コピーして貼り付けするのは負担が大きくなります。
そこで、データを取り込む際にC列の数式をプログラムに組み込むことにより、負担を軽減することができます。
C2セルだけに数式を入力したい場合は
・Range("C2").Formula = "=IF($B2="""",$A2*1.1,$A2*1.08)"
・Range("C2").FormulaR1C1 = "=IF(RC2="""",RC1*1.1,RC1*1.08)"
※ダブルクォーテーションなどは文字として認識させるように注意してください
と入力します
「.FormulaR1C1」は数式をR1C1形式で設定します。複数のセルにExcelの数式を組み込みたい場合はこちらをお勧めします。
A列に金額が記載されている分だけC列に数式を入力したい場合は
・Range(Cells(2, 3), Cells(Cells(Rows.Count, 1).End(xlUp).Row, 3)).FormulaR1C1 = "=IF(RC2="""",RC1*1.1,RC1*1.08)"
となります。
R1C1形式から通常の形式へ数式を変更する場合は、Excelのオプションから[数式]-[R1C1参照系列を使用する]
のチェックを外してください。
以上、VBAプログラムにExcelの数式を組み込む方法でした。