(Excel)常用函數公式及操作技巧之九:
查詢和查找引用
——通過知識共享樹立個人品牌。
查找順序公式
=LOOKUP(2,1/(A1:A20<>0),A1:A20) =MATCH(7,A1:A20) =VLOOKUP(7,A1:B11,2)
怎樣實現精確查詢
用VLOOKUP
=VLOOKUP(B11,B3:F7,4,FALSE)
用LOOKUP
=LOOKUP(B11,B3:B7,E3:E7)
用MATCH+INDEX
=INDEX(E3:E7,MATCH(B11,B3:B7,0))
用INDIRECT+MATCH
=INDIRECT("E"&MATCH(B11,B3:B7,0)+2)
用OFFSET+MATCH
=OFFSET(E3,MATCH(B11,B3:B7,0)-1,0)
用INDIRECT+ADDRESS+MATCH
=INDIRECT(ADDRESS(MATCH(B11,B4:B7,0)+3,5))
用數組公式
=INDEX(E1:E7,MAX(IF((B4:B7=B11),ROW(B4:B7),0)))
查找及引用
如何查找並引用B2單元格中所顯示日期當日的相應代碼的值。
B3=IF(COUNTIF($E$3:$E$20,A3),VLOOKUP($A3,$E$2:$M$20,MATCH(B$2,$F$2:$M$2,)+1,),"")
查找函數的應用
我想在A5輸入表的名稱,B5自動跳出該表中B列的最后一個有效數值,請問B5的公式該如何設定?
=LOOKUP(9E+307,INDIRECT(A5&"!"&"B:B")) B2 =IF(A2="","",LOOKUP(9E+307,INDIRECT(A2&"!B:B")))
怎么能方便的判斷某個單元格中包含多少個指定的字符?
例:A1 中是“ASAFAG”,我希望計算出A1里面有多少個“A”......
=LEN(A1)-LEN(SUBSTITUTE(A1,"A",""))
如何用查找函數
一、要求: 利用公式從左表中查詢相應的地區,結果放在H14單元格
=VLOOKUP(G14,IF({1,0},D14:D18,C14:C18),2,)
h14=OFFSET(C14,MATCH(G14,D14:D18,0)-1,,,)
H14 =INDIRECT("c"&MATCH(G14,D:D,))
二、要求: 根據C25單元格的商品名稱,查找該商品的最新單價,即該商品最后一條記錄的單價(結果放在D25單元格)。用數組公式:
=INDIRECT("G"&MAX((D14:D22=C25)*ROW(D14:D22)))
D25 =LOOKUP(2,1/(D14:D22=C25),G14:G22)
日期查找的問題
我有一個日期比如:2007/02/12,我想知道它減去一個固定天數比如6后,最接近它的一個星期四(只能提前)是多少號
2007/02/12的答案應該是2007/02/01而不是2007/02/08
日期在A1處,B1處輸入:
=MAX((WEEKDAY(A1-6-{1,2,3,4,5,6,7},2)=4)*(A1-6-{1,2,3,4,5,6,7}))
A1 =2007/02/12
B1, 輸入公式 :
=A1-6-MOD(WEEKDAY(A1-6,2)+3,7)
如何自動查找相同單元格內容
=SUMPRODUCT(($D$2:$D$15=A21)*($E$2:$E$15)) =IF(ISERROR(VLOOKUP(A6,$D$2:$E$15,2,0)),0,VLOOKUP(A6,$D$2:$E$15,2,0))
查找函數
D3 =LOOKUP(2,1/(($G$3:$G$14=B3)*($H$3:$H$14=C3)),$I$3:$I$14) =IF(ISERROR(VLOOKUP(A14,A:B:D:F,2,FALSE)),"",VLOOKUP(A14,A:B:D:F,2,FALSE)) =IF(ISERROR(VLOOKUP(C2,k!B2:Z2189,2,FALSE)),"",VLOOKUP(C2,k!B2:Z2189,2,FALSE))
怎樣對號入座(查找)
=VLOOKUP(D2,$A$1:$B$5,2,FALSE)
=INDEX($B$2:$B$5,MATCH(D2,$A$2:$A$5,0))
=OFFSET($A$1,MATCH(D2,$A$2:$A$5,0),1)
=VLOOKUP(D2,$A$1:$B$16,2,)
=VLOOKUP(D2,IF({1,0},$A$1:$A$9,$B$1:$B$9),2,)
=LOOKUP(2,1/($A$1:$A$10=D2),$B$1:$B$10)
一個文本查找的問題
如何在一個單元格中,統計某個字符出現的次數,例如:單元格A1中填有:張三/李四/王五",如何通過公式來計算此單元格中共填有幾個人姓名,每個人姓名之間用"/"符號分開,煩請相告.
=LEN(A1)-LEN(SUBSTITUTE(A1,"/",))+1
查找一列中最后一個數值
我想用公式知道,另一個表中"A"列最下面一個數是多少,就行了.用不定值的,因為還有數據有增加,
=LOOKUP(9E+307,Sheet2!A:A)——最后一個數值
=LOOKUP(REPT("座",255),Sheet2!A:A)——最后一個文本
或
=INDEX(Sheet2!A:A,MATCH(9E+307,Sheet2!A:A))
=INDEX(Sheet2!A:A,MATCH("*",Sheet2!A:A,-1))
=Match(rept("座",255),sheet2!A:A)
查找重復字符
兩組數值
A B
1245689 0134578
查找單元格A和B里重復及不重復的字符
正確答案:重復字符-1458
不重復字符-023679
以下公式對數字有效:
重復數字:
=IF(COUNT(FIND(0,A1:B1))=2,0,"")&SUBSTITUTE(SUM(IF(ISNUMBER(FIND(ROW($1:$9),A1))+ISNUMBER(FIND(ROW($1:$9),B1))=2,ROW($1:$9)*10^(10-ROW($1:$9)))),0,)
不重復數字:
=IF(COUNT(FIND(0,A1:B1))=1,0,"")&SUBSTITUTE(SUM(IF(ISNUMBER(FIND(ROW($1:$9),A1))+ISNUMBER(FIND(ROW($1:$9),B1))=1,ROW($1:$9)*10^(10-ROW($1:$9)))),0,)
都是數組公式,按Ctrl+shift+enter結束。
重復數字:
=IF(COUNT(FIND(0,A1:B1))=2,0,"")&SUBSTITUTE(SUM(IF(MMULT(COUNTIF(OFFSET(A1,,{0,1},),"*"&ROW($1:$9)&"*"),{1;1})>1,ROW($1:$9)*10^(9-ROW($1:$9)))),0,)
不重復數字:
=IF(COUNT(FIND(0,A1:B1))=1,0,"")&SUBSTITUTE(SUM(IF(MMULT(COUNTIF(OFFSET(A1,,{0,1},),"*"&ROW($1:$9)&"*"),{1;1})<2,ROW($1:$9)*10^(9-ROW($1:$9)))),0,)
請教查找替換問題
把表1中字符在4個以上的字段(含4個)查找出來,替換成表2中的人名,最好在原位置修改,或者在新的一列上生成也成,只要其他內容保持不變並按原來的順序即可。
=IF(LEN(A2)<4,A2,OFFSET(表2!$A$1,SUMPRODUCT(--(LEN($A$2:A2)>3))-1,)) =IF(LEN(A2)<4,A2,INDEX(表2!A:A,COUNTIF($A$2:A2,"="&"????*")))
IF函數替換法總結
條件說明:小於10返回500,小於20返回800,小於30返回1100,小於40返回1400,大於40返回1700
類似於以上要求,大家最先想到IF函數,這也本屬IF專長。但用IF一般要長長的公式,且計算較慢。現總結一下IF之替換公式,望能拋磚引玉,在我的倡導下各位提供更完善的方案。其中部分公式通用,部分公式有局限性,請看說明。(前18個條件公式,根據速度,排名如下)
1=SMALL({500;800;1100;1400;1700},COUNTIF($A$9:$A$13,"<="&A1))
2=INDEX({500;800;1100;1400;1700},COUNTIF($A$9:$A$13,"<="&A1))
3=CHOOSE(COUNTIF($A$9:$A$13,"<="&A1),500,800,1100,1400,1700)
4=LOOKUP(A1,{0,10,20,30,40},{500,800,1100,1400,1700})
5=MIN(4,INT(A1/10))*300+500
6=MATCH(A1,{0,10,20,30,40})*300+200
7=MIN(40,FLOOR(A1,10))*30+500
8=HLOOKUP(A1,{0,10,20,30,40;500,800,1100,1400,1700},2,1)
9=200+SUM((A1>={0;10;20;30;40})*300)
10=FREQUENCY({0,10,20,30,40},A1)*300+200
11=MAX((A1>={0,10,20,30,40})*{500,800,1100,1400,1700})
12=INDEX({500;800;1100;1400;1700},MATCH(A1,{0;10;20;30;40},1))
13=CHOOSE(MATCH(A1,{0;10;20;30;40},1),500,800,1100,1400,1700)
14=500+SUM(IF(A1>={10,20,30,40},{300,300,300,300}))
15=IF(A1<10,500,IF(A1<20,800,IF(A1<30,1100,IF(A1<40,1400,1700))))
16=CHOOSE(SUM((A1>={0;10;20;30;40})*1),500,800,1100,1400,1700)
17=MAX((INT(A1/({10;20;30;40}))>0)*(ROW($1:$4)*300))+500
18=CHOOSE(MIN(INT(A1/(ROW($1:$4)*10))+1,5),500,800,1100,1400,1700)
新增公式:
19=CHOOSE(MIN(INT(A1/(ROW($1:$4)*10))+1,5),500,800,1100,1400,1700)
20{=MAX((INT(A1/(ROW($1:$4)*10))>0)*(ROW($1:$4)*300))+500}
21=500+MIN(4,MAX(0,INT(A1/10)))*300
22MAX((A1>={0,10,20,30,40})*{500,800,1100,1400,1700})
23=MATCH(A1,{0,10,20,30,40})*300+200
24=MIN(40,FLOOR(A1,10))*30+500
25=FREQUENCY(ROW($1:$5)*10-10,A1)*300+200
查找的函數(查找末位詞組)
(數組公式:)
=REPLACE(A2,1,MAX(IF(MID(A2,ROW($1:$100),1)=" ",ROW($1:$100))),)
=REPLACE(A2,1,LOOKUP(1,0/(MID(" "&A2,ROW($1:$100),1)=" "),ROW($1:$100))-1,)
(數組公式:)
=RIGHT(A2,MATCH(1,FIND(" ",RIGHT(" "&A2,ROW($1:$100))),)-1)
=TRIM(RIGHT(SUBSTITUTE(A2," ",REPT(" ",50)),50)) (好)
其實這個公式的思路, 是可以變化的,改變REPT( )中的數值, 可以返回, 指定空格位置後的數據,比如:
A1 =一 二 三 四 五 六 七 八 九
10個普通公式, 分別為 :
1=TRIM(RIGHT(SUBSTITUTE(A1,"",REPT("",100)),100)) 返回第0空格位置後的數據>一 二 三 四 五 六 七 八 九
2=TRIM(RIGHT(SUBSTITUTE(A1," ",REPT(" ",50)),100)) 返回第8 空格位置後的數據>九3=TRIM(RIGHT(SUBSTITUTE(A1," ",REPT(" ",40)),100)) 返回第7 空格位置後的數據>八 九
4=TRIM(RIGHT(SUBSTITUTE(A1," ",REPT(" ",30)),100)) 返回第6 空格位置後的數據>七 八 九
5=TRIM(RIGHT(SUBSTITUTE(A1," ",REPT(" ",23)),100)) 返回第5空格位置後的數據>六 七 八 九
6=TRIM(RIGHT(SUBSTITUTE(A1," ",REPT(" ",18)),100)) 返回第4 空格位置後的數據>五 六 七 八 九
7=TRIM(RIGHT(SUBSTITUTE(A1," ",REPT(" ",14)),100)) 返回第3 空格位置後的數據>四 五 六 七 八 九
8=TRIM(RIGHT(SUBSTITUTE(A1," ",REPT(" ",12)),100)) 返回第2 空格位置後的數據>三 四 五 六 七 八 九
9=TRIM(RIGHT(SUBSTITUTE(A1," ",REPT(" ",11)),100)) 返回第1 空格位置後的數據>二 三 四 五 六 七 八 九
10=TRIM(RIGHT(SUBSTITUTE(A1," ",REPT(" ",9)),100)) 返回第0空格位置後的數據>一 二 三 四 五 六 七 八 九
怎樣從原始數據中自動獲取最后一個數據
原始數據
a 12
b 1221
c 12
d 33
a 33 自動獲取
a 432 a 432
b 33 b 33
c 22 c 44
c 44 d 23
d 23
公式
=LOOKUP(1,0/($A$1:$A$100=C2),$B$1:$B$100)
兩列數據查找相同值對應的位置
=MATCH(B1,A:A,0)
查找數據公式兩個(基本查找函數為VLOOKUP,MATCH)
(1)、根據符合行列兩個條件查找對應結果
=VLOOKUP(H1,A1:E7,MATCH(I1,A1:E1,0),FALSE)
(2)、根據符合兩列數據查找對應結果(為數組公式)
=INDEX(C1:C7,MATCH(H1&I1,A1:A7&B1:B7,0))
