一寒跳、語法:
INDIRECT(ref_text,[a1]):
ref_text:對單元格的引用聘萨,此單元格可以包含A1-樣式的引用、R1C1-樣式的引用童太、定義為引用的名稱或者對文本字符串單元格的引用米辐。如果ref_text是對另外一個(gè)工作部的引用(外部引用),則那個(gè)工作簿必須被打開书释。
[a1]:一邏輯值翘贮,指明包含在單元格ref_text中的引用類型。如果[a1]為TRUE或者省略爆惧,ref_text被解釋為A1-樣式的引用狸页;如果[a1]為FALSE,ref_text被解釋為R1C1-樣式的引用扯再。
注:我們常用的為A1-樣式芍耘。
A1-樣式:
這里的A就是列號,即A列熄阻;
這里的1表示行號斋竞,即第1行;
所以在A1引用樣式下秃殉,第1行第1列坝初,用A1來表示,就是我們通常說的A1單元格复濒。
R1C1-樣式:
這里的R就是Row的第一個(gè)字母,R1就是表示第1行乒省;
這里的C就是Column的第一個(gè)字母巧颈,C1就是表示第1列;
所以在R1C1引用樣式下袖扛,第1行第1列就是用R1C1來表示砸泛。
二、用法
1蛆封、indirect函數(shù)對單元格引用的兩種方式唇礁。
看下圖,使用indirect函數(shù)在C2惨篱、C3引用A1單元格的內(nèi)容盏筐。
1——=INDIRECT("A1"),結(jié)果為C3砸讳。這種使用琢融,簡單的講界牡,就是將這些引用地址套上雙引號,然后再傳遞給INDIRECT函數(shù)漾抬。
2——=INDIRECT(C1)宿亡,結(jié)果為C2。解釋:因?yàn)镃1的值就是"A1"纳令,在公式編輯欄挽荠,選中“C1”,然后按下F9鍵平绩,計(jì)算值圈匆,可以看到變?yōu)椤?A1"”,本質(zhì)沒變馒过,都是對單元格引用臭脓。
上面兩者的區(qū)別在于:前者是A1單元格內(nèi)文本的引用,后者是引用的C1單元格內(nèi)的地址引用的單元格的內(nèi)容腹忽。
2来累、indirect函數(shù)工作表名稱的引用
如下圖所示:
如果需要在“二班”工作表,計(jì)算“一班”工作表B2:B5的成績總和窘奏∴谒可以使用這樣的 公式:=SUM(INDIRECT("一班!B2:B5"))∽殴【解釋:indirect("工作表名领猾!單元格區(qū)域")】
注:另外一種情況是當(dāng)工作表名稱直接是數(shù)字的,在工作表名稱兩邊必須添加上一對單引號骇扇。
如果需要在“2”工作表摔竿,計(jì)算“1”工作表B2:B5的成績總和∩傩ⅲ可以使用這樣的 公式:=SUM(INDIRECT("'1'!B2:B5"))继低。解釋:indirect(" '工作表名'!單元格區(qū)域")
總結(jié):如果工作表名為漢字稍走,工作表名前后可以加上一對單引號袁翁,也可以不加。但是數(shù)字和一些特殊字符時(shí)婿脸,必須加單引號粱胜,否則不能得到正確結(jié)果。
我們在工作表命名時(shí)形成習(xí)慣盡量不要有空格和符號狐树,這樣可以不怕indirect引用忘記加單引號括起來焙压。要么形成習(xí)慣所有indirect帶工作表名引用時(shí)都用單引號將代表工作表名的字符串括起來。
3、INDIRECT函數(shù)對工作簿引用的書寫方式和細(xì)節(jié)正確寫法
=INDIRECT("[工作簿名.xls]工作表表名!單元格地址")
INDIRECT函數(shù)冗恨,如果是對另一個(gè)工作簿的引用(外部引用)答憔,則那個(gè)工作簿必須被打開。如果源工作簿沒有打開掀抹,函數(shù) INDIRECT 返回錯(cuò)誤值 #REF!虐拓。
4、Indirect函數(shù)應(yīng)用實(shí)例一:制作多級下拉菜單
數(shù)據(jù)有效性課程提到過傲武,可查看課程回顧蓉驹。
5、Indirect函數(shù)應(yīng)用實(shí)例二:簡單多表合并
公式:=INDIRECT(B$1&"!B"&ROW())
公式說明:
B$1&"!B"&ROW()揪利,根據(jù)ROW函數(shù)產(chǎn)生的行號态兴,生成單元格地址。例公式在第2行時(shí)疟位,ROW()結(jié)果是2瞻润,B$1&"!B"&ROW()的結(jié)果就是:1號!B2
當(dāng)往下拖動時(shí)是1號!B3甜刻、1號绍撞!B4、1號得院!B5…………
當(dāng)往右拖動時(shí)是2號!B2傻铣、3號!B2、4號!B2祥绞、5號!B2…………
6非洲、Indirect函數(shù)應(yīng)用實(shí)例三:多表查找
工資表模板中,每個(gè)部門一個(gè)表蜕径。在查詢表中两踏,要求根據(jù)提供的姓名,從財(cái)務(wù)部兜喻、人事部梦染、銷售部3個(gè)工作表中查詢該員工的基本工資。
你可以去用vlookup函數(shù)結(jié)合if函數(shù)一個(gè)表一個(gè)表查找虹统,但是你可以想象會繁瑣弓坞。這才三張表隧甚,更不用去想假如有30張了…………
==IFERROR(VLOOKUP(查詢!A2,財(cái)務(wù)部!A:B,2,0),IFERROR(VLOOKUP(查詢!A2,人事部!A:B,2,0),IFERROR(VLOOKUP(查詢!A2,銷售部!A:B,2,0),"查無此人")))
分析:
如果车荔,我們知道A3是財(cái)務(wù)部的,那么公式可以寫為:
=VLOOKUP(查詢!A2,財(cái)務(wù)部!A:B,2,0)
如果戚扳,我們知道A3可能在財(cái)務(wù)部或人事部這2個(gè)表中忧便,公式可以寫為:
=IFERROR(VLOOKUP(查詢!A2,財(cái)務(wù)部!A:B,2,0), VLOOKUP(查詢!A2,人事部!A:B,2,0))
意思是,如果在財(cái)務(wù)部表中查找不到(用iferror函數(shù)判斷),查詢不到則去人事部表中再查找珠增。
如果超歌,我們知道A3只能能在財(cái)務(wù)部、人事部或銷售部中蒂教,否則“查無此人”巍举,公式可以再次改為:
=IFERROR(VLOOKUP(查詢!A2,財(cái)務(wù)部!A:B,2,0),IFERROR(VLOOKUP(查詢!A2,人事部!A:B,2,0),IFERROR(VLOOKUP(查詢!A2,銷售部!A:B,2,0),"查無此人")))
意思是,如果在財(cái)務(wù)部表中查找不到(用iferror函數(shù)判斷)凝垛,查詢不到則依次去人事部懊悯、銷售部表中再查找,三張表都沒有那就是“查無此人”梦皮。
如果炭分,有更多的表,本例中僅有3個(gè)表剑肯,那就一層層的套用下去捧毛。假設(shè)有20-30張表你能想想么?【實(shí)際上如果看不明白建議直接通過方方格子让网、哈德門工具箱等外部插件直接合并工作表到一起呀忧,缺陷就是數(shù)據(jù)更新時(shí)都需要重新合并查找一次】
我們結(jié)合indirect函數(shù)和vlookup配合其他來一步實(shí)現(xiàn),簡化公式寂祥,以適合在更多的表中查詢【學(xué)會修改公式嵌套使用】:
=VLOOKUP(A2,INDIRECT(LOOKUP(1,0/COUNTIF(INDIRECT({"財(cái)務(wù)部","人事部","銷售部"}&"!a:a"),A2),{"財(cái)務(wù)部","人事部","銷售部"})&"!A:B"),2,0)
注:
COUNTIF(INDIRECT({"財(cái)務(wù)部","人事部","銷售部"}&"!a:a"),A2)
1——確定員工是在哪個(gè)表中荐虐。這里利用countif函數(shù)可以多表統(tǒng)計(jì)計(jì)算各個(gè)表中該員工存在的個(gè)數(shù);
2——利用lookup(1,0/(數(shù)組),數(shù)組) 結(jié)構(gòu)取得工作表的名稱丸凭;
3——利用indirec函數(shù)把字符串轉(zhuǎn)換成單元格引用福扬;
4——利用vlookup查找即可。
關(guān)鍵部分:
A2:查找的內(nèi)容
{""}:大括號內(nèi)是要查找的多個(gè)工作表名稱惜犀,用英文狀態(tài)下逗號分隔铛碑;
a:a :本例是姓名在各個(gè)表中的A列,如果在B列則為b:b虽界;
A:B :vlookup查找的區(qū)域
2:是vlookup第3個(gè)參數(shù)汽烦,相對應(yīng)的列數(shù)。你懂的!【找什么莉御;在哪兒找撇吞;查找區(qū)域第幾列;精確還是模糊查找】
7礁叔、Indirect函數(shù)應(yīng)用實(shí)例四:多表求和
如下圖所示牍颈,有1日~5日這5個(gè)列相同、行數(shù)不同的明細(xì)表琅关,要求匯總出每個(gè)產(chǎn)品的銷量之和煮岁。
匯總求和公式:
=SUMPRODUCT(SUMIF(INDIRECT(ROW($1:$5)&"日!b:b"),A2,INDIRECT(ROW($1:$5)&"日!c:c")))
注:
如果只有一個(gè)表,我們只需要用sumif函數(shù)直接求和:
=SUMIF('1日'!B:B,合計(jì)!A2,'1日'!C:C)
對于多個(gè)表,除了用sumif()+sumif+sumif()...外【和上例iferror和vlookup結(jié)合一個(gè)個(gè)查找相似】画机,Sumif函數(shù)支持多表同時(shí)求和冶伞,但必須用indirect函數(shù)生成對多個(gè)表的引用,即:
INDIRECT(ROW($1:$5)&"日!B:B")和INDIRECT(ROW($1:$5)&"日!C:C")
用sumif組合起來步氏,即:
=SUMIF(INDIRECT(ROW($1:$5)&"日!b:b"),A2,INDIRECT(ROW($1:$5)&"日!c:c"))
但是上述的公式返回的每個(gè)表的求和結(jié)果响禽,是一組數(shù),我們需要把他們匯總起來荚醒,最后還需要用sumrpoduct函數(shù)進(jìn)行求和金抡,即:
=SUMPRODUCT(SUMIF(INDIRECT(ROW($1:$5)&"日!b:b"),A2,INDIRECT(ROW($1:$5)&"日!c:c")))
或者最后用sum函數(shù)進(jìn)行求和,注意這時(shí)候需要使用數(shù)組公式哦腌且,按ctrl+shift+enter運(yùn)行【{}】梗肝,即:
{=SUM(SUMIF(INDIRECT(ROW($1:$5)&"日!b:b"),A2,INDIRECT(ROW($1:$5)&"日!c:c")))}
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?by:wehfouh
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?2018-10-7 ? ?18:06