ExcelIndirect函数的用法,含

  在Excel中,Indirect函数用于返回文本字符串指定的单元格引用;它共有两个参数,第一个参数是文本字符串,第二个参数是引用类型,特别要注意第一个参数必须为文本,否则会返回错误。它既能在同一工作簿中引用又能跨工作簿引用,但引用不能超过Excel允许的最大行数和最大列数;另外,Indirect函数通常与Address、Match、Row、Column函数组合使用实现在同一表格按条件批量提取数据和把数据从多个表格提取到一个表格;以下就是Excel用Indirect函数引用单元格和提取数据的具体操作方法,共有6个实例,实例操作中所用版本均为Excel。

  一、ExcelIndirect函数的用法及实例

  (一)A1为True(或省略)的实例

  1、假如要返回任意指定单元格的内容。双击A8单元格,输入公式=Indirect(a4),按回车,返回#REF!错误;双击A8,把公式改为=INDIRECT("A"4),按回车,返回A4中的内容“沙糖桔”;再次双击A8,在公式后输入True,按回车,返回与上次一样的结果;操作过程步骤,如图1所示:

  2、公式说明:

  A、公式=Indirect(a4)之所以会返回引用错误#REF!,是因为Indirect函数的第一个参数Ref_Text必须为文本,而a4是对具体单元格的引用,a4在公式中会解析为它的内容“沙糖桔”,按住Alt,分别按M和V打开“公式求值”窗口后求值可知,演示如图2所示:

  B、而公式=INDIRECT("A"4)能返回正确的值,是因为"A"4为文本,因此要使Indirect函数返回正确的值,它的第一个参数必须为文本。

  (二)A1为False的实例

  1、双击D8单元格,输入公式=INDIRECT("R"ROW(A5)"C"COLUMN(D1),FALSE),如图3所示:

  2、按回车,返回第五行第四列(即D5)中的数值,如图4所示:

  3、公式说明:ROW(A5)返回A5的行号5;COLUMN(D1)返回D1的列号4;则公式变为=INDIRECT("R"5"C"4,FALSE),进一步计算把每个字符连接起来,即"R5C4",也就是引用第5行第4列,即D5;R和C分别代表行和列。

  (三)引用Excel允许的最大行数或列数实列

  1、双击B2单元格,把公式=INDIRECT("A")复制到B2,按回车,返回第一列最后一行的值;选中A1,按快捷键Ctrl+“向下方向键”定位到最后一行,可以看到A中值正是返回值,当往下移动时,再也没有出现空行,说明已到Excel允许的最大行数;再按Ctrl+“向上方向键”重新回到第一行,双击B3,输入公式=INDIRECT("XFD"1),按回车,返回第一行最后一列的值,按Ctrl+“向右方向键”定位到最后一列,XFD1的值恰好是返回值,并且XFD已经是Excel允许的最后一列,按Ctrl+“向左方向键”定位回第一列;操作如图5所示:

