貿易書類などで、数値(金額)を英語表記にする際に、便利&時短なエクセルのユーザー定義関数を紹介します。
U.S. DOLLARS や CENTS などを他の通貨に変えることも出来ます。
U.S DOLLARS TWELVE THOUSAND THREE HUNDRED FORTY FIVE AND CENTS SIXTY SEVEN ONLY
数字の英語表記って、難しいわけでないのですが、毎回の入力作業は面倒くさいですよね。
また手入力だと、スペルミスなどの間違いも起こる可能性がありますね。
スペルミスのチェックは、思い込みが入ると、見つけにくいです。
英語表記が出来るVBAを紹介しますので、コピペして使ってみてください。
ユーザー定義関数の登録方法はこちら↓
VBAを記述後、A1に数値を入力し、A2のように数式を入れると英語表記の結果が得られる。
※A3も同じ結果が得られる。
数値を英語表記にするVBA
メインのVBA
Function 英語表記1(ByVal 金額 As Variant) As String
Dim ドル As String
Dim 小数点の位置, 整数部分, 小数部分, 三桁ずつ, Count As Long
ReDim Place(9) As String
Place(2) = ” THOUSAND “
Place(3) = ” MILLION “
Place(4) = ” BILLION “
金額 = Trim(Str(金額))
小数点の位置 = InStr(金額, “.”)
If 小数点の位置 > 0 Then
小数部分 = 数値②(Left(Mid(金額, 小数点の位置 + 1) & “0”, 2))
整数部分 = Left(金額, 小数点の位置 – 1)
Else
整数部分 = 金額
End If
Count = 1
Do While 整数部分 <> “”
三桁ずつ = 数値③(Right(整数部分, 3))
ドル = 三桁ずつ & Place(Count) & ドル
If Len(整数部分) > 3 Then
整数部分 = Left(整数部分, Len(整数部分) – 3)
Else
整数部分 = “”
End If
Count = Count + 1
Loop
Select Case ドル
Case “”
ドル = “NO DOLLARS “
Case “ONE”
ドル = “U.S DOLLAR ONE “
Case Else
ドル = “U.S DOLLARS ” & ドル & ” “
End Select
Select Case 小数部分
Case “”
小数部分 = “ONLY”
Case “ONE”
小数部分 = “AND CENT ONE ONLY”
Case Else
小数部分 = “AND CENTS ” & 小数部分 & ” ONLY”
End Select
英語表記1 = ドル & 小数部分
End Function
サブのVBA①
Function 数値③(ByVal ③ As String) As String
Dim Result, 百の位 As String
If Val(③) = 0 Then Exit Function
③ = Right(“00” & ③, 3)
If Mid(③, 1, 1) <> “0” Then
百の位 = 数値①(Mid(③, 1, 1)) & ” HUNDRED “
End If
If Mid(③, 2, 1) <> “0” Then
Result = 百の位 & 数値②(Mid(③, 2))
Else
Result = 百の位 & 数値①(Mid(③, 3))
End If
数値③ = Result
End Function
サブのVBA②
Function 数値②(② As Long) As String
Dim Result, 十の位 As String
Result = “”
If Val(Left(②, 1)) = 1 Then
Select Case Val(②)
Case 10
Result = “TEN”
Case 11
Result = “ELEVEN”
Case 12
Result = “TWELVE”
Case 13
Result = “THIRTEEN”
Case 14
Result = “FOURTEEN”
Case 15
Result = “FIFTEEN”
Case 16
Result = “SIXTEEN”
Case 17
Result = “SEVENTEEN”
Case 18
Result = “EIGHTEEN”
Case 19
Result = “NINETEEN”
End Select
Else
Select Case Val(Left(②, 1))
Case 2
十の位 = “TWENTY “
Case 3
十の位 = “THIRTY “
Case 4
十の位 = “FORTY “
Case 5
十の位 = “FIFTY “
Case 6
十の位 = “SIXTY “
Case 7
十の位 = “SEVENTY “
Case 8
十の位 = “EIGHTY “
Case 9
十の位 = “NINETY “
End Select
Result = 十の位 & 数値①(Right(②, 1))
End If
数値② = Result
End Function
サブのVBA③
Function 数値①(① As Long) As String
Select Case Val(①)
Case 1
数値① = “ONE”
Case 2
数値① = “TWO”
Case 3
数値① = “THREE”
Case 4
数値① = “FOUR”
Case 5
数値① = “FIVE”
Case 6
数値① = “SIX”
Case 7
数値① = “SEVEN”
Case 8
数値① = “EIGHT”
Case 9
数値① = “NINE”
Case Else
数値① = “”
End Select
End Function
英語表記にするVBAの解説
メインの解説
サブ①の解説
サブ②の解説
サブ③の解説
メインのループ部分を変更する
Do While〜Loop
の部分を
For〜Next
に変更してみました。
ループ部分を変更したメインVBA
Function 英語表記2(ByVal 金額 As Variant) As String
Dim ドル As String
Dim 小数点の位置, 整数部分, 小数部分, 三桁ずつ, i, h As Long
ReDim Place(9) As String
Place(2) = ” THOUSAND “
Place(3) = ” MILLION “
Place(4) = ” BILLION “
金額 = Trim(Str(金額))
小数点の位置 = InStr(金額, “.”)
If 小数点の位置 > 0 Then
小数部分 = 数値②(Left(Mid(金額, 小数点の位置 + 1) & “0”, 2)) ‘英語
整数部分 = Left(金額, 小数点の位置 – 1) ‘数字
Else
整数部分 = 金額
End If
‘整数部分を英語表記にする
h = WorksheetFunction.RoundUp(Len(整数部分) / 3, 0)
For i = 1 To h
三桁ずつ = 数値③(Left(Right(整数部分, 3 * i), Len(Right(整数部分, 3 * i)) – 3 * (i – 1)))
ドル = 三桁ずつ & Place(i) & ドル
Next i
Select Case ドル
Case “”
ドル = “NO DOLLARS “
Case “ONE”
ドル = “U.S DOLLAR ONE “
Case Else
ドル = “U.S DOLLARS ” & ドル & ” “
End Select
Select Case 小数部分
Case “”
小数部分 = “ONLY”
Case “ONE”
小数部分 = “AND CENT ONE ONLY”
Case Else
小数部分 = “AND CENTS ” & 小数部分 & ” ONLY”
End Select
英語表記2 = ドル & 小数部分
End Function
コメント