こんにちは、Ryoです。
セルへ数式を入力したいケースは多々あると思いますが、その中で複数の値やセル参照を利用して計算する数式(=配列数式)を扱いたい場合はFormulaArrayプロパティを利用することで対処できますので、今回はその内容について書いていきます。
1.サンプル概要
サンプルとして下の表を作成していますが、コードのA,B区分でそれぞれ集計し平均をセルG2とG3のそれぞれ書き込みます。
Excel操作で数式を書込む場合はセルG2=AVERAGE(IF(B2:B7=F2,C2:C7))となり、セルG3=AVERAGE(IF(B2:B7=F3,C2:C7))となるので、これをVBAで記述して処理するという内容です。
処理対象のデータを集計して平均値を算出し、セルG2とG3にそれぞれ書式を設定して書き込みます。
以上がサンプル概要になります。
2.サンプルコード
Sub sanmple1() 'セルG2に配列数式を設定し売上平均を算出 Range("G2").FormulaArray = _ "=AVERAGE(IF(B2:B7=F2,C2:C7))" 'セルG3に配列数式を設定し売上平均を算出 Range("G3").FormulaArray = _ "=AVERAGE(IF(B2:B7=F3,C2:C7))" 'セルG2~G3に表示形式を設定 Range("G2:G3").NumberFormatLocal = "#,##0" End Sub
このようにセルへ配列数式を設定するにはFormulaArrayプロパティを利用します。
構文:オブジェクト.FormulaArray
配列数式とは複数の値やセルの参照を利用して1つまたは複数の結果を求める数式のことで、今回のようにコードが入力されたセルを参照して指定範囲から条件に合致する値のみを集計するような場合も該当します。
セルへの数式設定なので”=AVERAGE(IF(B2:B7=F3,C2:C7))”の部分がセルに書き込まれます。
3.まとめ
VBAの処理で完結できれば敢えて数式を設定する必要もないのですが、現実的にはその後の修正など人為的に処理することが少なからずあるので、使い勝手などを考えて数式を設定しておくことは多々あります。
今回のケースも覚えておくと非常に便利ですが、ワークシートを数式まみれにすると修正も大変で処理も重くなりますから、ほぼVBAで処理しつつ一部数式を設定しておくような形で活用されてみると良いと思います。
以上、セルへ配列数式を入力する方法についてでした!今回の記事が何かの参考になれば幸いです。
Ryo