Excelの列番号を英字に変換するユーザー定義関数

Pocket

「(1,1)」のセルならば「A1」と表示したいのですが、これを行うには、1ならばA、2ならばB、27ならばAAというように、列を英字に変換する必要があります。
ヘルプを調べましたが見付からなかったのでユーザー定義関数を作ってみました。

Function num2xlcol(num)
    'エクセルの列番号を英字に変換
    Dim pos(3) As Long
    pos(1) = num Mod 26
    If pos(1) = 0 Then pos(1) = 26
    pos(2) = ((num - pos(1)) / 26) Mod 26
    If pos(2) = 0 Then pos(2) = 26
    pos(3) = (num - pos(2) * 26 - pos(1)) / 26 / 26
    If num <= 26 Then 'A-Z
        num2xlcol = chr(64 + pos(1))
    ElseIf num <= 702 Then 'AA-ZZ
        num2xlcol = chr(64 + pos(2)) & chr(64 + pos(1))
    ElseIf num <= 18278 Then 'AAA-ZZZ
        num2xlcol = chr(64 + pos(3)) & chr(64 + pos(2)) & chr(64 + pos(1))
    Else
        num2xlcol = "Error"
    End If
End Function

Excel2007だと「XFD」(16384列)までありますが、「ZZZ」(18278列)まで対応しています。

これを作った後、Googleで検索すると、既にありました。しかもマイクロソフトのサイトに。
Excel で列番号を英文字に変換する方法
手法は全く同じでした。ただし「ZZ」までしか対応していません。「AAA」以上を扱う場合は上で紹介した関数が有用です。

[ 2014年10月8日 | カテゴリー: Excel | タグ: , ]

« | »

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

送信してください。


タグ

カテゴリー

最近の投稿

最近のコメント

固定ページ

アーカイブ

stabucky

写真

メタ情報