Excel で現在の列名を取得するにはどうすればよいですか?

Excel で現在の列名を取得するにはどうすればよいですか?

Excel のセルの現在の行番号と現在の列名を取得する関数は何ですか?

答え1

ROW関数と関数を使ってCOLUMNこれを行うことができます。これらの数式の引数を省略すると、現在のセルが使用されます。これらは直接使用できます。関数OFFSET、または行と列の両方を数値として指定できるその他の関数。

たとえば、セル D8 に入力すると、返される値は 8 になります。同じセルに=ROW()入力すると、返される値は 4 になります。=COLUMN()

列の文字が必要な場合は、関数を使用できますCHAR。列を表すために文字を使用することはお勧めしません。2 文字の列名に渡すときに問題が発生するためです (いずれにしても、数字だけを使用する方が論理的です)。

それでも、列の文字を取得したい場合は、列番号に 64 を追加するだけです (64 は より 1 文字少ないA)。したがって、前の例では、セルの値を に設定すると=CHAR(COLUMN()+64)、返される値は になりますD。セルの値をセルの位置自体にしたい場合は、完全な数式は になります=CHAR(COLUMN()+64) & ROW()


参考までに、ASCII テーブルから 64 を取得しました。CODE式を使用することもできます。この式を使用して更新された式は になります=CHAR(COLUMN() + CODE("A") - 1)。 の最小値は常に 1 なので、1 を減算する必要がありますCOLUMN。そうすると、式全体の最小戻り値は になりますB

ただし、これは 2 文字の列では機能しません。その場合、2 文字の列を適切に解析するには、次の数式が必要です。

=IF(COLUMN()>26,IF(RIGHT(CHAR(IF(MOD(COLUMN()-1,26)=0,1,MOD(COLUMN()-1,26))+64),1)="Y",CHAR(INT((COLUMN()-1)/26)+64) & "Z",CHAR(INT((COLUMN()-1)/26)+64) & CHAR(IF(MOD(COLUMN(),26)=0,1,MOD(COLUMN(),26))+64)),CHAR(COLUMN()+64))&ROW()

もっと簡単な方法があるかどうかはわかりませんが、セル からA1まではZZ99問題なく機能することはわかっています。ただし、これは、文字ベースの列識別子の使用を避け、純粋な数値ベースの数式 ( の代わりに文字ではなく列番号を使用するなどOFFSET) を使用するのが最善である理由を示しています。

答え2

次の機能を試してください。

=SUBSTITUTE(ADDRESS(1,COLUMN(),4),"1","")

説明: ADDRESS(row_num, column_num, [abs_num]). [abs_num] = 4= 相対アドレス。つまり、返される値には '$' はありません。列 'AB' の場合、ADDRESS'AB1' が返されます。代わりに '1' を削除します。

答え3

これを試して

=SUBSTITUTE(SUBSTITUTE(CELL("address"),"$" & ROW(),""), "$", "")

これにより、$ などの記号が含まれない正確な列ヘッダーが提供されます。

答え4

列名を取得するために、次の数式を使用しました。

特定のセルの場合:

=SUBSTITUTE(CELL("address",H3),"$" & ROW(H3),"")

現在のセルの場合:

=SUBSTITUTE(CELL("address"),"$" & ROW(),"")

このバリエーションを試してみてください。3 文字の列で機能し、先頭に「$」が残りません。

=SUBSTITUTE(ADDRESS(ROW(XFD123),COLUMN(XFD123),4),ROW(XFD123),"")

関連情報