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