我正在尝试在excel中编写一个程序,用户在其中输入一个值,然后在其他工作表中搜索该值,找到具有该值的列,然后在该列的行中搜索晚于当前日期的日期,并返回值晚于当前日期的行第1列的内容。
到目前为止,我已经能够找到具有输入值的单元格,但是我仍然坚持如何引用找到的单元格的列以使整个列都搜索日期。
下面是到目前为止的内容,我想我应该在“ If Worksheets(i).Cells(2,j).Value = Method Then”之后输入另一个If语句:“ If Worksheets(i).Cells( ?,?)。Value> = Today()然后”,但是我不确定如何引用我要搜索的单元格,因为这些单元格取决于上一条语句中的位置。
Private Sub CommandButton1_Click()
totalsheets = Worksheets.Count
Method = Worksheets("Search a Method").Cells(3, 6).Value
For i = 1 To totalsheets
If Worksheets(i).Name <> "Search a Method" Then
lastcolumn = Worksheets(i).Cells(2, Columns.Count).End(xlToLeft).Column
For j = 2 To lastcolumn
If Worksheets(i).Cells(2, j).Value = Method Then
Worksheets("Search a Method").Activate
lastrow = Worksheets("Search a Method").Cells(Rows.Count, 1).End(xlUp).Row
Worksheets("Search a Method").Cells(lastrow + 1, 1).Value = Worksheets(i).Name
End If
Next
End If
Next
End Sub
答案 0 :(得分:1)
在我关于使用.Find()
的建议的基础上,以下示例应提供一些指导:
Dim findrng As Range, col As Long, method As String
method = "dog"
With Sheets(1)
Set findrng = .Rows(2).Find(what:=method, LookIn:=xlValues, LookAt:=xlPart, searchorder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False)
End With
col = findrng.Column
Debug.Print col
我在单元格(2,2)中放入了“ cat”,在单元格(2,3)中放入了“狗”,因此使用上面的代码,即时窗口读取了“ 3”,表示列method
被发现。
以上图片: