- INDIRECT関数等を使って、A1形式とR1C1形式の参照文字列(セル番地)を互いに変換できます。
A1形式からR1C1形式に変換
画像ではB列にA1形式の参照文字列が記録されています。
一方でC列に関数を使った式を入力し、R1C1形式の参照文字列に変換しています。
C3セル(下方にコピー)
="R"&ROW(INDIRECT(B3))&"C"&COLUMN(INDIRECT(B3))
INDIRECT関数を使ってB3セルに記入されている文字列が示すセル(A1)を実際に参照し、さらにROW/COLUMN関数で評価することによってその行番号、列番号を取得しています。あとは&を使って「R」と「C」を足しています。
ADDRESS関数を使う方法も考えられますが、文字を直接&でつないだ方がわかりやすいです。
R1C1形式からA1形式に変換
次の画像ではB列にR1C1形式の参照文字列が記録されています。
C列に関数を使った式を入力し、A1形式の参照文字列に変換しています。
C3セル(下方にコピー)
=SUBSTITUTE(CELL("address",INDIRECT(B3,FALSE)),"$","")
INDIRECT関数を使ってB3セルに記入されている文字列が示すセル(R1C1)を実際に参照し、さらにCELL関数を使ってA1形式の文字列を取得しています。
絶対参照の「$」がつくのでSUBSTITUTE関数で消していますが、これを外せば「$」付きの文字列が得られます。
備考
ADDRESS関数を使って行番号、列番号をR1C1形式の参照文字列に変換すると、「R[1]C[1]」のように角カッコ付きの文字列が得られます。
しかしこれをINDIRECT関数で評価すると、そのINDIRECT関数が入力されているセルを起点とする相対位置(オフセット)が計算されて返ります。
次の画像では2番目の例と同じ式で「R[1]C[1]」という参照文字列をA1形式に変換していますが、式が入力されているセルがC3セルなので、そこから1行下、かつ1列右にあるセル番地「D4」が得られています。
上記の例ではあくまで絶対的な位置、つまり「A1をR1C1とみなす場合の参照文字列」を求めることとしていますので、角カッコなしの文字列を求めています。