2

私は、桁区切り記号として奇妙なスペースを使用するワークブックを使用しています。このセパレータを含む数値は、Excel ではテキストとして扱われます。検索と置換ツールを使用してこの区切り記号を削除すると、数字が数字として正しく認識されます。Cells.Replace メソッドを使用して VBA を使用して同じことを行うと、数値はテキストとして保存され続けます。これらの数値を含むセルに緑色のコーナーが表示され、数値形式に変換できるようになりますが、このアクションはマクロ レコーダーによって記録されないため、このオプションは VBA では利用できないようです。

ワークシートのセルを配列にコピーし、値をループして千単位の区切り記号を置き換え、配列をワークシートに貼り付けます。私の質問は、これらの桁区切り記号を削除して、数字が数字として扱われるようにするより効率的な方法はありますか?

4

3 に答える 3

4

セル B3 と B5 の 9 と 5 の間のスペースのことですか? はいの場合、スペースを削除するだけでは問題は解決しません。コンマも削除して数値に変換し、適切な桁区切り記号を使用してフォーマットする必要があります。このコードとスナップショットを参照してください

スナップショット

ここに画像の説明を入力

コード

Sub Sample()
    With Sheets("Feuil1").Columns(2)
        .Replace What:=" ", Replacement:="", LookAt:=xlPart, SearchOrder:= _
        xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False

        .Replace What:=",", Replacement:="", LookAt:=xlPart, SearchOrder:= _
        xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False

        .NumberFormat = "#,##0"
    End With
End Sub

HTH

于 2012-04-09T18:07:45.653 に答える
1

上記の答えは正しいです。この問題は、Excel の地域設定に起因します。(つまり、フランスでは数値は 1234,56 にフォーマットされていますが、英語版の Excel では 1234.56 です) 検索と置換ツールを使用しても、地域設定には影響しません。

ただし、VBA を使用してドットをカンマで置き換える場合、英語ベースの VBA はすべての数字を文字列として設定します。区切り文字をドットに戻すと、地域の設定に従って数字が表示されます (英語の設定ではドット、フランスではカンマ)。

お役に立てれば

于 2014-03-21T09:46:56.147 に答える
0

3 桁ごとの区切り記号として改行なしのスペースを使用し、10 進数の区切り記号としてカンマを使用した数値は、テキストとして格納されていました。VBAのメソッドを使用しCells.Replaceてスペースを削除しても、値は数値形式に変換されず、テキストとして保存されたままになります。解決策はCells.Replace、値を数値として扱い、ワークシートにそのままコピーするために、VBA のカンマをドットに置き換えるために 2 回目の使用でした。次に、Excel は地域の設定に従って数値を書式設定します (必要に応じてドットをカンマに置き換えます)。

于 2012-04-09T20:24:36.653 に答える