html多条件检索折叠,八种方式实现多条件匹配
圍觀的市民劉先生表示:我活了二十多年,看見斗圖的比較多,這么無聊斗Excel使用技巧的第一次見!
為了更好的裝逼,哦!不!是為了更好的分享多條件匹配的技巧,今天和大家分享如何用八種方式實現多條件匹配!
上原始素材!
看到廣州新垣結衣有種中國梅西、中國郜林斯曼的感覺!
不管那么多了,反正就是原表是名稱、城市、評分表。
現在需要根據兩個條件得到評分!
我是輕度強迫癥患者,想到什么就想能窮盡解決方案,所以寫這個文章即為分享,也為自己收藏存檔,部分實現方式較難理解。
大大的提醒:1、4、6、7方法比較簡單,只是想了解解決方案的,看這四個中任意一個就好啦,想拓展編程思路的,可以都看看!
方法一:增加輔助列法
常見的Vlookup匹配應用只能查找一個單元格,針對多條件的,就是把多個條件都放到一個單元格即可。
原表插入一列作為輔助列,然后輸入=,用本文連接符&連接不同的單元格,合并到一個單元格即可!
查詢列表同理!
最后編寫Vlookup就可以實現!
方法二:Vlookup函數與數組重構第一式
其實有了第一個方法的思路,第二個方法就是由插入一列輔助列變成使用數組函數構建一個虛擬的表而已。
公式:{=VLOOKUP(G2&H2,IF({1,0},B1:B9&C1:C9,D1:D9),2,)}
公式兩邊用大括號包裹,說明什么?說明輸入函數后是同時按住Ctrl Shift Enter結束的!
為蝦米需要這么復雜呢?因為我們用到了數組函數,今天很多公式都是三鍵結束的。
先解釋一下Vlookup的第一個參數
G2&H2就是兩個單元格的合并,結果就是石原里美茂名,和剛剛創建輔助列的效果一樣!
Vlookup第二個參數是要引用一個區域,我們在這里是用IF函數實現搭建一個區域。
先回想一下IF函數的用法
IF(判斷條件,為真的時候返回什么,為假的時候返回什么)
{1,0}啥意思呢?其實通俗理解這個就是兩列,第一列的數字都是1,第二列的數字都是0。
翻譯成Excel的語言就是將一列變成了兩列
變身后
第一列是:=IF(1,B1:B9&C1:C9,D1:D9)
第二列是:=IF(0,B1:B9&C1:C9,D1:D9)
所以Excel重新幫我們構建了一個新的表,這個表的第一列就是名字和城市的組合,第二列是評分。和第一種方法創建輔助列的方式其實是一樣的。
唯一的區別是方法一是人工實實在在的創建了一個新表,而方法二是通過IF加上數組函數虛擬創建了一個表。
方法三:Vlookup函數與數組重構第二式
本方法和方法二類似,但是構建數組輔助表的時候換了一種形式。
公式:{=VLOOKUP(1,IF({1,0},(B1:B9=G2)*(C1:C9=H2),D1:D9),2,)}
本方法的輔助表變成了每個列等于條件,然后兩個條件相乘。
B1:B9=G2得到的是True和False的數組
C1:C9=H2得到的同樣是True和False的數組
True等同于1,False等同于0
當多條件同時滿足的時候就變成了1,否則就是0
第一列變成了如果兩者均相等才顯示為1,如果有其中任意一個不等都是0,則最終結果就是0
第二列就是心中評分。
然后Vlookup根據1查找,則新的輔助表只有兩個條件都相等的時候才是1,否則是0
那只有一個返回值就是6啦!
本案例的精髓在于深刻理解數組是如何重構及重構后的表是什么樣子的!
方法四:Lookup大叔實現
Lookup和Vlookup是表親關系,Lookup雖然使用頻率沒有Vlookup高,但是很多場合Lookup可以更巧妙的解決問題!
Lookup(找什么,在哪里找,如果找到了返回什么)
公式:=LOOKUP(1,0/((B2:B9=G2)*(C2:C9=H2)),D2:D9)
這個公式沒有大括號哦,普通Enter鍵結束公式編寫即可!
重要說明一個第二個參數0/(B2:B9=G2)*(C2:C9=H2)
某列等于某個單元格得到的是True、False數組,兩個數組相乘是1、0數組。
因為數字0不可以作為分母,如果是分母會報錯!
(B2:B9=G2)*(C2:C9=H2)返回值:{0;0;0;0;0;0;1;0}
0/(B2:B9=G2)*(C2:C9=H2)返回值:{#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!;0;#DIV/0!}
則Lookup第二個參數的輔助表只有倒數第二個有有效數字,所以只有唯一的返回值了!
備注:本案例最不好理解的是為什么第一個參數是1,第二個參數的分子是0!其實第一個參數可以是任意的數字,只要大于第二個參數的分子即可!
為什么一定要這樣呢?
因為Lookup的實現原理是返回輔助表中小于等于第一個參數數字對應的返回值!
比較拗口!但是是真諦!給你個眼神自行體會!
方法五:Match Index大法!
match和index匹配可以完全實現Vlookup的應用,還可以實現反查等Vlookup本身實現不了的匹配功能。
基礎函數介紹
=Match(查找什么,在哪個列找,0)返回第一個參數在第二個參數中的位置
=Index(列,返回該列第幾個值)返回某個列中第N個值
兩個組合就是Vlookup的應用咯!
公式:{=INDEX(D2:D9,MATCH(G2&H2,B2:B9&C2:C9,0))}
思路:先獲取查找的內容在新的列中屬于第幾位,然后返回評分列對應位置的值!
完美!
重點是Match函數的應用,Match第一個參數就是兩個條件合并,第二個參數本來應該接一個列,本案例我用兩個列相乘,實現了每個列相同位置用文本連接符鏈接在一起,和創建輔助列是一樣的!有上文的鋪墊,我不再累述了!
大大的提醒:下面的方法只適用于返回值是數字的!如果是返回值是文本,只能用上面的哦!
方法六:Sumifs實現
Sumifs是Sumif的大哥,Sumif只能實現單條件統計求和,Sumifs可以實現N條件統計求和!
=Sumifs(要求和的列,要判斷的列1,判斷條件1,要判斷的列2,判斷條件2......)
公式:=SUMIFS(D2:D9,B2:B9,G2,C2:C9,H2)
比較簡單,不過多解釋咯!
方法七:Sumproduct函數實現
Sumproduct曾經我單獨寫過一篇文章,感興趣可以看一下!
公式:=SUMPRODUCT((B2:B9=G2)*(C2:C9=H2)*D2:D9)
Sumproduct是數組乘積求和,也不解釋啦,其實看我上面的那個文章就理解了,不懂的留言交流!
方法八:Sum的判斷求和,數組函數盲的噩夢!
公式:{=SUM((B2:B9=G2)*(C2:C9=H2)*D2:D9)}
提問:你這個方法和剛才的有咩區別嗎?
回答:沒有,還是數組乘積求和!
提問:那你為什么要分享
回答:我就是想湊齊八個!你打我呀!!!!!
今天就到這里!祝各位明年昨日可以不用自己過七夕!
感謝各位支持!
總結
以上是生活随笔為你收集整理的html多条件检索折叠,八种方式实现多条件匹配的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 暴走英雄坛html5游戏在线玩,暴走英雄
- 下一篇: android清空frame,andro