使用多个单元格从另一张纸中搜索数据?

时间:2019-08-27 03:54:53

标签: excel vba

我的工作簿中有两张纸。第一个应该显示第二个工作表中包含大量数据的数据。

我在显示表上放置了一个宏按钮,如果我在引用的单元格中输入特定值,然后单击该按钮,它将显示数据表中具有该值的所有行。

问题是我只能搜索一个要显示的值,但我想使用另外两个单元格来放置其他值(如使用条件),具体来说就是日期持续时间。

  

单元格1 ...名称,
  单元格2 ...开始日期,
  单元格3 ...结束日期

单击按钮后,它应显示数据表中具有特定名称,第二个单元格中的日期和第三个单元格中的日期的值的所有行。

这是我当前正在使用的代码,

Sub SearchMultipleValues()
Dim eRow As Long  
Dim ws As Worksheet
Dim lastrow As Long
Dim count As Integer

lastrow = Sheets("DATA").Cells(Rows.count, 1).End(xlUp).Row
Sheet2.Range("A5:L1048569").ClearContents

count = 0

Dim p As Long
p = 2

For X = 2 To lastrow

    If Sheets("DATA").Cells(X, 1) = Sheet2.Range("A1") Then

        Sheet1.Cells(p, 1) = Sheets("Sheet2").Cells(X, 1)
        Sheet1.Cells(p, 2) = Sheets("Sheet2").Cells(X, 2)
        Sheet1.Cells(p, 3) = Sheets("Sheet2").Cells(X, 3)
        Sheet1.Cells(p, 4) = Sheets("Sheet2").Cells(X, 4)
        Sheet1Cells(p, 5) = Sheets("Sheet2").Cells(X, 5)
        Sheet1.Cells(p, 6) = Sheets("Sheet2").Cells(X, 6)
        Sheet1.Cells(p, 7) = Sheets("Sheet2").Cells(X, 7)
        Sheet1.Cells(p, 8) = Sheets("Sheet2").Cells(X, 8)
        Sheet1.Cells(p, 9) = Sheets("Sheet2").Cells(X, 9)
        Sheet1.Cells(p, 10) = Sheets("Sheet2").Cells(X, 10)
        Sheet1.Cells(p, 11) = Sheets("Sheet2").Cells(X, 11)
        Sheet1.Cells(p, 12) = Sheets("Sheet2").Cells(X, 12)
        p = p + 1
        count = count + 1

    End If

Next X

MsgBox " The number of item found is " & " " & count

End Sub

在单元格A1中输入要在数据表“ Sheet2”中的“ Sheet1”中显示的值。现在,我想将单元格A2和A3作为附加值包括在数据表的单元格A1中。

1 个答案:

答案 0 :(得分:0)

您可以完全放弃循环。尝试使用 Range Object Filter方法。

Dim sh As Worksheet, lastrow As Long, datarange As Range
Set sh = Sheets("DATA") '// set the source sheet //
'// clear destination sheet focusing on columns that will be used //
Sheet2.Range("A5:L" & Sheet2.Rows.Count).ClearContents

With sh
  lastrow = .Range("A" & .Rows.Count).End(xlUp).Row
  Set datarange = .Range("A1:L" & lastrow) '// set the source row //
End With
'// filter based on sheet2 A1 value //
datarange.AutoFilter 1, Sheet2.Range("A1").Value2, xlFilterValues
'// copy filtered values
datarange.SpecialCells(xlCellTypeVisible).Copy
'// paste to destination
Sheet2.Range("A2").PasteSpecial xlPasteValuesAndNumberFormats

您可以尝试一下,如果可行,请进行调整以适合您的需求。这没有经过测试,因为我现在没有办法。希望这会有所帮助。