.Value, .Formula, .FormulaR1C1

今日は、ときどきいただく質問をご紹介。
セルに関数が入っている場合の処理について。

例えば、セルI4に「=Sum(C4:H4)」という数式が入っている。
その結果、セルI4には、「21」という値が表示されている。
このとき、「数式」を取ってきたい、または、「値」を取ってきたい、というとき。
どうやって、切り分けるか。

結論から言うと、.Valueと.Formulaを使い分ける。

Sub valueformulatest()  
    Range(“K4″).Value = Range(“I4″).Value     ‘「値」を取ってくる  
    Range(“L4″).Value = Range(“I4″).Formula ‘「式」を取ってくる  
    Range(“M4″).Formula = Range(“I4″).Value  ‘「値」を取ってくる  
    Range(“N4″).Formula = Range(“I4″).Formula  ‘「式」を取ってくる  
End Sub  

この結果、セルK4~N4に入るのは、以下の数式または、値
セルK4: 21
セルL4: =SUM(C4:H4)
セルM4: 21
セルN4: =SUM(C4:H4)

これが何を意味するのかというと。

  1. Valueで設定しても、.Formulaで設定しても、違いはない。
  2. Valueで取得すると「値」、.Formulaで取得すると「式」を取得するという違いがある

ということ。

ついでに、.FormulaR1C1についても、簡単に解説。
.FormulaR1C1は、式を相対参照で取得します。
何のことやら?ということでしたら、以下を参考にしてください。

Sub formula_formular1c1()  
    Range(“I5″).Formula = Range(“I4″).Formula ‘セルI5に入るのは、「=SUM(C4:H4)」という式。  
    Range(“I6″).FormulaR1C1 = Range(“I4″).FormulaR1C1 ‘セルI6に入るのは、「=SUM(C6:H6)」という式。  
End Sub  
公開日時: 2022/08/17 12:00