图5

  2、上面的公式也可以用R1C1的样式,例如返回Excel允许的最大行数和列数所对应的单元格中的值,公式可以这样写=INDIRECT("R""C",FALSE),把公式复制到XEY单元格,如图6所示:

  按回车,返回XFD中的数值,如图7所示:

  (四)Indirect函数跨表引用实例

  1、假如要在一个工作表(水果表1)中引用另一个工作表(水果表2)的A2。双击“水果表1”的B8单元格,把公式=INDIRECT("水果表2!""A2")复制到B8,按回车,返回“香蕉”,单击标签“水果表2”切换到它,A2中的文字正是返回值;操作如图8所示:

  2、用Indirect函数跨表引用(即外部引用),只需在所要引用的单元格前多加工作表名称和感叹号!,并且要用双击引号把它们括起来,如演示中的“"水果表2!""A2"”。

  二、Excel用Indirect函数跨表格批量提取数据

  (一)Indirect+Row+Address+Column组合实现把多个表格中指定行的数据提取到一个表格

  1、假如要把三个表格(4月、5月和6月)中的第5行B到D列提取到“总表”。双击B2单元格,把公式=INDIRECT(ROW(A4)"月!"ADDRESS(ROW($A$5),COLUMN(B$1)))复制到B2,按回车,返回表格“4月”中B2的名称“红色雪纺T恤”,选中B2,把鼠标移到B2右下角的单元格填充柄上,鼠标变为粗体加号后,按住左键,往右拖,一直拖到C2,则返回“红色雪纺T恤”的价格和销量;再把鼠标移到C2的单元格填充柄上,往下拖,则返回表格“5月和6月”第5行B列至D列的数据;操作步骤,如图9所示:

  2、公式=INDIRECT(ROW(A4)"月!"ADDRESS(ROW($A$5),COLUMN(B$1)))说明:

  A、ROW(A4)返回A4的行号4,这里用于返回工作表“4月”中的4,因为要提取数据的表格前面是4、5、6,当往下拖时,A4会变为A5、A6,也就是自动变为其余表格的名称。

  B、$A$5中的$表示绝对引用,A和5前都有它,说明对列和行都是绝对引用,即无论是往右还是往下拖,A5都不会变;ROW($A$5)返回A5的行号5,并且无论往哪拖,始终返回行号5。

  C、B$1表示对列相对引用而对行绝对引用,往右拖时,B1会变为C1、D1等,在这里用于实现返回不同列的列号;COLUMN(B$1)返回B1的列号2,当拖到C1时,返回C1的列号3,其它的以此类推。

  D、则公式变为=INDIRECT(4"月!"ADDRESS(5,2));ADDRESS(5,2)中,5为行号、2为列号,其作用是返回第五行第二列的引用,即返回$B$5;则公式变为=INDIRECT(4"月!"$B$5),也就是返回工作表“4月”中B5的内容。

  (二)Indirect+Match+Column组合实现按条件批量提取数据

  1、有一个月份销量表,假如要求提取任意月份的销量。双击B12,把公式=INDIRECT("r"MATCH($A12,$A$1:$A$9,)"c"COLUMN(),0)复制到B12,按回车返回“T恤”“1月”的销量;选中B12,用往右拖的方法提取“1月”剩余服装的销量,再用往下拖的方法提取“3月和7月”的销量;操作步骤如图10所示:

  2、公式=INDIRECT("r"MATCH($A12,$A$1:$A$9,)"c"COLUMN(),0)说明

  A、MATCH($A12,$A$1:$A$9,)用于返回A12(即“1月”)在A1:A9中的位置,Match函数省略了最后一个参数,默认查找小于等于查找值“1月”的最小值,“1月”在A1:A9的第二个位置,因此返回2,但A1:A9需要按升序排序,否则可能返回不正确的位置。

  B、COLUMN()返回公式所在列的列号,当公式在B12,返回列号2;当公式在C12时,返回列号3;其它的以此类推。

  C、则公式变为=INDIRECT("r"2"c"2,0),继续计算变为=INDIRECT("r2c2",0);r2c2表示返回第二行第二列对应单元格的引用,即返回B2中的数值;参数0相当于False,即把"r2c2"解释为R1C1的样式。

  三、ExcelIndirect函数语法

  1、表达式:INDIRECT(Ref_Text,[A1])

  中文表达式:INDIRECT(引用文本,[引用类型])

  2、说明:

  A、Ref_Text既可以是内部引用(在本工作簿中引用)又可以是外部引用(对另一工作簿的引用),如果是外部引用,所引用的工作簿必须打开,否则将返回引用错误#Ref!;另外,ExcelWebApp不支持外部引用。

  B、Ref_Text引用的单元格区域不能超出Excel允许的最大行数或最大列数(XFD),否则也返回#REF!错误;但Excel早期版本会忽略这一限制且返回一个值。

  C、A1有两个可选值,即True(或省略)和False;如果为True,则解释为如A1这样的引用;如果为False,解释为R1C1,R表示“行”,C表示“列”,R1C1表示对第一行第一列的引用,即A1。无论哪种引用方式,如果引用单元格不存在,都将返回错误。




转载请注明:http://www.aierlanlan.com/grrz/3078.html