我有2本工作簿book1&第二册。 book1和book2都有第一行作为日期
e.g。
书1
A B C
1月13日 - 2月13日 - 3月13日 - 13日
1 4
2 5
3 6
Book2
A B C
1月13日 - 2月13日 - 3月13日 - 13日
1 4 3
5 7 6
9 8 1
我们的想法是从第1册中选择一个日期,并查看book2中是否存在日期,并将第2册列的内容复制到book1列
e.g。如果我在第1册中选择Mar-13,我应该能够在第2册中找到Mar-13并将第3册中的C3复制到C5,从第1册复制到C5。
我正在努力使用vba中的find命令,我正在使用这样的东西来查找
With ThisWorkbook.ActiveSheet.Range("A1:Z1")
Set rngSMonthYr = .Find(What:=dtMonthYr, _
LookIn:=xlValues, _
LookAt:=xlWhole, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlNext)
End With
但它根本不起作用。
答案 0 :(得分:1)
确保将您的变量声明为Date
类型,并确保您包含" day"部分日期。
Dim dtMonthYr As Date
dtMonthYr = #1/1/2013#
即使您向单元格输入1/2013
之类的值,Excel也会将其存储为长日期。经过测试,它确实有效。
Sub TestFindDate()
Dim rngSMonthYr As Range
Dim dtMonthYr As Date
Dim wsFind as Worksheet
dtMonthYr = #1/1/2013#
Set wsFind = ThisWorkbook.Sheets("Sheet2") '## Modify as needed
With wsFind.Range("A1:Z1")
Set rngSMonthYr = .Find(What:=dtMonthYr, _
LookIn:=xlValues, _
LookAt:=xlWhole, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlNext)
End With
If rngSMonthYr Is Nothing Then
Debug.Print dtMonthYr & " not found"
Else:
Debug.Print rngSMonthYr.Address
End If
Emd Sub