indirect函数使用方法和应用实例

一、语法:

INDIRECT(ref_text,[a1]):

ref_text:对单元格的引用,此单元格可以包含A1-样式的引用、R1C1-样式的引用、定义为引用的名称或者对文本字符串单元格的引用。如果ref_text是对另外一个工作部的引用(外部引用),则那个工作簿必须被打开。

[a1]:一逻辑值,指明包含在单元格ref_text中的引用类型。如果[a1]为TRUE或者省略,ref_text被解释为A1-样式的引用;如果[a1]为FALSE,ref_text被解释为R1C1-样式的引用。

注:我们常用的为A1-样式。

A1-样式:

这里的A就是列号,即A列;

这里的1表示行号,即第1行;

所以在A1引用样式下,第1行第1列,用A1来表示,就是我们通常说的A1单元格。


单元格A1-样式

R1C1-样式:

这里的R就是Row的第一个字母,R1就是表示第1行;

这里的C就是Column的第一个字母,C1就是表示第1列;

所以在R1C1引用样式下,第1行第1列就是用R1C1来表示。

单元格R1C1-样式



二、用法

1、indirect函数对单元格引用的两种方式。

看下图,使用indirect函数在C2、C3引用A1单元格的内容。

indirect引用(1-2)

1——=INDIRECT("A1"),结果为C3。这种使用,简单的讲,就是将这些引用地址套上双引号,然后再传递给INDIRECT函数。

2——=INDIRECT(C1),结果为C2。解释:因为C1的值就是"A1",在公式编辑栏,选中“C1”,然后按下F9键,计算值,可以看到变为“"A1"”,本质没变,都是对单元格引用。

indirect引用(2-2)

上面两者的区别在于:前者是A1单元格内文本的引用,后者是引用的C1单元格内的地址引用的单元格的内容。

2、indirect函数工作表名称的引用

如下图所示:


工作表名称的引用 (非纯数字1-2)

如果需要在“二班”工作表,计算“一班”工作表B2:B5的成绩总和。可以使用这样的 公式:=SUM(INDIRECT("一班!B2:B5"))。【解释:indirect("工作表名!单元格区域")】

工作表名称的引用 (非纯数字2-2)

注:另外一种情况是当工作表名称直接是数字的,在工作表名称两边必须添加上一对单引号。


工作表名称的引用 (纯数字1-2 )

如果需要在“2”工作表,计算“1”工作表B2:B5的成绩总和。可以使用这样的 公式:=SUM(INDIRECT("'1'!B2:B5"))。解释:indirect(" '工作表名'!单元格区域")

总结:如果工作表名为汉字,工作表名前后可以加上一对单引号,也可以不加。但是数字和一些特殊字符时,必须加单引号,否则不能得到正确结果。

我们在工作表命名时形成习惯尽量不要有空格和符号,这样可以不怕indirect引用忘记加单引号括起来。要么形成习惯所有indirect带工作表名引用时都用单引号将代表工作表名的字符串括起来。


工作表名称的引用 (纯数字2-2 )

3、INDIRECT函数对工作簿引用的书写方式和细节正确写法

=INDIRECT("[工作簿名.xls]工作表表名!单元格地址")

INDIRECT函数,如果是对另一个工作簿的引用(外部引用),则那个工作簿必须被打开。如果源工作簿没有打开,函数 INDIRECT 返回错误值 #REF!。


INDIRECT函数对工作簿引用(1-2)
INDIRECT函数对工作簿引用(2-2)

4、Indirect函数应用实例一:制作多级下拉菜单

数据有效性课程提到过,可查看课程回顾。

Indirect函数-多级下拉菜单

5、Indirect函数应用实例二:简单多表合并

日报表-1号
日报表-2号
日报表-3号
日报表-4号
日报表-5号


日报表汇总

公式:=INDIRECT(B$1&"!B"&ROW())

公式说明:

B$1&"!B"&ROW(),根据ROW函数产生的行号,生成单元格地址。例公式在第2行时,ROW()结果是2,B$1&"!B"&ROW()的结果就是:1号!B2

当往下拖动时是1号!B3、1号!B4、1号!B5…………

当往右拖动时是2号!B2、3号!B2、4号!B2、5号!B2…………

6、Indirect函数应用实例三:多表查找

工资表模板中,每个部门一个表。在查询表中,要求根据提供的姓名,从财务部、人事部、销售部3个工作表中查询该员工的基本工资。

你可以去用vlookup函数结合if函数一个表一个表查找,但是你可以想象会繁琐。这才三张表,更不用去想假如有30张了…………

