- ADDRESS関数などの関数を組み合わせて、1~16384の数値(数字)を列のアルファベット(文字列)に変換できます。
手順
次の画像では、B列に数値が入力されています。
そしてC列にADDRESS関数やSUBSTITUTE関数を使った式を入力して、B列の数値を、列を表すアルファベット(数値=n番目の列につけられているアルファベットの名前)に変換しています。
C3セル(下方にコピー)
=SUBSTITUTE(ADDRESS(1,B3,4),"1","")
ADDRESS関数を使って、1行目かつ「『B3セルの数値』列目」のセルの番地を相対参照形式(第3引数=4)で取得しています。つまり1という数値に対しては「A1」という文字列が取得でき、10という数値に対しては「J1」が取得できます。
あとはSUBSTITUTE関数で「1」を消せばアルファベットだけが残る、というわけです。ちなみにこの関数の第2,第3引数は「1,」とすればもう少し短くできます。
なお、変換できる数値は1から16384まで(小数切り捨て)です。16385以上を指定すると#VALUEエラーとなります。
ところで、似たような式を使って次のように入力すれば数値を介することなく「その列を表すアルファベット」が取得できます。
C2,D2,E2セル(すべて同じ)
=SUBSTITUTE(ADDRESS(1,COLUMN(),4),"1","")
「COLUMN()」により、式を入力したそのセルの列番号(数値)が得られます。あとは上記の式と同じです。
次の画像は最初の画像と同じことをやっていますが、SUBSTITUTE関数の代わりに新しいTEXTBEFORE関数を使っています。
C3セル(下方にコピー)
=TEXTBEFORE(ADDRESS(1,B3,2),"$")
ADDRESS関数の第3引数を2とすることで、行の絶対参照形式のセル番地を取得しています。つまり「A$1」とか「J$1」といった文字列を取得しています。
あとはTEXTBEFORE関数で「$」より前を取得すればアルファベットだけが残るというわけです。
次の画像はTEXTBEFORE関数を使って2番目の画像と同じことをやっている例です。
C2,D2,E2セル(すべて同じ)
=TEXTBEFORE(ADDRESS(1,COLUMN(),2),"$")