輸入:
輸出:零零7,不是七轉換三個數字(例如035)轉換成文本(例如零三五)
輸入:
輸出: 零一七,不17
輸入:
輸出:一零零。不是一百個
我希望能夠像上面的例子一樣轉換,但我無法爲所需輸出編寫宏。我正在使用Excel 2007.
輸入:
輸出:零零7,不是七轉換三個數字(例如035)轉換成文本(例如零三五)
輸入:
輸出: 零一七,不17
輸入:
輸出:一零零。不是一百個
我希望能夠像上面的例子一樣轉換,但我無法爲所需輸出編寫宏。我正在使用Excel 2007.
如果您的數字在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
如果你想純粹的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。