首页 > 解决方案 > Vlookup 单元格包含日期格式、文本和一般格式的日期

问题描述

我正在查找包含日期的单元格,其中一些为日期格式,另一些为文本格式,另一些为一般格式。我正在尝试vlookup显示单元格的值。

到目前为止,如果单元格的格式为日期,则返回一个数字,如果单元格的格式为文本,则正确返回值,如果单元格的值为日期,则返回数字,如果我手动将其变为日期格式,它会打印日期,mm/dd/yyyy而不是打印日期,dd/mm/yyyy因为它在我的工作表中vlookup。是否有代码可以“截图”该值,并且vlookup它与显示的完全相同(就好像它是一个文本一样)。

这是我尝试过的。它运行但仍然没有解决任何问题。

新代码

lastrow2 = ws3.Range("F" & Rows.Count).End(xlUp).Row
Dim cell As Range
Dim CellText As String
For Each cell In ws3.Range("I2:I" & lastrow2)
    If cell.Text <> cell.Value And Len(cell.Value) <= 255 Then
        CellText = cell.Text
        cell.NumberFormat = "@"
        cell.Value = CellText
    End If
Next cell

编辑

输入数据示例(我提供了两个截图来查看输入日期如何具有不同的格式

在此处输入图像描述 在此处输入图像描述

标签: excelvbadate

解决方案


这个简短的 nacro 将在I:J列中查找可以解释为日期的数据,并将其转换为格式为"dd/mm/yyyy"的真实日期:

Sub DateFixer()
    Dim ws3 As Worksheet, r As Range, d As Date
    Set ws3 = ActiveSheet

    For Each r In ws3.Range("I:J").Cells.SpecialCells(2)
        arr = Split(r.Text, "/")
        If UBound(arr) = 2 Then
            d = DateSerial(arr(2), arr(1), arr(0))
            r.Clear
            r.NumberFormat = "dd/mm/yyyy"
            r.Value = d
        End If
    Next r
End Sub

推荐阅读