1

我有 2 个工作簿 book1 和 book2。book1 和 book2 的第一行都是日期

例如 Book1
A B C
Jan-13 Feb-13 Mar-13
1 4
2 5
3 6

Book2
A B C
Jan-13 Feb-13 Mar-13
1 4 3
5 7 6
9 8 1

想法是从书 1 中选择一个日期并查找该日期是否存在于 book2 并将书 2 列的内容复制到 book1 列

例如,如果我在第 1 册中选择 Mar-13,我应该能够在第 2 册中找到 Mar-13,并将 C3 到 C5 从第 2 册复制到第 1 册的 C3 到 C5。

我正在努力使用 vba 中的 find 命令,我正在使用类似这样的东西来查找

With ThisWorkbook.ActiveSheet.Range("A1:Z1")

    Set rngSMonthYr = .Find(What:=dtMonthYr, _
        LookIn:=xlValues, _
        LookAt:=xlWhole, _
        SearchOrder:=xlByColumns, _
        SearchDirection:=xlNext)
End With

但它根本不起作用。

4

1 回答 1

1

确保将变量声明为Date类型,并确保包含日期的“日”部分。

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
于 2013-10-02T01:45:52.337 回答