我是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。
我想要帮助的是如何做第一张纸。一旦有了关于如何做一张纸的想法,我就可以弄清楚剩下的事情该怎么做。
答案 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
如果您的过滤器找不到任何内容,是否需要处理错误。