第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用excel vba篩選出多個條件

使用excel vba篩選出多個條件

眼眸繁星 2019-10-31 13:14:50
我在A,1、2、3、4、5列和A,B,C中有8個變量。我的目的是過濾掉A,B,C并僅顯示1-5。我可以使用以下代碼執(zhí)行此操作:My_Range.AutoFilter Field:=1, Criteria1:=Array("1", "2", "3","4","5"), Operator:=xlFilterValues但是代碼的作用是過濾變量1到5并顯示它們。我不會做相反的事情,但是通過濾除A,B,C并顯示變量1至5會產(chǎn)生相同的結(jié)果我嘗試了這段代碼:My_Range.AutoFilter Field:=1, Criteria1:=Array("<>A", "<>B", "<>C"), Operator:=xlFilterValues但這沒有用。為什么我不能使用此代碼?它給出了這個錯誤:運行時錯誤1004范圍類的自動篩選方法失敗我該如何執(zhí)行呢?
查看完整描述

3 回答

?
江戶川亂折騰

TA貢獻(xiàn)1851條經(jīng)驗 獲得超5個贊

我認(rèn)為(通過試驗-MSDN在這里無濟(jì)于事)沒有直接的方法可以做到這一點。設(shè)置Criteria1為an Array等效于使用下拉菜單中的復(fù)選框-就像您說的那樣,它只會根據(jù)與數(shù)組中的一項相匹配的項目來過濾列表。


有趣的是,如果您具有文字值,"<>A"并且"<>B"在這些列表和過濾器上,宏記錄器將提供


Range.AutoFilter Field:=1, Criteria1:="=<>A", Operator:=xlOr, Criteria2:="=<>B"

哪個有效。但是,如果您同時也具有文字值"<>C",并且在記錄宏時對所有三個值進(jìn)行了過濾(使用復(fù)選框),則宏記錄器會精確地復(fù)制您的代碼,然后該代碼將失敗并顯示錯誤。我想我會把它稱為一個錯誤-使用UI可以執(zhí)行某些過濾器,而使用VBA則不能。


無論如何,回到您的問題??梢赃^濾不等于某些條件的值,但最多可以過濾兩個不適合您的值:


Range("$A$1:$A$9").AutoFilter Field:=1, Criteria1:="<>A", Criteria2:="<>B", Operator:=xlAnd

根據(jù)確切的問題,有幾種解決方法:


將“幫助列”與B列中的公式一起使用,然后對其進(jìn)行過濾-例如,=ISNUMBER(A2)或=NOT(A2="A", A2="B", A2="C")隨后對TRUE

如果您無法添加列,請使用具有Criteria1:=">-65535"(或比您期望的數(shù)字低的合適數(shù)字)的自動過濾器,該過濾器會過濾掉非數(shù)字值-假設(shè)這是您想要的

編寫一個VBA子來隱藏行(與自動過濾器不完全相同,但根據(jù)您的需要可能就足夠了)。

例如:


Public Sub hideABCRows(rangeToFilter As Range)

  Dim oCurrentCell As Range

  On Error GoTo errHandler


  Application.ScreenUpdating = False

  For Each oCurrentCell In rangeToFilter.Cells

    If oCurrentCell.Value = "A" Or oCurrentCell.Value = "B" Or oCurrentCell.Value = "C" Then

      oCurrentCell.EntireRow.Hidden = True

    End If

  Next oCurrentCell


  Application.ScreenUpdating = True

  Exit Sub


errHandler:

    Application.ScreenUpdating = True

End Sub


查看完整回答
反對 回復(fù) 2019-10-31
?
幕布斯7119047

TA貢獻(xiàn)1794條經(jīng)驗 獲得超8個贊

使用自動篩選的選項


Option Explicit


Public Sub FilterOutMultiple()

    Dim ws As Worksheet, filterOut As Variant, toHide As Range


    Set ws = ActiveSheet

    If Application.WorksheetFunction.CountA(ws.Cells) = 0 Then Exit Sub 'Empty sheet


    filterOut = Split("A B C D E F G")


    Application.ScreenUpdating = False

    With ws.UsedRange.Columns("A")

        If ws.FilterMode Then .AutoFilter

       .AutoFilter Field:=1, Criteria1:=filterOut, Operator:=xlFilterValues

        With .SpecialCells(xlCellTypeVisible)

            If .CountLarge > 1 Then Set toHide = .Cells 'Remember unwanted (A, B, and C)

        End With

       .AutoFilter

        If Not toHide Is Nothing Then

            toHide.Rows.Hidden = True                   'Hide unwanted (A, B, and C)

           .Cells(1).Rows.Hidden = False                'Unhide header

        End If

    End With

    Application.ScreenUpdating = True

End Sub


查看完整回答
反對 回復(fù) 2019-10-31
  • 3 回答
  • 0 關(guān)注
  • 4151 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號