3日がかりのその仕事、3分で終わらせる方法教えます!
パソコンスキルの心技体

.Value, .Formula, .FormulaR1C1

2011年9月8日
  • このエントリーをはてなブックマークに追加
  • follow us in feedly

http://www.exvba.com/vb/index.php
エクセルマクロ・VBA達人養成塾 小川です。

今日は、ときどきいただく質問をご紹介。

セルに関数が入っている場合の処理について。

例えば、セル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

キーワード

コメント

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

最新の記事

人気記事

最新記事

カテゴリ

最新コメント

タグクラウド