Excel 宏用于搜索和替换日期

Excel 宏用于搜索和替换日期

我有一个宏,它应该遍历数据,搜索 excel 无法识别的日期,并更改其格式,使它们更“适合 excel”。当我尝试运行它时,我收到运行时错误“450”:参数数量错误或属性分配无效。

有人可以查看我的代码并帮助我找出问题所在吗?

日期格式为“201611 - (2016 年 11 月)”,已从 CSV 文件导入。

这是我的代码

Sub TestFind()
With Worksheets("Sheet1").Range("a1:a500")
    Set c = .Find("201* - (*** 201*)", LookIn:=xlValues)
    If Not c Is Nothing Then
        firstAddress = c.Address
        Do
            c.Value = .Date(.Left(c.Value, 4), (.Mid(c.Value, 5, 2)), 1)
            Set c = .FindNext(c)
        Loop While Not c Is Nothing And c.Address <> firstAddress
    End If
End With

End Sub

答案1

以下是修改后的代码。

最显著的变化来自此:

c.Value = .Date(.Left(c.Value, 4), (.Mid(c.Value, 5, 2)), 1)

对此:

c.Value = DateSerial(Left(c.Value, 4), (Mid(c.Value, 5, 2)), 1)

请注意,我使用DateSerial函数来创建日期,并在调用DateSerialLeft和时删除了点Mid,因为这些是函数,而不是属性。

完整的函数如下:

Sub TestFind()
    With Worksheets("Sheet1").Range("a1:a500")
        Set c = .Find("201* - (*** 201*)", LookIn:=xlValues)
        If Not c Is Nothing Then
            firstAddress = c.Address
            Do While Not c Is Nothing
                c.Value = DateSerial(Left(c.Value, 4), (Mid(c.Value, 5, 2)), 1)
                Set c = .FindNext(c)
                If Not c Is Nothing Then
                    If c.Address = firstAddress Then Exit Do
                End If
            Loop
        End If
    End With
End Sub

相关内容