自动字符替换优秀

时间:2016-07-12 14:07:35

标签: excel replace character

我已经检查了各种网站上的各种示例,在Excel 2013中的单元格中输入时,我无法找到自动替换字符(。)的方法。

我想要的是能够取代“。”什么都没有或者更确切地说是删除点它将是数字的一部分,如33.33.2320,应编辑为33332320.保留尾随零或任何前导零。

如果可能的话,我希望在整个专栏中使用Excel。 点可以手动输入或复制/粘贴,并且需要在执行此操作时自动删除。

我已尝试使用Macros,替代等,但如果您知道我的意思,那么这似乎是在“运行时”之后采取的行动。

数据验证实际上是从输入值中停止的,这不是我想要的。如果有人手动输入点或复制/粘贴它,就应该删除它。

由于

1 个答案:

答案 0 :(得分:1)

您可以使用在Worksheet.Change Event发生时运行的宏。

在Excel中,右键单击要监听事件的工作表的“工作表名称”选项卡,然后选择View Code。现在,您不在通用模块中,而是在工作表类模块中。

其中放了那个代码:

Private Sub Worksheet_Change(ByVal Target As Range)

 If Target.Column = 3 Then 'only column 3 = C

  For Each oCell In Target

   If InStr(oCell.Text, ".") <> 0 Then
    Application.EnableEvents = False 'We change workshheet cells within Worksheet_Change.
                                     'So we must disable events to prevent endless loop.
    oCell.NumberFormat = "@"
    oCell.Value = Replace(oCell.Value, ".", "")
    Application.EnableEvents = True
   End If

  Next

 End If

End Sub

现在每次在此工作表中发生更改时,代码都会运行。如果更改位于列C中且单元格包含“。”,则替换完成。

要保留前导零,则将单元格设置为Text数字格式。

请注意Application.EnableEvents = FalseApplication.EnableEvents = True。如果我们在Worksheet_Change中更改工作表单元格,我们必须禁用事件以防止无限循环。此外,我们必须稍后激活事件,因为如果没有,则从此时起不会运行任何事件过程。

这有一个问题。如果输入001.234,则前导零将丢失。这是因为更改事件在输入后开始,然后数字已经是1.234。在我看来,没有办法解决这个问题。 001.234.567将有效,因为假设为数字,而不是字符串。

如果可能,您可以将整个列设置为Text数字格式。这将解决问题。但是在这一栏中不再可能输入数字。