読者です 読者をやめる 読者になる 読者になる

Still Life

残念IT系母ちゃん。旦那さん、娘1歳、猫の4人暮らし。

VBAで、数値で取得したColumnをアルファベットに変換する

PC

ここ数日ExcelVBAをいじっています。
項目の収まったセルを特定するために、項目ごとにセルの位置を定数で持っておくことにしました。
最初"A"、"B"、"C"..."AA"、"AB"、"AC"といった具合に順に定数をセット。続いてのコーディングで、Rangeでがさっと持って来た情報をFor Each ... In Rangeで1セルずつ処理することをもくろみました。

ところが対象となるセルのカラムは、Columnで数値を取得したり、Addressメソッドで"$AG$5"といった文字列を取得することはできても、アルファベット部分だけの取得はできないことがわかりました。

そこで急きょ、Column数値からアルファベットを探す関数を作ったのでご紹介します。

2012年8月4日追記:以下のソースコードにはバグがあります。
http://d.hatena.ne.jp/Aodrey/20120804/1344051321
をご参照くださいm(_ _)m

'Columnsの数値からアルファベットを取得する
Function getAlphabetFromColumn(col As Long) As String
    
    getAlphabetFromColumn = getSimpleAlpha("", col)
    
End Function
Private Function getSimpleAlpha(prefix As String, c As Long) As String
    Dim alpha As String
    Dim leftover As Long
    Dim residues As Long
    
    leftover = c \ 26
    If leftover > 0 Then
        residues = c Mod 26
        alpha = getSimpleAlpha(getSimpleAlpha("", leftover), residues)
    Else
        residues = 0
        alpha = Chr(c + 64)
    End If
    
    getSimpleAlpha = prefix & alpha
End Function

使うときは、getAlphabetFromColumnにColumnの値を引数として渡します。

    Dim colStr As String
    colStr = getAlphabetFromColumn(ActiveSheet.Range("$GAU$3").Column)'Column値は4779

colStrには、"GAU"が入ってきます。