2016-06-16 27 views
0

如何提高將textnumber轉換爲位於範圍內的數據數量(X76:BE100000)的以下代碼的性能(運行時效率)?如何提高將textnumber轉換爲數字的vba代碼的性能

Sub ConvertTextNumberToNumber() 
    For Each r In  
     Worksheets("Sheet1").Range("X76:BE100000").SpecialCells(xlCellTypeConstants) 
     If IsNumeric(r) Then r.Value = Val(r.Value) 
    Next 

End Sub 

回答

2

Range("a1:zz100000").SpecialCells(xlCellTypeConstants, xlNumbers)

2

使用數組

Option Explicit 

Sub ConvertTextNumberToNumber() 
    Dim dataArr As Variant 
    Dim myRng As Range 
    Dim i As Long, j As Long 

    Set myRng = Worksheets("Sheet1").Range("X76:BE10000") 

    dataArr = myRng.Value2 

    For i = 1 To UBound(dataArr, 1) 
     For j = 1 To UBound(dataArr, 2) 
      If IsNumeric(dataArr(i, j)) And dataArr(i, j) <> "" Then dataArr(i, j) = CDbl(dataArr(i, j)) 
     Next j 
    Next i 

    myRng.Value2 = dataArr 
End Sub 
+0

完美的解決方案,但你的代碼將 「0」 時,有空白字段。你知道爲什麼要解決這個問題嗎? –

+0

你試過如果IsNumeric(dataArr(i,j))和dataArr(i,j)<>「」然後 – Fredrik

+0

@Fredrik工作。我相應地編輯了代碼。我謝謝你。希望Yasmine也會...... – user3598756