Home  第二章 VBAからみたセル操作


5. R1C1形式 と A1形式


数式の表記で 行と列の表示形式をいいます 通常はA1形式です

  1. ツール>オプション>全般タブ の設定のなかの「R1C1参照形式を使用する」で設定します。

  2. FormulaR1C1はR1C1形式の記述であることを意味します。
    A1形式の場合は、Formulaを使用します。

  3. D3に =B3+C3 の式を自動登録すると
    Range("D3").Select
    ActiveCell.FormulaR1C1 = "=RC[-2]+RC[-1]" となります。

  4. R はRow(行) C はColumn(列)を意味します。
    [ ]の数字は 基準となるセルからどの方向の行列かを意味します。
    RC[-2]+RC[-1] は R[0]C[-2]+R[0]C[-1] とも表記できます。
    0 は省略可能というわけです。

  5. A1形式では自動登録できないため、書き直すことになります。
    Range("D3").FormulaR1C1 = "=RC[-2]+RC[-1]" は、
    Range("D3").Formula = "=B3+C3" となります。

    注意しなければならないのは 下記のような記述は間違いだと言うことです。
    Range("D3").FormulaR1C1 = "=B3+C3" とすると、エラーになります。
    また 
    Range("D3").Formula = "=RC[-2]+RC[-1]" や
    Range("D3").Value = "=RC[-2]+RC[-1]" や
    Range("D3").Value = "=B3+C3" は、
    ちゃんとセルに式は入りますが、記述方法に誤りがあることになります。

    サンプルファイル 2_005.xls

    R1C1形式で記述する数式を絶対セル番地で扱いたい時は、
    A1をR1C1としてとらえ、R1C1形式の数値を囲む[ ] を使用せずに記述します。
    セルE7の = E5+E6 の数式で説明すると、
    相対 : R[-2]C+R[-1]C = E5+E6
    絶対 : R5C5+R6C5 = $E$5+$E$6

    記述例
    '----------------------------------------------------------------
    '相対:
    Sub PlusA003()
        Range("E5").Value = 123
        Range("E6").Value = 456
        Range("E7").FormulaR1C1 = "=R[-2]C+R[-1]C"
    End Sub

    Sub PlusA004()
        Range("E5").Value = 123
        Range("E6").Value = 456
        Range("E7").Formula = "=E5+E6"
    End Sub
    '----------------------------------------------------------------
    '絶対:
    Sub PlusA0031()
        Range("E5").Value = 123
        Range("E6").Value = 456
        Range("E7").FormulaR1C1 = "=R5C5+R6C5"
    End Sub

    Sub PlusA0041()
        Range("E5").Value = 123
        Range("E6").Value = 456
        Range("E7").Formula = "=$E$5+$E$6"
    End Sub
    '----------------------------------------------------------------

    Top