2017-10-11 17 views
0

列のデータ型をテキストから数値に更新する必要があります。これを使用してさらに計算を行うことができます。以下のコードは私のために働いていません。この問題の回避策を提案してください。列のデータ型をテキストから数値に変更する

Sub ConvertTextToNumber() 

    Dim rRange As Range 
    Dim rCell As Range 
    Dim Rowcount As Long 


    Worksheets("Input").Select 
    Rowcount = Application.CountA(Range("C:C")) 
    Set rRange = ActiveSheet.Range("AQ2:AQ" & Rowcount) 

    For Each rCell In rRange.Cells 

     rCell.Value = rCell.Value * 1 

    Next rCell 

End Sub 

答えて

1

ループを実行する前にNumberFormatを数値形式に設定してみてください。

Set rRange = ActiveSheet.Range("AQ2:AQ" & Rowcount) 
rRange.NumberFormat = "#,##0" ' anything but "@"/text 

For Each rCell In rRange.Cells 
    Debug.Assert IsNumeric(rCell.Value) 'will break if not true 
    rCell.Value = rCell.Value * 1 
Next rCell 

私はエラーがこれまでに遭遇した場合Assert呼び出しは実行を中断することを加えました。 rRangeにセルエラーが含まれている場合、rCell.Value * 1タイプの不一致ランタイムエラーを発生させます。

はまた、エラー細胞が予想されることになっている場合、あなただけの、エラー細胞をスキップすることができます:

For Each rCell In rRange.Cells 
    If Not IsError(rCell.Value) Then 
     rCell.Value = rCell.Value * 1 
    End If 
Next rCell 
+0

こんにちはマット、あなたの助けをいただき、ありがとうございます。上記のコードを使用してみましたが、まだ成功していません。また、コードは壊れませんでした。私はExcelで手動でこの列を選択し、 "列にテキストを変換ウィザード"(Alt + D + E + N + N + Fショートカット)を使用すると、列AQを参照しているセルが正常に動作し、値が取得される予想どおりの値が設定されます。 – SK7324

+1

"テキストを列に変換する"がどこにあるのか分かりません。あなたの質問は、データがどのように見えるのかについて言及していません、この答えは、 'rRange'が数字として使用可能な値の1つのセットを含んでいると仮定します。あなたの画面を見ていない人は、あなたのデータがどのように見えるのか推測できません。 –

+0

'rRange'の形式はテキストで、数値に変換しようとしています。ご協力いただきありがとうございます :) – SK7324

関連する問題