Jeanは、数値の表でコンマをピリオドに置き換える必要があります。彼はフランスのPCを使用してフランスで働いていますが、Excel以外のアメリカのアプリケーションでは、これらの数値を「変換」する必要があります。彼が手動で検索と置換を行うと、すべてがうまく機能します。もちろん、彼の数字は文字列に変換されますが、それはJeanで問題ありません。彼がマクロで同じ検索と置換操作を実行しようとしても、何も起こりません。カンマは無視されているようです。 Jeanは、毎回手動で実行する必要はなく、マクロでこのタスクを実行する方法を考えています。

Excelが地域設定として使用するものを一時的に変更して、Jeanが望むように情報を表示できるようにするのは比較的簡単です。次のマクロは、目的の設定をかなり手軽に切り替えます。

Sub ChangeNumberFormat()

With Application         .UseSystemSeparators = False         If .DecimalSeparator = "." Then             .DecimalSeparator = ","

.ThousandsSeparator = "."

Else            .DecimalSeparator = "."

.ThousandsSeparator = ","

End If     End With End Sub

これにより、情報の表示方法が変わり、Excel以外の形式(CSVなど)に情報をエクスポートできます。完了したら、マクロを再度実行すると、地域の設定が元の状態に戻るはずです。このアプローチの利点は、セルの内容を実際に変更することはなく、その情報の表示方法だけを変更できることです。これは、あなたの番号が番号のままであり、そのように使用され続けることができることを意味します。

より直接的なものが必要な場合は、検索と置換を使用しないのがおそらく最善です。代わりに、マクロを使用して、各セルの内容を直接変更します。このようなアプローチは、マクロであっても、検索と置換に依存するよりもはるかに高速に実行できます。この概念の簡単なアプリケーションは次のとおりです。

Sub SwitchCommasPeriods()

Dim c As Range     Dim sTemp As String          For Each c In Selection         sTemp = c.Text         sTemp = Replace(sTemp, ",", "|")

sTemp = Replace(sTemp, ".", ",")

sTemp = Replace(sTemp, "|", ".")

c = sTemp     Next c End Sub

マクロ内のいくつかのことに注意してください。まず、各セルのTextプロパティを調べます。これは、Textプロパティがセルのフォーマットされた値、つまり表示される値を返すためです。 (Valueプロパティを見るだけで、フォーマットされていない数値が得られますが、これは使用したいものではありません。)

2番目に注意すべき点は、置換機能を使用して、最初にすべてのコンマを垂直バーに置き換え、次にすべてのピリオドをコンマに、最後にすべての垂直バーをピリオドに置き換えることです。基本的にテキスト内のピリオドとコンマを交換するため、このアプローチが必要です。

マクロを使用するには、影響を与えるセルを選択して実行するだけです。選択したセルのみが処理されます。セルに数式が含まれている場合、マクロはその数式を数式の処理結果に置き換えます。ただし、これはJeanの目的には問題ないはずです。

注:

このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。

_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(13675)は、Microsoft Excel 2007、2010、2013、2016、2019、およびOffice365のExcelに適用されます。