C# から自動生成された大きな Excel シートがあり、すべての列をテキストとして出力します (これは技術的な理由で変更できません)。数値列を数値に変換するマクロを作成するのに問題があり、それを高速に実行します (シートには 80 列と 20,000 行が含まれています)。
すべてのセルを繰り返して呼び出してみました
If IsNumeric(cell.Value) Then cell.Value = CDec(cell.Value)
これは非常に遅く、「0xxx」などで始まる文字列を文字列として保持する必要があるという特別なケースがあるという追加の問題があります。を使用IsNumeric
してから に変換するとCDec
、先頭の 0 が失われます。
列の 1 つの値が文字列であるかどうかを検出し、その列を処理せず、先頭に 0 がある場合を除いて数値に変換すると言う簡単なトリックはありますか?