我的日期excel文件格式为Mar 30 2016 10:12:27:396AM
我想将格式更改为mm/dd/yyyy
。但是我的代码出错了。
运行时错误'13':类型不匹配
这是我收到错误SecondDate = Trim(Sheet2.Range("B" & RowNo).Value)
注意:A列和B列的数据是日期
我的代码:
Dim Result, RowNo As Long
Dim FirstDate As Variant
Dim SecondDate As Variant
RowNo = 2
FirstDate = Trim(Sheet2.Range("A" & RowNo).Value)
SecondDate = Trim(Sheet2.Range("B" & RowNo).Value)
FirstDate = Format(FirstDate, "mm/dd/yyyy")
SecondDate = Format(SecondDate, "mm/dd/yyyy")
Do Until Sheet2.Cells(RowNo, 1) = ""
FirstDate = Sheet2.Cells(RowNo, 1)
SecondDate = Sheet2.Cells(RowNo, 2)
If DateDiff("d", FirstDate, SecondDate) >= 15 Then
Sheet2.Cells(RowNo, 3) = "1"
Sheet2.Cells(RowNo, 4) = "2"
End If
RowNo = RowNo + 1
Loop
我确实感觉自己正走在正确的道路上......我错过了什么?
更新:我的脚本将从Column A
和Column B
获取数据并使用 DateDiff 功能我将减去两列如果差异<15,则将Column C and D
标记为1, 2
注意:
更新2 :
Column A | Column B | Column C
Mar 1 2016 10:12:27:396AM | Mar 30 2016 10:12:27:396AM |
Mar 1 2016 10:12:27:396AM | Mar 30 2016 10:12:27:396AM |
在我的文件中这是日期格式,如果您尝试将其作为示例数据,它将无法工作,因为VBA不会将其识别为dateformat?
答案 0 :(得分:1)
也许这会解决你想要做的事情。
测试输入:
测试输出:
代码:
Sub DateStuff()
Dim FirstDate As Range, SecondDate As Range
Dim RowNo As Long
Set FirstDate = Sheet4.Range("A1")
Set SecondDate = Sheet4.Range("A2")
FirstDate.NumberFormat = "mm/dd/yyyy"
SecondDate.NumberFormat = "mm/dd/yyyy"
RowNo = 2
Do Until Sheet4.Cells(RowNo, 1) = ""
Set FirstDate = Sheet4.Cells(RowNo, 1)
Set SecondDate = Sheet4.Cells(RowNo, 2)
If IsDate(FirstDate.Value) And IsDate(SecondDate.Value) Then
If DateDiff("d", FirstDate, SecondDate) >= 15 Then
Sheet4.Cells(RowNo, 3) = 1
Sheet4.Cells(RowNo, 4) = 2
End If
End If
RowNo = RowNo + 1
Loop
End Sub
请花几分钟时间了解此代码:
FirstDate和SecondDate是Range数据类型,而不是Date或Variant。他们指向的单元格中的数据是日期或其他内容。
设置格式时,会设置工作表上的显示方式。它没有在VBA中格式化字符串。
在进行DateDiff调用之前,请确保FirstDate和SecondDate在单元格中确实包含Date数据类型,这样可以防止出现许多错误。
使用Date函数对Date数据类型的操作不依赖于格式。他们使用内部日期类型。格式化仅影响日期转换为字符串和/或在工作表上显示的方式。
你问过检查年份而不是白天。内置的VBA功能(例如年,月等)将有助于此。
关于您对问题的更新:
我不确定您从哪里获取时间码,但Excel无法识别:000
毫秒。它使用.000
。见下文......