|
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
|