我的代码输出有问题。我使用宏来搜索一些标记的条件:
Collection = Trim(Range("lblImportCollection").Value)
System = Trim(Range("lblImportSystem").Value)
Tag = Trim(Range("lblImportTag").Value)
我的过滤器会搜索找到输入值的正确单元格值,但我想将匹配的值复制到新工作表中。现在它只是复制找到的最后一个正确值。有人可以帮我吗?我想要的是:
- 如果所有三个条件都匹配(我想在新工作表上连续复制 3 个条件)
- 如果两个条件匹配(我想连续复制两个条件(而不是第三个)
- 如果一个条件匹配(我想连续复制 1 个条件(所以不是第二个和第三个)
- 另外:所有结果匹配必须填充一个新行。我希望我提供了足够的信息,这有点难以解释。如果您有任何问题,请告诉我:)
Sub FilterButton()
Dim XUsedRange As Range
Dim SourceRange As Range, DestRange As Range
Dim SrcSheet As Worksheet
Dim DestSheet As Worksheet, Lr As Long
Dim firstAddress As String
Dim c As Range
Dim iLastRow As Integer
Dim zLastRow As Integer
Dim test As String
Dim TempRange As Range
Dim Collection As String
Dim System As String
Dim Tag As String
With Application
.ScreenUpdating = False
.EnableEvents = False
End With
Collection = Trim(Range("lblImportCollection").Value)
System = Trim(Range("lblImportSystem").Value)
Tag = Trim(Range("lblImportTag").Value)
'fill in the Source Sheet and range
Set XUsedRange = Sheets("Imported Data").UsedRange
Set ZUsedRange = Sheets("Test").Range("A:C")
'Fill in the destination sheet and find the last known cell
Set DestSheet = Sheets("Test")
Set SrcSheet = Sheets("Imported Data")
'With the information on the new sheet
iLastRow = XUsedRange.End(xlDown).Row
zLastRow = ZUsedRange.End(xlUp).Row
Set SourceRange = SrcSheet.Range("A2:A" & CStr(iLastRow))
Set DestRange = DestSheet.Range("A2:C" & CStr(zLastRow))
With SourceRange
Set c = SourceRange.Find(What:=Collection, SearchOrder:=xlByColumns)
If Not c Is Nothing Then
firstAddress = c.Address
Do
MsgBox ("Found " & Collection & " on address:" & c.Address)
c.Copy
DestRange.PasteSpecial
If System = SrcSheet.Range("B" & CStr(c.Row) & ":B" & CStr(c.Row)) Then
MsgBox ("The system is " & SrcSheet.Range("B" & CStr(c.Row) & ":B" & CStr(c.Row)))
'DestSheet.Range ("B" & CStr(c.Row) & ":B" & CStr(c.Row))
SrcSheet.Range("B" & CStr(c.Row) & ":B" & CStr(c.Row)).Copy
DestRange.PasteSpecial
If Tag = SrcSheet.Range("C" & CStr(c.Row) & ":C" & CStr(c.Row)) Then
MsgBox ("The tag is" & SrcSheet.Range("C" & CStr(c.Row) & ":C" & CStr(c.Row)))
'DestSheet.Range ("C" & CStr(c.Row) & ":C" & CStr(c.Row))
SrcSheet.Range("C" & CStr(c.Row) & ":C" & CStr(c.Row)).Copy
DestRange.PasteSpecial
End If
End If
Set c = SourceRange.FindNext(c)
Loop While (Not c Is Nothing) And (c.Address <> firstAddress)
Else
MsgBox (Collection & " is NOT Found ")
End If
End With
With Application
.ScreenUpdating = True
.EnableEvents = True
End With
End Sub