2013-07-02 30 views

回答

0

如果您的數字在Column1中從Row1開始,並且您有一個查找表(例如D1 = 0,E1 =零等等,直到D10 = 9和E10 = 9),則以下可能適合:

Sub Macro1() 
    Range("B1").Select 
    ActiveCell.FormulaR1C1 = _ 
    "=IF(LEN(RC[-1])=1,""zero zero ""&VLOOKUP(1*RC[-1],C[2]:C[3],2,0),IF(LEN(RC[-1])=2,""zero ""&VLOOKUP(1*LEFT(RC[-1],1),C[2]:C[3],2,0)&"" ""&VLOOKUP(1*RIGHT(RC[-1],1),C[2]:C[3],2,0),VLOOKUP(1*LEFT(RC[-1],1),C[2]:C[3],2,0)&"" ""&VLOOKUP(1*MID(RC[-1],2,1),C[2]:C[3],2,0)&"" ""&VLOOKUP(1*RIGHT(RC[-1],1),C[2]:C[3],2,0)))" 
    ActiveCell.Copy 
    Range("A1").Select 
    Range(ActiveCell, ActiveCell.End(xlDown)).Offset(0, 1).Select 
    ActiveSheet.Paste 
End Sub 
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。