漢数字を半角数字に変換する関数です。十百千万等位が含まれる漢数字を変換します。
※文字列内の数字は変更できません、漢数字以外の文字があると空白になります。
VBEの標準モジュールに下のコードを登録して「Excelマクロ有効フォーム」で保存してください。
関数の登録方法は⇒♯000 ユーザー定義関数を登録する方法
登録されたら、シート上からユーザー関数「 KanNumA2 」が使用できます。
使い方は
ワークシート上で = KanNumA2 (漢数字)の関数として使用できます。
【例】
KanNumA2 (“五十四”) → 54
KanNumA2 (“一兆三千億二千五百万三十一”) → 1300025000031
Function KanNumA2(S)
’漢数字を半角数字にする関数(十百千等位の漢数字を使用する漢数字)
On Error GoTo EXITFUN
Dim KanNum1 As Variant
Dim KanNum2 As Variant
Dim KanNum3 As Variant
Dim CS As String
Dim i1 As Long
Dim i2 As Long
Dim i3 As Long
Dim ANum1 As Variant
Dim ANum2 As Variant
Dim K As Variant
Dim KZ As Variant
KanNum1 = Split(“〇,一,二,三,四,五,六,七,八,九”, “,”)
KanNum2 = Split(“十,百,千,万,億,兆,京,垓”, “,”)
KanNum3 = Split(“10,100,1000,10000,100000000,1000000000000 ,10000000000000000,100000000000000000000”, “,”)
CS = S
For i1 = 0 To 9
CS = Replace(CS, KanNum1(i1), “”)
Next
For i1 = 0 To 7
CS = Replace(CS, KanNum2(i1), “”)
Next
If Len(CS) > 0 Then
GoTo EXITFUN
End If
For i3 = 0 To 9
S = Replace(S, KanNum1(i3), i3)
Next
KZ = S
For i1 = 7 To 0 Step -1
If InStr(S, KanNum2(i1)) > 0 Then
If KanNum2(i1) = Left(S, InStr(S, KanNum2(i1))) Then
KZ = 1
Else
KZ = Left(S, InStr(S, KanNum2(i1))- 1)
End If
S = Mid(S, InStr(S, KanNum2(i1)) + 1, Len(S))
For i2 = 2 To 0 Step -1
If InStr(KZ, KanNum2(i2)) > 0 Then
K = Left(KZ, InStr(KZ, KanNum2(i2)))
KZ = Mid(KZ, Len(K) + 1, Len(KZ))
ANum1 = ANum1 + Replace(K, KanNum2(i2), “”) * KanNum3(i2)
End If
Next
If IsNumeric(KZ) = True Then
ANum1 = ANum1 + KZ
End If
ANum2 = ANum2 + ANum1 * KanNum3(i1)
End If
ANum1 = 0
Next
If IsNumeric(Left(S, 1)) = True Then
ANum2 = ANum2 + Left(S, 1)
Else
GoTo EXITFUN
End If
KanNumA2 = ANum2
Exit Function
EXITFUN:
KanNumA2 = “”
End Function
ここで紹介したコード使用による損害に対しては一切責任は負えません。