2012-04-26 16 views
0

C#で生成された大規模なExcelシートを自動的に作成します。これは、すべての列をテキストとして出力します(これは技術的な理由で変更できません)。数値列を数値に変換して高速化するマクロを作成するのに問題があります(このシートには80列と20,000行が含まれています)。大きなファイルのテキスト列を数値に変換する

私はすべてのセルを繰り返し処理し、これは非常に遅く、私は、このような「0XXX」としてのもので始まる文字列として保持する必要がある特殊なケースを持っている追加の問題を抱えている

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

を呼び出して試してみました文字列。 IsNumericを使用してCDecに変換すると、先頭の0が失われます。

列の1つの値が文字列であるかどうかを検出する簡単なトリックがありますか?列を処理しないでください。そうでない場合は先頭に0がある場合は数値EXCEPTに変換しますか?

答えて

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 
関連する問題