我是Excel VBA宏的新手,但我的任务是创建一个项目,让用户将值输入到表2中的单元格,搜索数据(表1)并将过滤后的数据复制粘贴到工作表2中。
假设A和B是值输入。我试过了
For Row = 2 To finalrow
If Cells(i, 1).value = a And Cells(i, 2).value = b Then
Range(Cells(i, 1), Cells(i, 7)).Copy
Sheet2.Select
Range("A200").End(xlUp).Offset(1, 0).PasteSpecial xlPasteFormulasAndNumberFormats
Sheet1.Select
ElseIf Cells(i, 1).Value = A Or Cells(i, 2).Value = B Then
Execute
End If
Next Row
Sheet2.Select
Range("B1").Select
Range("B3").Select
如果用户输入1值,则结果正确。但是如果用户同时输入A和B,它应该返回包含2个值的那些行,而是返回给我一个结果和B结果。
提前谢谢。
答案 0 :(得分:0)
假设用户在a
单元格b
和Sheet2
中输入值A1
和/或B1
。基本上,如果没有输入,你想要的是忽略它们中的任何一个。试试这个:
Sub mysub()
Dim i As Long, finalRow As Long, destRow As Long, a, b
destRow = 2
a = Sheet2.Range("A1").value ' <-- adjust to the place where user enters a
b = Sheet2.Range("B1").value ' <-- and b
With Sheet1
finalRow = .Cells(.Rows.Count, 1).End(xlUp).Row
For i = 2 To finalRow
If (IsEmpty(a) Or .Cells(i, 1).value = a) And _
(IsEmpty(b) Or .Cells(i, 2).value = b) Then
.Cells(i, 1).Resize(1, 7).Copy
Sheet2.Cells(destRow, 1).PasteSpecial xlPasteFormulasAndNumberFormats
destRow = destRow + 1
End If
Next
End With
End Sub