搜索复制的值 MACRO

Search a copied value MACRO

我有两个 sheet:

  1. 数据库

  2. 宏sheet:它有一行日期将成为宏后table的标题。

Objective:在宏sheet中获取第一个日期的值并查找它在数据库中的位置sheet。然后,在数据库sheet中,复制与之前复制的日期对应的整个列。

我知道代码应该是这样的:

    Sheets("Macro").Select
    Range("K3").Select
    Selection.Copy
    Sheets("Database").Select
    Cells.Find(What:=Selection.PasteSpecial xlValues, After:=ActiveCell, LookIn:=xlFormulas, _
        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False).Activate
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Sheets("Macro").Select
    ActiveSheet.Paste

这段代码不行,因为搜索部分没做好,望指正

类似的东西。

阅读 this 了解不使用 Select 或 Activate 的优势。

使用 Find 时,请始终先检查您的搜索字词是否已找到,以避免出错。例如,您无法激活不存在的单元格。

Sub x()

Dim r As Range

With Sheets("Database")
    Set r = .Cells.Find(What:=Sheets("Macro").Range("K3").Value, lookAt:=xlPart, _
                        SearchOrder:=xlByRows, SearchDirection:=xlNext, _
                        MatchCase:=False, SearchFormat:=False)
    If Not r Is Nothing Then
        Range(r, r.End(xlDown)).Copy Sheets("Macro").Range("A1")
    End If
End With

End Sub

遍历宏工作表中的 header 日期。如果可以在数据库工作表的 header 行中找到任何内容,请将该列复制到 header 下的宏工作表。

sub getDateData()

    dim h as long, wsdb as worksheet, m as variant, arr as variant

    set wsdb = worksheets("database")

    with worksheets("macro")

        for h=1 to .cells(1, .columns.count).end(xltoleft).column

            m = application.match(.cells(1, h).value2, wsdb.rows(1), 0)

            if not iserror(m) then
                arr = wsdb.range(wsdb.cells(2, m), wsdb.cells(rows.count, m).end(xlup)).value
                .cells(2, h).resize(ubound(arr, 1), ubound(arr, 2)) = arr
            end if

        next h
    end with

end sub