VBA – replace在某些单元格中不起作用

我使用从数据库中提取的一些数据。 在一列中,我有一组格式为dd.mm.yyyy的数据。 我正在使用下面的行来尝试将这些值转换为dd / mm / yyyy格式为date。

.Range(Columns(j), Columns(j)).Replace What:=".", Replacement:="/" .Range(Columns(j), Columns(j)).NumberFormat = "dd/mm/yyyy" 

执行代码之后,所有replace都完成了,并且这些单元格按date格式化,但有些值是左alignment的,有些则是右alignment的。 当我在这个列中激活filter时,有些值每年都不正确(下面的截图)。

激活过滤器的列

当我去一个似乎没有工作的值(例如,截图的第一个13/01/2015),它是左alignment的。 然后,如果我双击单元格,然后按回车,单元格变成右alignment。

我已经在这些单元格中寻找额外的字符(例如空格),但没有find任何东西。

你对这个问题有什么想法吗?

ps:对不起我英语不好,我来自巴西(:

文本到列可用于将date从一种格式转换为另一种格式。 手动select范围,单击文本到列>下一步>下一步>select“date”,并指定SOURCE数据所在的date,月份和年份的顺序,然后单击确定。

当然,用VBA也可以做到这一点。 启动macroslogging器,按照上面的步骤,研究结果代码。

 Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _ TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _ Semicolon:=False, Comma:=False, Space:=False, Other:=False, OtherChar _ :="", FieldInfo:=Array(1, 4), TrailingMinusNumbers:=True 

通常情况下,您将date格式化为文本时会发生这种情况 我有一个技巧,我用来杀死这些格式问题:

  1. select整个列
  2. 转到选项卡DATA
  3. 点击TEXT TO COLUMN
  4. selectDelimited ,然后单击下一步
  5. 取消选中所有框,然后单击完成
  6. select整个列
  7. 格式化为短date