函數(shù)FILTER執(zhí)行多條件篩選時有一條定律:多個條件同時滿足,條件之間用星號(*)連接;滿足其中部分條件,條件之間用加號(+)連接。由此還形成兩個模板化公式: FILTER(篩選數(shù)據(jù),條件1*條件2*條件3……) FILTER(篩選數(shù)據(jù),條件1+條件2+條件3……) 本著知其然,還要知其所以然的精神,來一探究竟吧。 先來了解3個知識點(diǎn)。 1.FILTER篩選TRUE對應(yīng)的數(shù)據(jù)。 B列是要篩選的數(shù)組,C列是手動輸入的條件。 =FILTER(B3:B10,C3:C10) 結(jié)論:FILTER篩選出第二參數(shù)中TRUE對應(yīng)的數(shù)據(jù)。 這是函數(shù)FILTER的底層邏輯。 把條件改為數(shù)字,FILTER篩選出所有非0數(shù)字對應(yīng)的數(shù)據(jù): =FILTER(B3:B10,C3:C10) 結(jié)論:非0數(shù)字=TRUE,0=FALSE TRUE與FALSE的四則運(yùn)算 回憶一下四則運(yùn)算,加減乘除。 TRUE和FALSE參與四則運(yùn)算時:TRUE等同于1,F(xiàn)ASLE等同于0. 模板公式中的星號為乘法運(yùn)算,加號為加法運(yùn)算。 現(xiàn)在,把以上3個只是點(diǎn)串聯(lián)起來,嘗試著理解這個公式: =(C3:C10>35)*(D3:D10="男") C3:C10>35:年齡大于35,這個表達(dá)式將返回一個由TRUE和FALSE組成的數(shù)組。 D3:D10="男":性別為“男”,這個表達(dá)式也會返回一個由TRUE和FALSE組成的數(shù)組。 兩個數(shù)組相乘,當(dāng)且僅當(dāng)兩個TRUE相乘時才會得到非0數(shù)字。意味著把它作為FILTER的第2參數(shù)時,兩個條件都成立的才會被篩選。 兩個條件相加時,只要其中一個是TRUE,結(jié)果就是非0數(shù)字;意味著只要其中一個條件成立,就會被篩選出來。 ![]() 說出需求,自動幫你寫好VBA代碼! 如何把這些知識表達(dá)清楚是一件比學(xué)習(xí)它們更困難的事。即使無法完全理解,也希望這些信息對你有所幫助。 |
|