==IFERROR(VLOOKUP(查询!A2,财务部!A:B,2,0),IFERROR(VLOOKUP(查询!A2,人事部!A:B,2,0),IFERROR(VLOOKUP(查询!A2,销售部!A:B,2,0),"查无此人")))


工资查询表
工资明细表-财务部
工资明细表-人事部
工资明细表-销售部

分析:

如果,我们知道A3是财务部的,那么公式可以写为:

=VLOOKUP(查询!A2,财务部!A:B,2,0)

如果,我们知道A3可能在财务部或人事部这2个表中,公式可以写为:

=IFERROR(VLOOKUP(查询!A2,财务部!A:B,2,0), VLOOKUP(查询!A2,人事部!A:B,2,0))

意思是,如果在财务部表中查找不到(用iferror函数判断),查询不到则去人事部表中再查找。

如果,我们知道A3只能能在财务部、人事部或销售部中,否则“查无此人”,公式可以再次改为:

=IFERROR(VLOOKUP(查询!A2,财务部!A:B,2,0),IFERROR(VLOOKUP(查询!A2,人事部!A:B,2,0),IFERROR(VLOOKUP(查询!A2,销售部!A:B,2,0),"查无此人")))

意思是,如果在财务部表中查找不到(用iferror函数判断),查询不到则依次去人事部、销售部表中再查找,三张表都没有那就是“查无此人”。

如果,有更多的表,本例中仅有3个表,那就一层层的套用下去。假设有20-30张表你能想想么?【实际上如果看不明白建议直接通过方方格子、哈德门工具箱等外部插件直接合并工作表到一起,缺陷就是数据更新时都需要重新合并查找一次】


方方格子-汇总拆分

我们结合indirect函数和vlookup配合其他来一步实现,简化公式,以适合在更多的表中查询【学会修改公式嵌套使用】:


indirect函数和vlookup嵌套

=VLOOKUP(A2,INDIRECT(LOOKUP(1,0/COUNTIF(INDIRECT({"财务部","人事部","销售部"}&"!a:a"),A2),{"财务部","人事部","销售部"})&"!A:B"),2,0)

注:

COUNTIF(INDIRECT({"财务部","人事部","销售部"}&"!a:a"),A2)

1——确定员工是在哪个表中。这里利用countif函数可以多表统计计算各个表中该员工存在的个数;

2——利用lookup(1,0/(数组),数组) 结构取得工作表的名称;

3——利用indirec函数把字符串转换成单元格引用;

4——利用vlookup查找即可。

关键部分:

A2:查找的内容

{""}:大括号内是要查找的多个工作表名称,用英文状态下逗号分隔;

a:a :本例是姓名在各个表中的A列,如果在B列则为b:b;

A:B :vlookup查找的区域

2:是vlookup第3个参数,相对应的列数。你懂的!【找什么;在哪儿找;查找区域第几列;精确还是模糊查找】

7、Indirect函数应用实例四:多表求和

如下图所示,有1日~5日这5个列相同、行数不同的明细表,要求汇总出每个产品的销量之和。

销量表-1日
销量表-2日
销量表-3日
销量表-4日
销量表-5日


汇总求和

汇总求和公式:

=SUMPRODUCT(SUMIF(INDIRECT(ROW($1:$5)&"日!b:b"),A2,INDIRECT(ROW($1:$5)&"日!c:c")))

注:

如果只有一个表,我们只需要用sumif函数直接求和:

=SUMIF('1日'!B:B,合计!A2,'1日'!C:C)

对于多个表,除了用sumif()+sumif+sumif()...外【和上例iferror和vlookup结合一个个查找相似】,Sumif函数支持多表同时求和,但必须用indirect函数生成对多个表的引用,即:

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"))

但是上述的公式返回的每个表的求和结果,是一组数,我们需要把他们汇总起来,最后还需要用sumrpoduct函数进行求和,即:

=SUMPRODUCT(SUMIF(INDIRECT(ROW($1:$5)&"日!b:b"),A2,INDIRECT(ROW($1:$5)&"日!c:c")))

或者最后用sum函数进行求和,注意这时候需要使用数组公式哦,按ctrl+shift+enter运行【{}】,即:

{=SUM(SUMIF(INDIRECT(ROW($1:$5)&"日!b:b"),A2,INDIRECT(ROW($1:$5)&"日!c:c")))}

                                                                                                                                                                           by:wehfouh

                                                                                                                                                                           2018-10-7    18:06

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容