UMIFS/COUNTIFS函数内的间接列引用变化
发布时间:2022-02-26 04:47:13
使用Excel朋友都知道,将包含相对列引用的公式复制到其他列时,这些引用也会相应地更新。例如,公式:
=SUMIFS(C:C,$A:$A,”X”,$B:$B,”X”)
向右拖放时,将会变成:
=SUMIFS(D:D,$A:$A,”X”,$B:$B,”X”)
=SUMIFS(E:E,$A:$A,”X”,$B:$B,”X”)
等等。
因此,我们有一个相对简单的方法,可以从连续的列中获得条件和。
但是,如果我们希望增加的单元格区域是间接引用的,那该怎么办?例如,如果我们使用上述公式版本,但所引用的工作表是动态的:
=SUMIFS(INDIRECT(“‘”&$A$1&”‘!C:C”),INDIRECT(“‘”&$A$1&”‘!A:A”),”X”,INDIRECT(“‘”&$A$1&”‘!B:B”),”Y”)
其中,A1包含要引用的工作表名称(例如“Sheet1”)。
当我们向右拖动此公式时,间接引用的单元格区域不会改变。当然,这是完全可以预料的,因为那些“单元格区域”根本不是真正的单元格区域,而只是伪装成单元格区域的文本字符串,只有通过将它们传递给INDIRECT函数才能将其解释为实际的单元格区域。
现在的问题是:我们如何修改第一个公式,以便将其向右复制后,依次获得以下等价的公式:
=SUMIFS(INDIRECT(“‘”&$A$1&”‘!D:D”),INDIRECT(“‘”&$A$1&”‘!A:A”),”X”,INDIRECT(“‘”&$A$1&”‘!B:B”),”Y”)
=SUMIFS(INDIRECT(“‘”&$A$1&”‘!E:E”),INDIRECT(“‘”&$A$1&”‘!A:A”),”X”,INDIRECT(“‘”&$A$1&”‘!B:B”),”Y”)
等等。
可以使用INDEX函数来解决:
=SUMIFS(INDEX(INDIRECT(“‘”&$A$1&”‘!A:XFD”),,COLUMNS($A:C)),INDIRECT(“‘”&$A$1&”‘!A:A”),”X”,INDIRECT(“‘”&$A$1&”‘!B:B”),”Y”)
注意,当省略INDEX函数的参数row_num时,会返回整列引用,对于参数column_num也是如此。
如果A1中的值是“Sheet2”,则:
INDEX(INDIRECT(“‘”&$A$1&”‘!A:XFD”),,COLUMNS($A:C))
转换为:
=INDEX(Sheet2!A:XFD,,3)
即:
Sheet2!C:C
向右复制,公式成为:
=SUMIFS(INDEX(INDIRECT(“‘”&$A$1&”‘!A:XFD”),,COLUMNS($A:D)),INDIRECT(“‘”&$A$1&”‘!A:A”),”X”,INDIRECT(“‘”&$A$1&”‘!B:B”),”Y”)
转换为:
=SUMIFS(INDEX(Sheet2!A:XFD,,COLUMNS($A:D)),INDIRECT(“‘”&$A$1&”‘!A:A”),”X”,INDIRECT(“‘”&$A$1&”‘!B:B”),”Y”)
转换为:
=SUMIFS(INDEX(Sheet2!A:XFD,,4),Sheet2!A:A,”X”,Sheet2!B:B,”Y”)
转换为:
=SUMIFS(Sheet2!D:D,Sheet2!A:A,”X”,Sheet2!B:B,”Y”)
……
也可以使用OFFSET函数:
=SUMIFS(OFFSET(INDIRECT(“‘”&$A$1&”‘!A:A”),,COLUMNS($A:B)),INDIRECT(“‘”&$A$1&”‘!A:A”),”X”,INDIRECT(“‘”&$A$1&”‘!B:B”),”Y”)
其中:
INDIRECT(“‘”&$A$1&”‘!A:A”)
转换为:
Sheet2!A:A
而偏移的列数等于:
COLUMNS($A:B)
即2,于是传递到OFFSET函数后得到:
Sheet2!C:C
然而,如果间接引用的不是一个工作表,而是多个工作表,如何处理?例如公式:
=SUMPRODUCT(SUMIFS(INDIRECT(“‘”&Sheets&”‘!C:C”),INDIRECT(“‘”&Sheets&”‘!A:A”),”X”,INDIRECT(“‘”&Sheets&”‘!B:B”),”Y”))
其中,“Sheets”是定义的名称,引用位置为:
={“Sheet1″,”Sheet2″,”Sheet3″,”Sheet4”}
像前面一样,我们希望向右拖拉时,公式变化为:
=SUMPRODUCT(SUMIFS(INDIRECT(“‘”&Sheets&”‘!D:D”),INDIRECT(“‘”&Sheets&”‘!A:A”),”X”,INDIRECT(“‘”&Sheets&”‘!B:B”),”Y”))
=SUMPRODUCT(SUMIFS(INDIRECT(“‘”&Sheets&”‘!E:E”),INDIRECT(“‘”&Sheets&”‘!A:A”),”X”,INDIRECT(“‘”&Sheets&”‘!B:B”),”Y”))
等等。
仍然可以使用OFFSET函数:
=SUMPRODUCT(SUMIFS(OFFSET(INDIRECT(“‘”&Sheets&”‘!A:A”),,COLUMNS($A:B)),INDIRECT(“‘”&Sheets&”‘!A:A”),”X”,INDIRECT(“‘”&Sheets&”‘!B:B”),”Y”))
其原理与上文所解的单个工作表的版本相同。


