アクセス上位ページ
 
最近の更新内容

Excel VBA ≫ 1.基礎編 - セル・レンジ(6)-c.数式の設定

【ページ内リンク】

数式の設定

セルに数式を設定するにはFormulaプロパティを使用します。 実際に数式を入力するようにイコール"="につづけて、算術式やワークシート関数を設定します。
レンジで範囲を指定してまとめて数式を設定することも可能ですが、 この場合は数式の相対参照
絶対参照に注意しましょう。



  • 数式の設定例
  • '数式(RANK)の設定に誤りがある例
    Sub sample6_29()
        '平均
        Range("E4:E13").Formula = "=SUM(B4:D4)"
        '順位
        Range("F4:F13").Formula = "=RANK(E4,E4:E13)"
    End Sub
    

    <実行前> sample6_29の実行前
    <実行結果> sample6_29の実行結果 『順位』欄が明らかにおかしいですが・・・
    とりあえず『平均』欄から数式を確認してみます。

    <E4セルの数式> E4セルの数式
    <E13セルの数式> E13セルの数式 数式が相対参照でコピーされていて、問題なさそうです。
    つづいて『順位』欄の数式を確認してみます。

    <F4セルの数式> F4セルの数式
    <F13セルの数式> F13セルの数式 RANK関数の第2引数に注目すると、 コピー先にあわせて第2引数の参照先がずれてしまっていることがわかります。

    そこで、RANK関数の第2引数を行方向に対しては絶対参照(行番号の前に$をつける)にし、 参照先を固定するように修正します。

  • 数式修正
  • Sub sample6_30()
        '平均
        Range("E4:E13").Formula = "=SUM(B4:D4)"
        '順位(行を絶対参照にする)
        Range("F4:F13").Formula = "=RANK(E4,E$4:E$13)"
    End Sub
    

    <実行結果> sample6_30の実行結果
    <E13セルの数式> E13セルの数式(数式修正後) 今度は第2引数の参照先がずれることなくコピーされ、正しく順位が表示されました。


数式のR1C1形式

A1形式(上記の数式設定形式)ではなく、 R1C1形式で数式を設定する場合はFormulaR1C1プロパティを使用します。
R1C1形式にもA1形式同様に相対参照、絶対参照があり、カッコ[]でくくると相対参照、 カッコでくくらずに行または列番号を指定すると絶対参照となります。
  • sample6_30をR1C1形式で数式設定した場合
  • Sub sample6_31()
        '平均
        Range("E4:E13").FormulaR1C1 = "=SUM(R[0]C[-3]:R[0]C[-1])"
        '順位(行を絶対参照にする)
        Range("F4:F13").FormulaR1C1 = "=RANK(R[0]C[-1],R4C[-1]:R13C[-1])"
    End Sub
    

カテゴリ内ページ



Page
Top