VBA - 替换在某些单元格中不起作用

时间:2016-01-22 23:59:03

标签: excel vba replace

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

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

执行代码后,所有替换都完成了,并且单元格被格式化为日期,但是一些值保持对齐,一些值是右对齐的。当我在此列中激活过滤器时,某些值每年分组不正确(下面的屏幕截图)。

Column with filter activated

当我转到一个似乎不起作用的值时(例如,屏幕截图的第一个13/01/2015),它会保持对齐状态。然后,如果我在单元格中双击并按Enter键,则单元格将右对齐。

我在这些单元格中搜索了额外的字符(例如空格),但没有找到任何内容。

您对此问题有任何想法吗?

p.s:抱歉我的英语不好,我来自巴西(:

2 个答案:

答案 0 :(得分:1)

可以使用文本到列将日期从一种格式转换为另一种格式。手动,您可以选择范围,单击文本到列>下一个>下一个>选择“日期”并指定 SOURCE 数据所在的日,月,年的顺序,然后单击“确定”。

当然,使用VBA也可以做到这一点。启动宏录制器,按照上述步骤研究生成的代码。

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

答案 1 :(得分:0)

通常,当您将日期格式化为文本时会发生这种情况。我有一个技巧可以用来杀死那些格式化问题:

  1. 选择整栏
  2. 转到标签DATA
  3. 点击TEXT TO COLUMN
  4. 选择Delimited,然后点击下一步
  5. 取消选中所有框,然后点击完成
  6. 选择整栏
  7. 将其格式化为短日期