猜你喜欢
- 微软Win10预览体验计划负责人Gabriel Aul日前向Insider成员发送了一封邮件,通知预览体验成员可以在Windows10上预览
- 电脑使用时间长了,会有一些重复的文件占内存,如何快速处理这些重复文件呢?Gemini 2 Mac版闪亮登场,那么小伙伴会问了Gemini 2
- 系统用久,我们的电脑运行肯定会慢。这也不能百分百说是电脑配置不行,那是因为电脑垃圾和插件过多,还有开机启动项目过多,才会使我们的电脑变卡了,
- PSD格式是Photoshop是一种独有的图形文件格式,因此很多家情况下都只能在Photoshop进行PSD格式文件的编辑,并且PSD文件一
- 无论是将演示文稿创建为PDF/XPS文档或是创建为一个视频,演示文稿都是保存在计算机中的。在工作中,要将一个演示文稿交给客户时,除了可以通过
- 电脑突然蓝屏怎么办win10?win10系统是问题以及bug最多的操作系统,很多用户在使用的过程中一定遇到过突然蓝屏的问题,那要怎么解决呢?
- 每个人都会给自己的电脑设置开机密码,这样别人就不会轻易的看到自己的隐私,但是很多不经常使用电脑的朋友们如果太久没用电脑,再开电脑的时候就会把
- 用Word 2010编辑文档过程中,经常需要输入一些符号,有些符号键盘上有,可以直接输入,有些符号键盘上没有,应该怎样输入呢?其实,在Wor
- 在电脑上拷贝数据的时候,需要使用到移动硬盘,有朋友在电脑上插入U盘等移动盘的时候,无法访问移动硬盘,会跳出窗口提示“参数错误”,下面小编以W
- 在美颜相机、美图软件大受追捧的如今,俄罗斯开发者 Yaroslav Goncharov 却以反方向的思路做出了一款变脸软件 Fac
- EXCEL数据处理中,经常会用到对多条件数据进行统计的情况,比如:多条件计数、多条件求和、多条件求平均值、多条件求最大值、多条件求最小值等。
- WORD怎么做联合公文头?文员经常需要制作联合公文头,这个做起来很麻烦,做的不好看起来就不正式,今天我们就来看看巧用word表格做标准的联合
- Win7系统是用户们长时间使用的系统之一,这个系统适配很多的程序,很多人刚买回电脑也都是这个默认系统,那么很多人都需要截图功能,下面就一起来
- 在工作中或多或少都会遇到空白行存在的情况,如果只有几个空白行,那么手动轻松删除,但是遇到100行空白行,你还在手动删除?无疑是浪费大量的时间
- 相信很多用户都在第一时间升级了Win11系统,这是一款全新的系统,很多用户升级之后对于这款系统还不是那么熟悉,其实在Win11系统内有多种模
- WPS跟Office都有着一个很好用的功能,那就是Ctrl+F查找,它可以快速的找到你需要的信息,查找又分为模糊查找和精确查找,下面小编就教
- 如何修改京东绑定的手机号?京东是一个网上购物平台,用户可以使用其选购商品。换了手机号,但是京东绑定的手机号还是原来的那个,想要修改,该怎么操
- Win10系统要不要装杀毒软件?我们都知道Win10系统自带有杀毒软件了,那么我们还要不要在安装第三方杀毒软件呢?带着这份困惑,我们一起来看
- 很多使用Wn7系统的小伙伴发现一个问题,就是开机后键盘不能用,不管按什么都没有反应,这该如何解决呢?接下来就一起看看解决办法吧。1、如果是部
- win10系统自带的Windows Defender虽然好用,但是很多用户都会选择第三方安全软件,而且一直弹出提示窗口让人烦恼。那么有没有办