在列中查找string值的行,同时在同一行中但其他列中满足条件

好吧,我正在尝试从Columnfind一个值。 这个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 CellH301paste到另一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添加到表单的使用部分。