入力: 7
出力:ゼロ ゼロ セブン、セブンではありません
入力: 17
出力: 0 1 7、17 ではありません
入力: 100
出力: 1 つのゼロゼロ. 百ではない
上記の例のように変換できるようにしたいのですが、目的の出力用のマクロを作成できません。エクセル2007を使用しています。
入力: 7
出力:ゼロ ゼロ セブン、セブンではありません
入力: 17
出力: 0 1 7、17 ではありません
入力: 100
出力: 1 つのゼロゼロ. 百ではない
上記の例のように変換できるようにしたいのですが、目的の出力用のマクロを作成できません。エクセル2007を使用しています。
純粋な VBA が必要な場合、数式やルックアップ テーブル、ヘルパー列などが不要な場合は、これでうまくいくはずです。基本的に、特定の整数値を目的の文字列に変換する関数を使用してルックアップ テーブルを複製します。
Sub Test2()
Dim rng As Range
Dim cl As Range
Dim clVal As String
Dim strVal As String
Dim i As Integer
Set rng = Range("F1:F4") '# Modify this line to be your range
'Make sure they're all three digits:
For Each cl In rng.Cells
clVal = cl.Value
Do While Not Len(clVal) >= 3
clVal = "0" & clVal
Loop
'Now, parse the digits:
For i = 1 To Len(clVal)
strVal = strVal & " " & ConvertNumber(Mid(clVal, i, 1))
Next
strVal = Trim(strVal)
cl.Value = strVal
strVal = vbNullString
Next
End Sub
Function ConvertNumber(i As Integer) As String
Select Case i
Case 1
ConvertNumber = "one"
Case 2
ConvertNumber = "two"
Case 3
ConvertNumber = "three"
Case 4
ConvertNumber = "four"
Case 5
ConvertNumber = "five"
Case 6
ConvertNumber = "six"
Case 7
ConvertNumber = "seven"
Case 8
ConvertNumber = "eight"
Case 9
ConvertNumber = "nine"
Case 0
ConvertNumber = "zero"
End Select
End Function
ワークシートから直接呼び出すことができる UDF にこれを非常に簡単に適応させることができます。