簡體   English   中英

在同一行中但在其他列中都滿足條件的情況下,在列中查找字符串值的行

[英]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就產生了一個問題的事實,我需要檢查Rowvalue萊茜是(這里是301),並搜索是否符合其他條件。

我需要這樣的東西:

  • 如果CellA301值為“銷售收入凈額”,
  • 如果CellK301 = Start_Period的值CellK301 = Start_Period
  • 如果CellL301 = End_Period的值CellL301 = End_Period
  • 如果CellM301 = ""CellN301 = ""以及CellO301 = ""CellP301 = ""CellQ301 = ""

然后,如果滿足所有這些條件,我需要copy CellH301 pastepaste到另一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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM