空プログラム工房

エクセル関数サンプル


エクセル関数サンプル
  1. 英字列名を数値列名に変換する(26進数10進変換):chg26to10

01 chg26to10 英字列名を数値列名に変換する(26進数10進変換)
2009/12/02
Function chg26to10(prmRetuA As String) As Long
'英字列名を数値列名に変換する(26進数10進変換)
'=chg26to10("AB")
    If IsNumeric(prmRetuA) Then
        '数値の場合そのまま戻す
        chg26to10 = prmRetuA
        Exit Function
    End If
    Dim lonLen As Long
    lonLen = Len(prmRetuA)
    If lonLen <= 0 Then
        '空白は0
        chg26to10 = 0
        Exit Function
    End If
    chg26to10 = 0
    Dim strStrU As String
    strStrU = UCase(prmRetuA)  'すべて大文字に変換
    '1桁ずつ処理
    Dim strC As String
    Dim lonI As Long
    Dim lonW As Long
    Dim lonKeta As Long
    lonKeta = 1     '1桁の桁値
    For lonI = lonLen To 1 Step -1
        strC = Mid(strStrU, lonI, 1) '1桁取得
        If strC = " " Then
            'スペースがある場合そこで終わり
            Exit For
        End If
        '文字値算出
        lonW = Asc(strC) - 64   'A -> 1
        '合計
        chg26to10 = chg26to10 + lonKeta * lonW
        '次の桁値算出
        lonKeta = lonKeta * 26
    Next lonI
    
End Function