ブログトップ 記事一覧 ログイン 無料ブログ開設

Still Life Twitter

[CLICK!!→]エイティーエスの格安中古パソコン通販サイト

2011-06-09

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

ここ数日ExcelVBAをいじっています。

項目の収まったセルを特定するために、項目ごとにセルの位置を定数で持っておくことにしました。

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

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

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

'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"が入ってきます。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/Aodrey/20110609/1307601687