excel 表格lookup 的操作
這個(gè)實(shí)現(xiàn)語句如下,(寫在2行然后向下拖動)(2007或以上版本):
1 = 2 IF(OR($D2<>0,ISBLANK($H2),$G2="111"), 3 "", 4 IF(OR($G2="222",$G2="333"), 5 IF($H2>0,1,-1)*SUMIFS(INDIRECT("E"&IFERROR(LOOKUP(1,0/(($H$1:INDIRECT("H"&ROW()-1)<>"")*($G$1:INDIRECT("G"&ROW()-1)=$G2)),ROW($1:2))+1,ROW($1:$1))):$E2,INDIRECT("A"&IFERROR(LOOKUP(1,0/(($H$1:INDIRECT("H"&ROW()-1)<>"")*($G$1:INDIRECT("G"&ROW()-1)=$G2)),ROW($1:2))+1,ROW($1:$1))):$A2,$A2,INDIRECT("B"&IFERROR(LOOKUP(1,0/(($H$1:INDIRECT("H"&ROW()-1)<>"")*($G$1:INDIRECT("G"&ROW()-1)=$G2)),ROW($1:2))+1,ROW($1:$1))):$B2,$B2,INDIRECT("D"&IFERROR(LOOKUP(1,0/(($H$1:INDIRECT("H"&ROW()-1)<>"")*($G$1:INDIRECT("G"&ROW()-1)=$G2)),ROW($1:2))+1,ROW($1:$1))):$D2,0,INDIRECT("G"&IFERROR(LOOKUP(1,0/(($H$1:INDIRECT("H"&ROW()-1)<>"")*($G$1:INDIRECT("G"&ROW()-1)=$G2)),ROW($1:2))+1,ROW($1:$1))):$G2,$G2) - $H2, 6 IF(OR($G2="444",$G2="555"), 7 IF($H2>0,1,-1)*SUMIFS($E:$E,$B:$B,$B2,$G:$G,$G2,$A:$A,$A2,$D:$D,0) - $H2, 8 "ERROR" 9 ) 10 ) 11 )?
主要復(fù)雜的是:
INDIRECT("E"&IFERROR(LOOKUP(1,0/(($H$1:INDIRECT("H"&ROW()-1)<>"")*($G$1:INDIRECT("G"&ROW()-1)=$G2)),ROW($1:2))+1,ROW($1:$1)))其作用就是返回:H列中存在空值,假設(shè)第i行有數(shù)據(jù),從i行向上查找直到遇到另一個(gè)數(shù)據(jù)位置,返回查找到的空值的最小行號,如下面表格,i=2返回1,i=9返回5,當(dāng)然還有符合一定篩選條件。
| 1 | ? |
| 2 | num |
| 3 | ? |
| 4 | num |
| 5 | ? |
| 6 | ? |
| 7 | ? |
| 8 | ? |
| 9 | num |
語句逐步才開看indirect,作用是將字符串“” 轉(zhuǎn)換成有效代碼,INDIRECT(“E”&1)= E1
- IFERROR()
為了解決向上查找時(shí)候沒有遇到空值的情況,例如上表中的第一行若為標(biāo)簽,i =2 時(shí)候向上查找并未遇到空,所以用這個(gè)語句返回ROW($1:$1),E和1 前面帶 $ 意義是excel 中拖動時(shí)候不變。
- ROW() 返回選中單元格的行號。
下面是需要慢慢講的查找語句,先通過簡單版來講原理。
- LOOKUP(1,0/($H$1:INDIRECT("H"&ROW()-1)<>""),ROW($1:2))
一個(gè)數(shù)據(jù)的上面最靠近的 非 空值可以通過上面語句來返回行號。原理: INDIRECT($H$1:INDIRECT("H"&ROW()-1)<>"") 表示該列 從第一行到數(shù)據(jù)上一行的 是數(shù)值是否為空的判斷,結(jié)果是 一列的true 、false
0/(...)
用0 除以后變成一列 0 和 div/0,需要括起全部數(shù)據(jù),后者是excel 的一個(gè)錯(cuò)誤標(biāo)記{0;0;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!;0}
然后在該列 中查找1 ,必須大于0(利用了excel 的機(jī)制,baidu會有更清楚的解釋:lookup 會默認(rèn)第二個(gè)參數(shù)是已經(jīng)sort(從小到大),忽略error,然后用二分查找),結(jié)果就會選中列中最后一個(gè)0,最后返回第三個(gè)參數(shù) 的對應(yīng)數(shù)值,這里是行號。如果 查找的指匹配到了,lookup 的機(jī)制是返回匹配中最后一個(gè),返回第一個(gè)好像是match。
剩下的加減 1是自己調(diào)整的。
- ($H$1:INDIRECT("H"&ROW()-1)<>"")*($G$1:INDIRECT("G"&ROW()-1)=$G2)
通過上面0/(...) 的解釋,可以加入條件選擇,避免了數(shù)組公式所以使用*號,這是一個(gè)且運(yùn)算,并沒有找到或運(yùn)算的,1*n 數(shù)列 且 1*n 數(shù)列 = 1*n 數(shù)列。
把使用方法也附上吧
1.對原始數(shù)據(jù)添加首行,第一行,需要注意的是列A,B,D,E,G,H 必須正確對應(yīng)
次碼 主碼 有效號 計(jì)算值 選擇類型 處理選擇
2.對添加首行后的數(shù)據(jù)排序,方法:
ctrl+A 后選擇 開始->排序和篩選->自定義排序,
勾選 數(shù)據(jù)包含標(biāo)題,
列:主碼,排序依據(jù):數(shù)值,次序:升序
點(diǎn)擊添加條件,
列:次碼,排序依據(jù):數(shù)值,次序:升序
3.在某一列的第二行,必須第二行,復(fù)制上面的公式
4.最后是一拖到底(其中有空行不影響,向下拖,另向右拖不影響結(jié)果)
轉(zhuǎn)載于:https://www.cnblogs.com/Azhu/p/4120067.html
總結(jié)
以上是生活随笔為你收集整理的excel 表格lookup 的操作的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 俞敏洪说想给董宇辉在北京买套房子 这话我
- 下一篇: .xyz域名注册总量TOP10服务商:中