SUMIFS/COUNTIFS函数内的间接列引用变化
发布时间:2023-07-01 11:53:23
使用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”))
其原理与上文所解的单个工作表的版本相同。


猜你喜欢
- Word设置 * 标题的方法如下:点击“格式”->“项目符号与编号”,在“项目符号与编号”对话框里面点选“多级符号”选项卡,从里面任选一
- Win11系统PIN码删除变成灰色怎么办?最近有用户反映这个问题,想删除PIN码,但是发现为灰色没办法删除,这是怎么回事呢?针对这一问题,本
- win8.1扫描仪在哪里?这几天办公室常常有同事来问,我们的打印机有没有扫描的功能,想要扫描点东西。经过一翻摸索,现在把它写出来和大家共享。
- 进入Windows 10系统桌面后,点击左下角的Windows 徽标,然后在弹出菜单中选择“设置”菜单项在打开的设置窗口中选择“更新和安全”
- 相信大多数的人在使用电脑的过程中,出于保护自己的隐私,都会给自己的电脑设置一个开机密码,以此避免他人打开自己的电脑。但也都有不少的朋友因为将
- PPT怎么制作电影胶片效果?近期有用户想让自己的幻灯片页面看起来更为有趣,就想将幻灯片页面制作为电影胶片效果,那么应该如何操作呢?感兴趣的朋
- win10系统是一款非常稳定的电脑操作系统,很多用户都在使用,最近有用户反应,自己的使用的台式机一直无限的重启,不知道是什么原因,那我们该怎
- 怎么使用命令提示符重装Win10系统?最近有用户询问这个问题,电脑长时间使用,难免会遇到各种故障问题,这时候就可以通过系统重装来解决,但是很
- 今日最新消息,荣耀的老一些的机型支持鸿蒙内测升级了,升级时间将于今天下午4点开启,到时候各位可以使用荣耀手机进行升级。另据数码博主 @长安数
- 在我们平常生活中将会用到蓝牙,相信还有部分用户不知道应该如何给电脑安装蓝牙驱动,对此今天今天就以Win7系统为例,为大家带来Win7安装蓝牙
- Win7关机立马自动重启一般都是注册表和设置上的问题,解决起来需要根据不同的问题使用不同的解决方法,想要解决的小伙伴来看看详细的解决方法吧。
- 微商截图王如何去水印?微商截图王是微商很喜欢用的一款图像编辑软件,可以生产微信对话、微信红包等功能。微商截图王要如何去水印呢,下面就给大家分
- 操作步骤:1、将光标放在目录页的首部,单击页面布---->分隔符---->分节符---->下一节,如图所示;2、在目录页的
- Win10找不到快速启动如何修复(详情可查看大侠前文《解决win7系统快速启动栏不见的方法》)?最近,很多用户都在关注这个问题的解决方法,因
- ppt怎么给图片添加毛玻璃效果?ppt中插入的图片想要添加毛玻璃的效果,该怎么虚化图片呢?下面我们就来看看ppt虚化效果的制作方法,需要的朋
- 我们知道电脑是有很多命令的,其中有一个是net user命令,这个net user命令能添加修改用户账户,可是很多用户不懂怎么使用它,其实很
- 还没下载 office 安装包的同学,请先下载对应的安装包!office 2016,office 2013,office 2010 的安装步
- Win7中快速安装驱动升级驱动程序在Windows 7中全部是自动的哦,下面有个操作过程截图,大家可以看看Windows 7中,驱动安装非常
- 爱思助手如何导入导出照片?最近有很多小伙伴表示想要知道爱思助手导入导出的方法步骤,那么今天小编就和大家一起来看看爱思助手导入导出照片的具体操
- mac上家居设计软件哪个好?Planner 5D for mac可让每个人轻松创建漂亮且逼真的二维和三维室内设计高清模型。Planner 5