S-JIS[2014-10-18] 変更履歴

Excel アドレス

Excelのセルのアドレスに関するメモ。


基礎

Excelでは、セルのアドレス(セルの場所)を「A1」や「R1C1」といった形で表す。
A1形式の場合、列を表すアルファベットと行番号をつないだものになる。
R1C1形式の場合、「R」+行番号(Row)+「C」+列番号(Column)となる。
行番号・列番号は1から始まる。
A1形式のA列はR1C1形式のC1、B列はC2に該当する。
A1形式の1行目はR1C1形式のR1、2行目はR2に該当する。

セルの計算式(数式)内で使う場合、デフォルトではA1形式で記述する。
ExcelのオプションでA1形式で表示するかR1C1形式で表示するかを切り替えられる。
(たぶん、Excelファイル内部では計算式を文字列のまま持っているのではなく、セル参照を別の形式に変換して保持していると思われる)

LibreOffice Calcの場合、デフォルトでは(A1形式がベースのようだが)独特の表示形式となっている。
オプションの「LibreOffice Calc」→「式」の「数式の構文」が「Calc A1」だと独自形式、「Excel A1」や「Excel R1C1」だとExcelと同形式になる。

セル(の行と列)の指定方法には相対参照と絶対参照がある。
“セル参照が含まれた数式”が入っているセルをコピーすると、
相対参照だと数式内のセル参照も移動する(コピー先のセルの位置からの相対的な位置になる)が、
絶対参照だとコピーしても変わらない。

内容 説明
MS-Excel LibreOffice Calc
(「Calc A1」形式)
同一シート内のセル
(A1形式)
B2
$B2
B$2
$B$2
B2
$B2
B$2
$B$2
$を付けないと相対参照、
$を付けると絶対参照。
同一シート内のセル
(R1C1形式)
R[2]C[3]
R2C[3]
R[2]C3
R2C3
R[-1]C[-1]
RC[1]
R[1]C
  数値部分を角括弧で囲むと相対参照、
数値を直接記述すると絶対参照。
相対参照の場合はマイナス値も指定可能。
相対参照で0を指定したい場合(同一行や同一列)は角括弧ごと省略する。
別シートのセル SheetName!A1 SheetName.A1
$SheetName.A1
Excelではシート名とセル指定の間に「!」を入れる。
Calc A1形式では「.」を入れる。また、シート名の前に$を付けると絶対参照、付けないと相対参照となる。
(Excelでは常に絶対参照扱い)
“別シートの参照を含む数式”が入っているセルを別シートにコピーすると、
絶対参照ではシート名は変わらないが
相対参照では指している先のシートが変わる。
複数セル(範囲) A1:B2 A1:B2 :」で区切って左上セル・右下セルを指定する。
行全体
(A1形式)
1:1
2:3
$A1:$AMJ1
$A2:$AMJ3
Excelでは「:」で区切って開始行・終了行を指定する。
Calc A1形式では左上セル・右下セルを指定しなければならない。
列全体
(A1形式)
A:A
B:C
A$1:A$1048576
B$1:C$1048576
Excelでは「:」で区切って開始列・終了列を指定する。
Calc A1形式では左上セル・右下セルを指定しなければならない。
行全体・列全体
(R1C1形式)
R1
R2:R3
C1
C2:C3
   

ADDRESS関数

ワークシート関数のADDRESSは、行番号・列番号・シート名を指定して“セル参照の文字列”を返す関数。

ADDRESS(行番号, 列番号, 参照の型, 参照形式〔, シート名〕)
参照の型
説明
ADDRESS 結果
1 絶対参照(デフォルト) ADDRESS(1, 1, 1) $A$1
2 行は絶対参照、列は相対参照 ADDRESS(1, 1, 2) A$1
3 行は相対参照、列は絶対参照 ADDRESS(1, 1, 3) $A1
4 相対参照 ADDRESS(1, 1, 4) A1
参照形式
説明
MS-Excel LibreOffice Calc ADDRESS 結果
TRUE 1 1 A1形式(デフォルト) ADDRESS(1, 1, 1, TRUE) $A$1
FALSE 0 0 R1C1形式 ADDRESS(1, 1, 1, FALSE) R1C1
シート名
説明 備考
ADDRESS 結果
(Excel)
結果
(Calc)
(省略) シート名なし ADDRESS(1, 1, 1, TRUE) $A$1 $A$1  
シート名 シート名あり ADDRESS(1, 1, 1, TRUE, "Sheet1") Sheet1!$A$1 Sheet1.$A$1 Calcの場合、「.」で区切られる。
ADDRESS(1, 1, 1, TRUE, "a1") 'a1'!$A$1 a1.$A$1 Excelの場合、A1形式と同じ形になるシート名を指定すると
シート名部分がシングルクォーテーションで囲まれる。
ADDRESS(1, 1, 1, TRUE, "a b") 'a b'!$A$1 'a b'.$A$1 スペースの入ったシート名を指定すると
シート名部分がシングルクォーテーションで囲まれる。
ADDRESS(1, 1, 1, FALSE, "Sheet1") Sheet1!R1C1 Sheet1!R1C1 R1C1形式にすると(Calcでも)「!」で区切られる。

INDIRECT関数

ワークシート関数のINDIRECTは、“セル参照の文字列”からセル参照を返す関数。

INDIRECT(セル参照文字列, 参照形式)
参照形式
説明
MS-Excel LibreOffice Calc INDIRECT 結果
(Excel)
結果
(Calc)
TRUE 1 1 A1形式(デフォルト) INDIRECT("$A$1", TRUE) OK OK
INDIRECT("Sheet1!$A$1", TRUE) OK OK
INDIRECT("Sheet1.$A$1", TRUE) #REF! OK
INDIRECT("R1C1", TRUE) #REF! #REF!
INDIRECT("1:1", TRUE) OK OK
INDIRECT("A:A", TRUE) OK OK
INDIRECT("Sheet1!1:1", TRUE) OK OK
INDIRECT("Sheet1!A:A", TRUE) OK OK
FALSE 0 0 R1C1形式 INDIRECT("R1C1", FALSE) OK OK
INDIRECT("Sheet1!R1C1", FALSE) OK OK
INDIRECT("Sheet1.R1C1", FALSE) #REF! #REF!
INDIRECT("A1", FALSE) #REF! #REF!
INDIRECT("R1:R1", FALSE) OK OK
INDIRECT("C1:C1", FALSE) OK OK
INDIRECT("Sheet1!R1:R1", FALSE) OK OK
INDIRECT("Sheet1!C1:C1", FALSE) OK OK

  A B C D E
1          
2 123        
3 456        
4 789   range A2:A4  
5     total =SUM(INDIRECT(D4, TRUE))  
6          

ワークシート関数へ戻る / Excelへ戻る / 技術メモへ戻る
メールの送信先:ひしだま