根据单元格值查找所有行,然后复制到其他工作表。

时间:2018-07-13 22:10:10

标签: excel vba search

我是excel / vba菜鸟。我对vba的经验很少。我并不是要有人为我做事,只是帮我提供一些样品,这样我就可以开始弄清楚我的需要了。

我一直在寻找一种方法来帮助我根据放置在单元格中的值搜索电子表格。这就是我所拥有的。我有一个包含4个标签的电子表格,前3个标签具有不同的数据和不同的列数。每个表上都相同的一件事是前三列。

date         case#       ticket#
7/14/2018   50807966    5330826969
7/3/2018    50811017    5330860547
7/1/2018    50811022    5330860631
7/13/2018   50811026    5330860683

我想做的是在工作表4上,在标有票证#的单元格中输入一个数字,然后查找每张工作表上的所有行并将其复制到第四张工作表中。我希望它将找到的每一行复制到工作表4的下一个空行。我将从工作表1开始并遍历工作表3。

我想要帮助的是如何做第一张纸。一旦有了关于如何做一张纸的想法,我就可以弄清楚剩下的事情该怎么做。

1 个答案:

答案 0 :(得分:1)

不清楚您的第四张纸是什么样的。这将在单元格A1中的第4张纸上查找票证号码。

一旦执行,它将遍历每张工作表,并过滤/复制/粘贴过滤器中所有值的前4列。

您将需要更改.Sheets("Sheet4")以匹配您的工作表:.Sheets("?")

Option Explicit

Sub Macro1()
Dim Ws As Worksheet, MyWs As Worksheet
Dim wsLRow As Long, MyLRow As Long

Set MyWs = ThisWorkbook.Sheets("Sheet4")

Dim TicketNumber As String
TicketNumber = MyWs.Range("A1")

Application.ScreenUpdating = False
For Each Ws In Worksheets
    If Ws.Name <> MyWs.Name Then
        With Ws
            If .AutoFilterMode Then .AutoFilterMode = False
            wsLRow = .Range("A" & .Rows.Count).End(xlUp).Row
            MyLRow = MyWs.Range("A" & MyWs.Rows.Count).End(xlUp).Offset(1).Row
            .Range("A:A").AutoFilter 1, TicketNumber
            .Range("A2:D" & wsLRow).SpecialCells(xlCellTypeVisible).Copy
            MyWs.Range("A" & MyLRow).PasteSpecial
            .AutoFilterMode = False
        End With
    End If
Next Ws
Application.ScreenUpdating = True

End Sub

如果您的过滤器找不到任何内容,是否需要处理错误。