Jean需要用数字表中的句点替换逗号。他使用法国PC在法国工作,但是他需要为非Excel American应用程序“翻译”这些数字。当他手动执行“查找和替换”时,一切正常。当然,他的数字会转换为字符串,但是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属性,则会得到未格式化的数字,这不是您要使用的数字。)

注意的第二件事是,使用“替换”功能首先用竖线替换所有逗号,然后用逗号替换所有句点,最后用句点替换所有竖线。这种方法是必需的,因为您实际上是在交换文本中的句点和逗号。

若要使用宏,只需选择要影响的单元格,然后运行它。仅处理那些选定的单元格。如果单元格包含一个公式,则宏将用该公式的处理结果替换该公式。但是,出于Jean的目的,这应该很好。

注意:

如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本提示(13675)适用于Microsoft Excel 2007、2010、2013、2016、2019和Office 365中的Excel。