このチュートリアルでは、VBAを使用してセル数式を作成する方法をお教えします。VBAを使用すると、Excelの範囲またはセルに数式を直接書き込むことができます。 次のようになります。
Sub Formula_Example() 'Assign a hard-coded formula to a single cell Range("b3").Formula = "=b1+b2" 'Assign a flexible formula to a range of cells Range("d1:d100").FormulaR1C1 = "=RC2+RC3"End Sub
知っておく必要がある2つの範囲プロパティがあります。
- 。数式–正確な数式を作成します(ハードコードされたセル参照)。 単一のセルに数式を追加するのに適しています。
- 。Formular1c1–柔軟な数式を作成します。 セル参照が変更されるセルの範囲に数式を追加するのに適しています。
簡単な数式の場合は、を使用しても問題ありません。数式プロパティ。 しかし、他のすべてのために、我々はマクロレコーダーを使用することをお勧めします…
マクロレコーダーとセル式
マクロレコーダーは、VBAでセル式を書くための あなたは簡単にすることができます:
- 記録を開始
- セルに式(必要に応じて相対/絶対参照を含む)を入力します&enterキーを押します
- 記録を停止
- VBAを開き、式を確認し、必要に応じて適応し、必要に応じてコードをコピー+貼り付けます。VBAで対応する数式を入力するよりも、セルに数式を入力する方がはるかに簡単です。/p>
いくつかのことに注意してください:
- マクロレコーダーは常に使用します。Formular1c1プロパティ
- マクロレコーダーは、絶対セル参照と相対セル参照を認識します
VBA Formular1C1プロパティ
Formular1C1プロR1C1スタイルのセル参照では、絶対参照または相対参照を設定できることに注意してください。
次の例を示します。
Sub FormulaR1C1_Examples() 'Reference D5 (Absolute) '=$D$5 Range("a1").FormulaR1C1 = "=R5C4" 'Reference D5 (Relative) from cell A1 '=D5 Range("a1").FormulaR1C1 = "=RC" 'Reference D5 (Absolute Row, Relative Column) from cell A1 '=D$5 Range("a1").FormulaR1C1 = "=R5C" 'Reference D5 (Relative Row, Absolute Column) from cell A1 '=$D5 Range("a1").FormulaR1C1 = "=RC4"End Sub
r1C1スタイルのセル参照では、絶対参照または相対参照を設定できます。
絶対参照
標準のA1表記法では、絶対参照は”=$C$2″のようになります。 R1C1表記では、”=R2C3″のようになります。R1C1スタイルの型を使用して絶対セル参照を作成するには:
- R+行番号
- C+列番号
例:R2C3はセル$C$2を表します(Cは3番目の列)。p>
'Reference D5 (Absolute) '=$D$5 Range("a1").FormulaR1C1 = "=R5C4"
相対参照
相対セル参照は、数式が移動されたときに”移動”するセル参照です。標準のA1表記では、”=C2″のようになります。 R1C1表記では、角かっこを使用して、現在のセルからのセル参照をオフセットします。
例: セルB3に数式「=RC」を入力すると、セルD4(下のセル1行と数式セルの右側の1列)が参照されます。
現在のセルの上または左のセルを参照するには、負の数を使用します。P>
'Reference D5 (Relative) from cell A1 '=D5 Range("a1").FormulaR1C1 = "=RC"
混合参照
セル参照は、部分的に相対的および部分的に絶対的にすることができます。 例:
'Reference D5 (Relative Row, Absolute Column) from cell A1 '=$D5 Range("a1").FormulaR1C1 = "=RC4"
VBA数式プロパティ
数式を設定するとき。数式プロパティ常にA1スタイルの表記法を使用します。 引用符で囲まれている以外は、Excelのセルと同じように数式を入力します。
'Assign a hard-coded formula to a single cell Range("b3").Formula = "=b1+b2"
VBA数式のヒント
変数を含む数式
VBAで数式を操作するときは、セル数式内で変数を使用することが非常に一般的です。 変数を使用するには、&を使用して、変数を数式文字列の残りの部分と結合します。 例:
Sub Formula_Variable() Dim colNum As Long colNum = 4 Range("a1").FormulaR1C1 = "=R1C" & colNum & "+R2C" & colNumEnd Sub
数式の引用符
数式内に引用符(“)を追加する必要がある場合は、引用符を二度入力します(“”):p>
Sub Macro2() Range("B3").FormulaR1C1 = "=TEXT(RC,""mm/dd/yyyy"")"End Sub
一重引用符(”)は、VBAにテキストの文字列の終わりを意味します。 一方、二重引用符(””)は、テキストの文字列内の引用符のように扱われます。
同様に、3つの引用符(”””)を使用して文字列を引用符(”)で囲みます
MsgBox """Use 3 to surround a string with quotes"""' This will print <"Use 3 to surround a string with quotes"> immediate window
セル式を文字列変数に代入
与えられたセルま:
'Assign Cell Formula to VariableDim strFormula as StringstrFormula = Range("B1").Formula
セルに数式を追加するさまざまな方法
セルに数式を割り当てる方法の例をいくつか紹介します。
- 式を直接代入
- 式を含む文字列変数を定義します。
- 変数を使用して数式を作成します。
- li>
Sub MoreFormulaExamples ()' Alternate ways to add SUM formula' to cell B1' Dim strFormula as String Dim cell as Range dim fromRow as Range, toRow as Range Set cell = Range("B1") ' Directly assigning a String cell.Formula = "=SUM(A1:A10)" ' Storing string to a variable ' and assigning to "Formula" property strFormula = "=SUM(A1:A10)" cell.Formula = strFormula ' Using variables to build a string ' and assigning it to "Formula" property fromRow = 1 toRow = 10 strFormula = "=SUM(A" & fromValue & ":A" & toValue & ") cell.Formula = strFormulaEnd Sub
式の更新
リマインダーとして、式を更新するには、計算コマンドを使用できます。
Calculate
単一の式、範囲、またはワークシート代わりに計算する:p>
Sheets("Sheet1").Range("a1:a10").Calculate