如何根据单元格在Excel中的值更改其类型?

如何根据单元格在Excel中的值更改其类型?,excel,vba,excel-formula,excel-2013,Excel,Vba,Excel Formula,Excel 2013,我有一个excel 2013文件,包括以下数据: User LastLogin A 03/15/2020 B user's machine not found C 03/09/2020 D 03/25/2020 E user's machine not found LastLogin列的类型为“Text” 我需要定义一个条件或开发一个VB脚本来根据其值更改单元格的类型。如果是日期,则格式应为“日期”,否则应为“文本” 我在网上查看了一些示例,但只能找到

我有一个excel 2013文件,包括以下数据:

User  LastLogin
A     03/15/2020
B     user's machine not found
C     03/09/2020
D     03/25/2020
E     user's machine not found
LastLogin
列的类型为“Text”

我需要定义一个条件或开发一个VB脚本来根据其值更改单元格的类型。如果是日期,则格式应为“日期”,否则应为“文本”

我在网上查看了一些示例,但只能找到一些更改单元格UI的示例(突出显示等)。如何根据单元格的值更改单元格的类型


如果您有任何帮助,我们将不胜感激。

在Excel中,通常会在输入值后立即识别并设置单元格的格式,除非将单元格的格式指定为文本。因此,将文本格式转换为单元格格式中的另一种格式后,再次输入该值将自动设置该格式。设置日期格式后,如果文本值出现,则不会以日期格式显示

Sub test()
    Dim Ws As Worksheet
    Dim vDB, rngDB As Range

    Set Ws = ActiveSheet

    Set rngDB = Ws.Range("a1").CurrentRegion
    vDB = rngDB
    With Ws
        .Columns(2).NumberFormat = "mm/dd/yyyy"
    End With
    rngDB = vDB
End Sub
之前

之后

在Excel中,通常会在输入值后立即识别和设置单元格的格式,除非将单元格的格式指定为文本。因此,将文本格式转换为单元格格式中的另一种格式后,再次输入该值将自动设置该格式。设置日期格式后,如果文本值出现,则不会以日期格式显示

Sub test()
    Dim Ws As Worksheet
    Dim vDB, rngDB As Range

    Set Ws = ActiveSheet

    Set rngDB = Ws.Range("a1").CurrentRegion
    vDB = rngDB
    With Ws
        .Columns(2).NumberFormat = "mm/dd/yyyy"
    End With
    rngDB = vDB
End Sub
之前

之后

只需将整个列格式化为日期。由于日期是以数字形式存储的,也许您可以使用它来检查它是文本还是数字,并将其作为一个函数的一部分来完成您要做的任何事情。(但如上所述,没有理由不能将文本放在格式为date的单元格中。单元格格式会发生什么变化?)只需将整个列的格式设置为date即可。由于日期存储为数字,也许您可以使用它来检查它是文本还是数字,并将其作为完成您尝试执行的任何操作的一部分。(但如上所述,没有理由不能将文本放入格式为日期的单元格中。您希望单元格格式发生什么变化?)