10/11/2022

Excel。VBAでセルにスピル機能の数式を設定するにはどうしたらいいの【Spill】

Excel。VBAでセルにスピル機能の数式を設定するにはどうしたらいいの

<Excel VBA:Fomula2プロパティ>

Excelに新しく加わった機能の【スピル】。

Excel VBAのプログラム文で、どのようにしたら使えるのでしょうか。


まずは、通常のExcelでスピルの数式を作って確認します。


九九の表をつくりたいとします。


以前のExcelならば、複合参照をつかった数式を設定して、オートフィルで数式をコピーしていました。


例えば、B2には、

=$A2*B$1

と設定していたわけですね。


複合参照になれていないと、列を固定するのか、行を固定するのかパズルのように考えないといけなかったわけです。


ところが、スピル機能の登場によって、B2には、次のような数式を設定するだけで、あとはスピル機能のおかげで、オートフィルで数式をコピーする必要もありません。


B2には、

=A2:A5*B1:D1

と配列関数のような数式ですが、これだけで九九の表が簡単につくれるわけです。


このスピル機能をつかった数式をExcel VBAのプログラム文で設定するにはどうしたらいいのか確認をしていきます。


セルに数式を設定するには、「Formulaプロパティ」をつかえばいいので、Formulaプロパティをつかって、プログラム文をつくっています。


Sub スピルの数式()

    Range("b2").Formula = "=a2:a5*b1:d1"

End Sub


実行してみます。


B2のみに算出されています。

しかも、数式が、

=@A2:A5*@B1:D1

と「@(アットマーク)」がついたセル番地だけ計算する数式に変わってしまっています。


実は、スピル機能の数式をつかうには、

Formulaプロパティではなくて、「Formula2プロパティ」を使う必要があるのです。


では、Formula2プロパティに変更してみます。


Sub スピル数式()

    Range("b2").Formula2 = "=a2:a5*b1:d1"

End Sub


実行してみましょう。


このように、スピル機能の数式をExcel VBAでもつかうことができます。


もしかしたら繰り返し処理で処理時間がかかっているようならば、改善できるかもしれませんね。