我的工作簿中有两张纸。第一个应该显示第二个工作表中包含大量数据的数据。
我在显示表上放置了一个宏按钮,如果我在引用的单元格中输入特定值,然后单击该按钮,它将显示数据表中具有该值的所有行。
问题是我只能搜索一个要显示的值,但我想使用另外两个单元格来放置其他值(如使用条件),具体来说就是日期持续时间。
单元格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中。
答案 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
您可以尝试一下,如果可行,请进行调整以适合您的需求。这没有经过测试,因为我现在没有办法。希望这会有所帮助。