【问题标题】:Selection.Replace doesn't replace commas with a dotSelection.Replace 不会用点替换逗号
【发布时间】:2015-09-11 11:52:06
【问题描述】:

我有一列有数字。如果我将其设置为 TEXT 格式,而不是选择它,单击替换并用点替换逗号,它的效果很好。我的号码得到 DOTS 而不是 COMMAS。 (这就是我想要的,因为我没有使用它们的“数值”)。

如果我这样做时录制了一个宏,那就是生成的代码:

Columns("B:B").Select
    Selection.Replace What:=",", Replacement:=".", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False

如果我在相同的数据上运行此代码(原始数据,包含 COMMAS,它不起作用。为什么?

我的数据,以防万一:

1.3.11
4.5.2-714156
3.1.59
4.2.2
4,3
4,3
4,3
4,3

【问题讨论】:

  • 使用系统分隔符:十进制 COMMA 和千位分隔符 DOT 。

标签: excel vba replace


【解决方案1】:

我不一定确定您引用的代码为什么不起作用。然而,以下应该会给你我相信你想要得到的结果:

Dim Cell As Range

For Each Cell In Selection
    Cell.Value = Replace(Cell.Value, ",", ".")
Next

【讨论】:

  • 你的答案工作正常,是迄今为止最简单的......但我很好奇为什么宏生成的代码不起作用=/。如果没有人发现,我会将其标记为正确...无论如何,感谢您的时间 =)
【解决方案2】:

我真的无法解释为什么你的代码不起作用,我已经玩了几分钟,我遇到了同样的问题(在我宏记录时有效,在我重新执行时不起作用宏)。

然而,这可以成功地做你想做的事:

last = Cells(Rows.Count, 2).End(xlUp).Row
For x = 1 To last
    Cells(x, 2) = Replace(Cells(x, 2), ",", ".")
Next x

这段代码:

  1. 查找第 2 列中的最后一行
  2. 用点替换每个单元格的逗号

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-02
    • 1970-01-01
    • 1970-01-01
    • 2016-09-05
    • 2021-07-30
    相关资源
    最近更新 更多