Excel VBAで特定セルに特定の数式を投入したい場合、元のマクロには不要なコピーや貼り付け処理が含まれていることがあります。この記事では、目的を達成するために最小限のコードでFormulaを設定する方法を解説します。
目的に応じたVBAコードの簡略化
元のマクロではコピー元セルから値を貼り付ける処理や、クリップボードのクリアなどの操作が含まれています。しかし、もし目的が「W列の特定行に数式を設定する」だけであれば、コピー関連の処理は不要です。
必要なのは対象セルの指定とFormulaプロパティの設定だけです。
対象セルの指定方法
W列の対象セルを指定するには、行番号と列を指定してCellsオブジェクトを使用します。例えば、行番号が変数Rowに格納されている場合、
ws6.Cells(Row, "W")とすることで、W列の該当行を参照できます。
Formulaプロパティの活用
対象セルに数式を設定するにはFormulaプロパティを使用します。今回の例では、IF関数とCOUNTIFS関数を組み合わせた数式を設定するため、次のように記述します。
ws6.Cells(Row, "W").Formula = "=IF(COUNTIFS(B:B,$G$" & Row & ":$G$1000,C:C,$F$1,D:D,""済""),""済"","")"
この1行で指定行のW列に目的の数式を投入できます。
ループで複数行に適用する場合
もし複数行に同じ処理を行いたい場合は、Forループで行番号を変化させるだけで対応可能です。例えば、12行目から100行目まで適用する場合は、
For Row = 12 To 100
ws6.Cells(Row, "W").Formula = "=IF(COUNTIFS(B:B,$G$" & Row & ":$G$1000,C:C,$F$1,D:D,""済""),""済"","")"
Next Row
まとめ
Excel VBAで特定セルに数式を投入する場合、コピーや貼り付けの処理は不要です。対象セルをCellsで指定し、Formulaプロパティで数式を直接設定することで、コードをシンプルかつ効率的に保つことができます。複数行に適用する場合も、ループを組み合わせることで簡単に対応できます。


コメント