在列中查找string值的行,同时在同一行中但其他列中满足条件
好吧,我正在尝试从Column
find一个值。 这个Column
有大约600个values
。 虽然find例如“Lassie”的值并不是一个问题,并且find它位于Cell A301
但是它产生了一个问题,那就是我需要检查value
Lassie(这里是301)的Row
,然后searchif其他标准正在得到满足。
我需要这样的东西:
- 如果
CellA301
的值是“Sales Revenue,Net”,并且, - 如果
CellK301 = Start_Period
的值CellK301 = Start_Period
- 如果
CellL301 = End_Period
的值CellL301 = End_Period
- 如果
CellM301 = ""
和CellN301 = ""
和CellO301 = ""
和CellP301 = ""
和CellQ301 = ""
然后,如果所有这些条件都满足,我需要copy
CellH301
并paste
到另一Sheet
诀窍是我不能先searchCellA301
,如果它等于“Sales Revenue,Net”,则执行所有其他testing, 因为A列中有许多单元格填充了string值“Sales Revenue,Net”,只有完全符合上述条件的是正确的。
编辑
Sub wussss() ''disable autofilter in case it's already enabled' ThisWorkbook.Sheets("31_December_2010").AutoFilterMode = False With ThisWorkbook.Sheets("31_December_2010").Range("A1:AZ1") 'set autofilter' .AutoFilter Field:=1, Criteria1:="Sales Revenue, Net" .AutoFilter Field:=11, Criteria1:="1/1/2010" .AutoFilter Field:=12, Criteria1:="12/31/2010" 'x .AutoFilter Field:=13, Criteria1:="" .AutoFilter Field:=14, Criteria1:="" .AutoFilter Field:=15, Criteria1:="" 'X IT FAILS HERE .AutoFilter Field:=16, Criteria1:="" .AutoFilter Field:=17, Criteria1:="" .AutoFilter Field:=18, Criteria1:="" .AutoFilter Field:=19, Criteria1:="" .AutoFilter Field:=20, Criteria1:="" .AutoFilter Field:=21, Criteria1:="" .AutoFilter Field:=22, Criteria1:="" .AutoFilter Field:=23, Criteria1:="" .AutoFilter Field:=24, Criteria1:="" .AutoFilter Field:=25, Criteria1:="" .AutoFilter Field:=26, Criteria1:="" .AutoFilter Field:=27, Criteria1:="" .AutoFilter Field:=28, Criteria1:="" .AutoFilter Field:=29, Criteria1:="" .AutoFilter Field:=30, Criteria1:="" End With With ThisWorkbook.Sheets("Sheet1") On Error Resume Next Set Rng = .Range("A2:A" & .Rows.Count).Rows.SpecialCells(xlCellTypeVisible) On Error GoTo 0 End With If Not Rng Is Nothing Then MsgBox Rng.Row ' returns first visible row number End If ThisWorkbook.Sheets("Sheet1").AutoFilterMode = False 'disable autofilter' End Sub
作为评论的后续,此代码工作:
Sub test() Dim i As Byte Dim rng As Range With ThisWorkbook.Sheets("31_December_2010") 'disable autofilter in case it's already enabled' .AutoFilterMode = False With .Range("A1:AZ1") .Value = .Value 'set autofilter' .AutoFilter Field:=1, Criteria1:="Sales Revenue, Net" .AutoFilter Field:=11, Criteria1:="1/1/2010" .AutoFilter Field:=12, Criteria1:="12/31/2010" 'x For i = 13 To 30 .AutoFilter Field:=i, Criteria1:="" Next i End With On Error Resume Next Set rng = .Range("A2:A" & .Rows.Count).Rows.SpecialCells(xlCellTypeVisible) On Error GoTo 0 If Not rng Is Nothing Then MsgBox rng.Row ' returns first visible row number .AutoFilterMode = False 'disable autofilter' End With End Sub
也很less注意:
您只能将AutoFilter
应用于表单的已用部分。 例如,如果UsedRange
最后一列是M
,则在行.Range("A1:AZ1").Autofilter
自动筛选器Excel只适用于A1:M1
。 但是上面的代码的值.Value = .Value
。明确地将A1:AZ1
添加到表单的使用部分。