0

ここで行っているのは、テキストとして格納されている文字列を整数に変換することです。残念ながら、形式を一般的なものから数値に変更するだけではうまくいきません。私の前の人が行ったことは、個々の数字を手動で検索/置換することでした (つまり、0、1、2、3 などに Excel の検索置換を使用します)。

以下のコードで私が抱えている問題は、すべてではなく、一部の数字のみが置き換えられることです。私はそれがそれを行うセットパターンを理解することさえできません。forステートメントは、0から9までの各「数字」値ごとに実行する必要があると言えますか?では、なぜすべての文字列を置き換えないのでしょうか?

Dim Digit As Integer
Dim ReplacementRange As Range

Set ReplacementRange = Range("Table1[AR]")`

Digit = 0


For Digit = 0 To Digit = 9

    ReplacementRange.Replace What:=Digit, Replacement:=Digit, LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False         
    Digit = Digit + 1

Next
4

1 に答える 1

7

範囲内にテキストとして格納されている数値を数値にすばやく変換するには、次のように値を範囲に配置するだけです。

ReplacementRange.value = ReplacementRange.value


編集:時間があったので、単純な解決策の複雑な代替手段であることに加えて、あなたがやっていたことの何が悪いのかを追加したいと思いました:

forループの構造が間違っています。正しい最小構文は[variable] = [startValue] to [endValue]次のとおりですFor x = 0 to 1

For Digit = 0 To Digit = 9For Digit = 0 to 0最終的には(以前にDigitを0に設定したため)と同等に評価されます。これは、ループが値に対してのみ実行されることを意味しDigit = 0ます。また、ループ内でDigitをインクリメントします。これは、ステップを増やすことでより合理的に処理されます。この場合、すべての桁をヒットしたいので、値をインクリメントしないでください。

ループを修正するには、次の手順を実行する必要があります。

For Digit = 0 To 9
    ReplacementRange.Replace What:=Digit, Replacement:=Digit, LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False         
Next

しかし...それでも、テキストとして保存される数値の問題は解決されません。

于 2012-12-28T18:01:13.927 に答える