[英]Find the Row of a String Value in a Column while Criteria are met in the same Row but the other Columns
好的,我試圖從Column
找到一個值。 該Column
具有約600個values
。 雖然沒有找到例如“靈犬萊西”的價值和定位,這是一個問題, Cell A301
就產生了一個問題的事實,我需要檢查Row
該value
萊茜是(這里是301),並搜索是否符合其他條件。
我需要這樣的東西:
CellA301
值為“銷售收入凈額”, CellK301 = Start_Period
的值CellK301 = Start_Period
CellL301 = End_Period
的值CellL301 = End_Period
CellM301 = ""
和CellN301 = ""
以及CellO301 = ""
和CellP301 = ""
和CellQ301 = ""
然后,如果滿足所有這些條件,我需要copy
CellH301
paste
其paste
到另一Sheet
訣竅在於,我無法先搜索CellA301
並且如果它等於“ Sales Revenue,Net”, CellA301
進行所有其他測試, 因為A列中有許多單元格都填充有字符串值“ 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
還要注意一點:
您只能在圖紙的用過的部分上應用自動AutoFilter
。 例如,如果.Range("A1:AZ1").Autofilter
行中的.Range("A1:AZ1").Autofilter
最后一UsedRange
M
,則.Range("A1:AZ1").Autofilter
Excel僅對A1:M1
過濾器。 但是,上面代碼的.Value = .Value
部分,將A1:AZ1
顯式添加到工作表的已使用部分。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.