0

入力: 7
出力:ゼロ ゼロ セブン、セブンではありません

入力: 17
出力: 0 1 7、17 ではありません

入力: 100
出力: 1 つのゼロゼロ. 百ではない

上記の例のように変換できるようにしたいのですが、目的の出力用のマクロを作成できません。エクセル2007を使用しています。

4

2 に答える 2

0

純粋な 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 にこれを非常に簡単に適応させることができます。

于 2013-07-03T03:01:26.377 に答える