Excel 用逗号替换句点,最后删除句点

Excel 用逗号替换句点,最后删除句点,excel,vba,replace,Excel,Vba,Replace,这是我使用VBA的第一个月,我克服了很多障碍,减少了代码的循环墙,使代码几乎不可擦除,即使使用宏的用户不知道他/她在做什么,但我仍然坚持这一点: If i = 1 Or i = 2 Then Columns("F:F").Select Selection.Replace ".", "," Selection.NumberFormat = "dd\/mm\/yyyy hh:mm:ss" End If 由于某种原因,更换以下部件的结果: 这是43859573402778吗 我尝试了不同

这是我使用VBA的第一个月,我克服了很多障碍,减少了代码的循环墙,使代码几乎不可擦除,即使使用宏的用户不知道他/她在做什么,但我仍然坚持这一点:

If i = 1 Or i = 2 Then
  Columns("F:F").Select
  Selection.Replace ".", ","
  Selection.NumberFormat = "dd\/mm\/yyyy hh:mm:ss"
End If
由于某种原因,更换以下部件的结果: 这是43859573402778吗

我尝试了不同的变化,从录制宏到逐渐简化代码,最后得到了上述结果。结果总是一样的。我错过了什么

代码有点复杂,因为我必须将6个临时工作簿中的数据放入4张表中,并根据用户登录等进行保护。这非常有效,但我认为,让我们做得更好,因为6个qlikview工作簿中的3个在4个时间跟踪列中的1个列中有不正确的格式


我不得不为这样的事情写我的第一篇文章,这有点让人难过。我假设你当前的数据实际上是字符串数据,看起来像数值。如果F列的格式为
常规
,并且出现了这些“字符串”数字,则可以使用
Range.TextToColumns
对其进行更改。例如:


似乎您在Excel文件中有不同的十进制分隔符设置

转到选项->扩展->使用系统小数分隔符

某些工作簿上可能禁用此选项,
设置为十进制分隔符

要修复:

如果Application.International(xlDecimalSeparator)=“,”则
MsgBox“错误的十进制分隔符(,)!!”
Application.UseSystemSeparators=True
如果结束
如果要输出点,但保留逗号分隔符,请使用

使用此工作簿。工作表(“Sheet1”)
MsgBox Str(.Range(“A1”))
以

请参见

如果
是十进制分隔符(windows区域设置),则一切正常,因为您有一个数字,无法在其中插入字符串
。你为什么这么做?试试Str(myNumber)Excel中也有一个分隔符选项(选项->扩展名->使用系统设置(或不使用),所以这个宏的结果是一个100人的文件。几乎所有人都有“,”作为十进制符号。但最重要的是,数据源有“,”作为十进制符号。许多列中只有一列出错。我可以要求在源代码中进行修复,但这需要很长时间,而且已经持续了几年。您的源数据是实际的数值还是字符串数据?如果您询问的是内容,那么日期和时间都是数字。如果您询问的是列的格式,则是字符串。只有所有包含数字数据的列中有一列有小数点。这是来自源,当其他列中有逗号时,它决不能是数字。因此,这不是系统设置的问题。它是字符串数据,看起来像数值。很抱歉,您错了@computerversteher。除on外,所有列中的数据都是数字e、 源数据粘贴的字符串数据看起来像数字。怎么会发生这种情况?Excel将数据视为具有错误ds的数字?@computerversteher。将包含点的字符串数据粘贴到一个通用格式的单元格中。感谢您的解释,但仍然对此感到困惑;)@JvdV-Ha!我无法提高投票率,因为当时我没有得到15分。现在你得到了你应得的:)
Sub Test()

Dim lr As Long, rng As Range

With Sheet1

    'Get last used row of column F and set rng
    lr = .Cells(.Rows.Count, 6).End(xlUp).Row
    Set rng = .Range("F2:F" & lr)

    'Replace dot with comma and change to numeric
    rng.TextToColumns Destination:=Range("F2"), DataType:=xlFixedWidth, DecimalSeparator:=".", ThousandsSeparator:=","
    rng.NumberFormat = "dd\/mm\/yyyy hh:mm:ss"

End With

End Sub