VBA 空白(””)を含む数式を入れるときの処理
計算式が無効にならないように空白を考慮した計算式例
1 | 2 | 3 | 4 | |
1 | 出身県 | 人数 | 年俸 | 平均年俸(万円) |
2 | 岐阜 | 1 | 1,800 | =IF(RC[-2]<>"",RC[-1]/RC[-2],"") |
3 | 静岡 | 4 | 32,770 | =IF(RC[-2]<>"",RC[-1]/RC[-2],"") |
4 | 愛知 | =IF(RC[-2]<>"",RC[-1]/RC[-2],"") | ||
5 | 三重 | 1 | 550 | =IF(RC[-2]<>"",RC[-1]/RC[-2],"") |
6 | 合計 | =SUM(R | =SUM(R | =IF(RC[-2]<>"",RC[-1]/RC[-2],"") |
1 | 2 | 3 | 4 | |
1 | 出身県 | 人数 | 年俸合計(万円) | 平均年俸(万円) |
2 | 岐阜 | 1 | 1,800 | 1,800 |
3 | 静岡 | 4 | 32,770 | 8,193 |
4 | 愛知 | |||
5 | 三重 | 1 | 550 | 550 |
6 | 合計 | 6 | 35,120 | 5,853 |
この空白を考慮した計算式をVBAでそのまま記述し実行すると
Cells(2, 4) = "=IF(RC[-2]<>"",RC[-1]/RC[-2],"")"
エラーとなってしまいます。
VBA記述で文字列を括る(””)と空白(””)が判別できないからです。
計算式内での(””)とVBA記述での(””)を区別させるために計算式を以下のように分割します。
①=IF(RC[-2]<>
②””
③,RC[-1]/RC[-2],
④””
⑤)
さらに計算式内での(”)を認識させるために(”)を(””)にします。
ですから空白(””)は(””””)でやっと認識しくれるというわけです。
そして
”①” & "②" & "③" & "④" & "⑤"してしまえばいいわけです。
Cells(2, 4) = "=IF(RC[-2]<>" & """""" & ",RC[-1]/RC[-2]," & """""" & ")"
例えば
=IF(RC[-2]<>"",RC[-1]/RC[-2],"対象外") の場合
Cells(2, 4) = "=IF(RC[-2]<>" & """""" & ",RC[-1]/RC[-2]," & """対象外""" & ")"