2012-04-26 39 views
0

我有一個從C#自動生成的大型Excel工作表,它將所有列輸出爲文本(由於技術原因,這不能更改)。我在編寫宏時會遇到問題,它會將數字列轉換爲數字,並快速執行(該表包含80列和20000行)。將文本列轉換爲大文件的數字

我試圖遍歷所有的細胞,並呼籲

If IsNumeric(cell.Value) Then cell.Value = CDec(cell.Value) 

這是非常緩慢的,有我在那裏開始的字符串的東西,如「0XXX」的特殊情況下,額外的問題需要保持爲一個字符串。如果我使用IsNumeric然後轉換爲CDec,那麼我將失去領先的0!

是否有一些簡單的技巧來說明如果一列中的一個值是一個字符串,那麼不要處理該列,否則將它們轉換爲數字除非我們有一個前導0的情況。

回答

0

是否將值存儲在內存中並執行檢查工作?類似於下面的代碼,但你必須改進它,並取代condition_is_true有意義的東西。我會用一個函數返回一個布爾值。

Dim input_var As String 

For r = 1 To 20000 
    For c = 1 To 80 
     input_var = Sheet1.Cells(r, c).value 
     'do some stuff to the string 

     If condition_is_true Then 
      Sheet1.Cells(r, c).value = CDec(input_var) 
     Else 
      Sheet1.Cells(r, c).value = input_var 
     End If 
    Next c 
Next r