【问题标题】:How to highlight cells in Excel that don't follow the exact format?如何突出显示不遵循确切格式的 Excel 中的单元格?
【发布时间】:2017-03-11 13:40:35
【问题描述】:

尝试将数据从 Access 数据库文件导出到 SQL Server 2012 时,我收到错误数据错误。查了一下,发现表和列报错了。

该列包含日期'mm/dd/yyyy'格式的数据,并且似乎有一些错误的条目。

目前我正在尝试查找错误数据,但是有 4000+ 行数据。作为出路,我决定使用 excel 来使用它的条件格式。但是,我找不到/创建适合我需要的规则。

所以在我开始寻找其他内容之前,我想问一下:有没有办法(公式或规则)突出显示不符合正确格式的单元格?

例如,我需要精确的格式“mm/dd/yyyy”,因此 01/01/2016 将是正确的,而 1/1/2016 或 01/01/16 将突出显示。

【问题讨论】:

  • 您可能想阅读以下内容:stackoverflow.com/questions/37100821/… 和以下内容:stackoverflow.com/questions/38000194/… 之后,您会意识到 Excel 中的所有日期只是数字。因此,您只需要检查所有这些单元格是否都包含数字。这是一个简单的验证规则。但是,如果您只有格式为日期的文本,那么您就不走运了,需要一些 VBA 编程来完成。
  • @Ralph 在 excel 中,它是一种自定义格式 mm/dd/yyyy,所以我认为这是文本。然后我似乎在这里不走运。不过还是会读一读,谢谢。
  • 文本日期一团糟。有 Excel 公式(例如 DATEVALUE)和 vba 函数(例如 CDate),它们尝试将文本日期转换为实际日期(格式化为日期的数字)。然而,它们可能是错误的,在我的公司环境中,我开始明白最好解析所有文本字符串并自己(“手动”)将它们转换为真实日期,然后验证结果(确保你没有得到超出范围的日期,例如 1921 年的日期)。
  • @Ralph 似乎有很多不必要的工作。我会寻找一些替代解决方案。

标签: excel date format


【解决方案1】:

A列中使用“日期”,这个小子将在黄色中标记文本单元格,在绿色中标记格式错误的日期单元格:

Sub DateCheck()
    Dim r As Range, s As String, DQ As String
    DQ = Chr(34)
    For Each r In Intersect(Range("A:A"), ActiveSheet.UsedRange)
        If r.Value <> "" Then
            s = Evaluate("Cell(" & DQ & "type" & DQ & "," & r.Address(0, 0) & ")")
            If s = "l" Then
                r.Interior.Color = vbYellow
            ElseIf r.NumberFormat <> "mm/dd/yyyy" Then
                r.Interior.Color = vbGreen
            End If
        End If
    Next r
End Sub

【讨论】:

  • 谢谢你,我稍后一定会试一试,然后报告你的结果。
  • @VadzimSavenok 我也可以使用Type() 函数。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-09
  • 1970-01-01
  • 2022-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多