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],"")"

f:id:ava7545:20200926103954p:plain

エラーとなってしまいます。

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]," & """対象外""" & ")"