ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 7787|回复: 12

为何sumif不认多列合并的区域名称?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2006-9-27 22:50 | 显示全部楼层 |阅读模式

1kfpFoA0.rar (4.25 KB, 下载次数: 61)


今天遇到一个很奇怪的问题:为何sumif不认多列合并的区域名称?详细情况请参见附件。

而且,更奇怪的是:=sumif({1;2;3},">1",{1;2;3})  这个公式也显示 #VALUE! 

TA的精华主题

TA的得分主题

发表于 2006-9-27 22:52 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
原来“大智若愚(鱼)”说的是你唢,SUMIF怎么能用数组呢?呵呵。。。

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-9-27 22:55 | 显示全部楼层

您打开附件,但第一个公式又可以哟

TA的精华主题

TA的得分主题

发表于 2006-9-27 22:59 | 显示全部楼层
QUOTE:
以下是引用鱼之乐在2006-9-27 22:55:08的发言:

您打开附件,但第一个公式又可以哟

鱼版主真有意思![em12]

第1个公式WWW是引用,当然结果正确。

但是公式2中的BBB则是通过两个区域合并,已经从引用转换为了数组了,当然就报错了,因为象SUMIF/COUNTIF函数都是不支持数组作为查找条件的,必须是引用(当然包括函数产生的三维引用)

我倒是想它们支持数组,其他好多问题就可以简化公式了,这类问题一般是用数组公式直接比较得结果的。

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-9-27 23:06 | 显示全部楼层

谢谢解答。

再请教一个问题:二个条件,一个是对A列精确匹配(相等关系),一个是对B模糊匹配(如包含“中国”二个字),对满足条件的C列求和--类似的求和有什么好的解决方案?

我原来是设想通过上述的AB二列合并区域名称来解决,看来是没希望了。

TA的精华主题

TA的得分主题

发表于 2006-9-27 23:47 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
QUOTE:
以下是引用鱼之乐在2006-9-27 23:06:13的发言:

谢谢解答。

再请教一个问题:二个条件,一个是对A列精确匹配(相等关系),一个是对B模糊匹配(如包含“中国”二个字),对满足条件的C列求和--类似的求和有什么好的解决方案?

我原来是设想通过上述的AB二列合并区域名称来解决,看来是没希望了。

当然有解决方法,一般可以考虑使用FIND函数,或者使用SEARCH的通配符查找的方法都可以实现的,但可以肯定的是用数组公式来处理吧!

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-9-28 07:01 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-9-28 07:34 | 显示全部楼层

BfRY4sP8.rar (2.94 KB, 下载次数: 102)


昨晚想到一个方案,早上来测试,意想不到的事情太多了,有兴趣的朋友可以打开附件看看。

TA的精华主题

TA的得分主题

发表于 2006-9-28 09:38 | 显示全部楼层

E10的公式为:=SUMIF(IF(B1:B11="a","",A1:A11),"*1*",C1:C11)

E11的公式为:=SUMIF(IF(B1:B11="b",A1:A11,""),"*1*",C1:C11)

前面gdliyy版主已经解释过了,sumif不支持数组参数的运算,必须是引用。

现在,我们先抛开不管这个excel内部的约定,假设sumif函数支持数组,但此时第一参数为IF(B1:B11="b",A1:A11,""),这就决定了如果要使用if的判断结果作为参数,那么整个公式必须是一个数组公式,也就是Ctrl+Shift+Enter结束生成的数组公式,但鱼版主的两个公式都是普通公式,所以if判断的返回结果并不是一个意料中的数组,来参与整个公式的运算。

那么17的结果是怎么出来的呢?因为是普通公式,所以if函数没有完全起作用,整个IF(B1:B11="b",A1:A11,"")其实就相当于一个IF(B11="b",A1:A11,"")的区域引用(其中B1111的位置是由公式所在行决定的),所以跟B列整列数据没有关系,而只与公式所在行的那个B列值有关。这样也就可以解释为什么E10的公式就不能得出结果:如果把E10中的IF(B1:B11="a","",A1:A11)改成IF(B1:B11="b","",A1:A11),一样可以得到17的结果,因为B10为“a”。

回过头来,如果把E10和E11的公式都加上Ctrl+Shift+Enter的话,那么所有的结果都是#Value!了,这才是系统告知:sumif函数不支持数组参数。

话再说回来,"假设sumif函数支持数组"这个假设本身就不成立,其实这两个公式是双重错误(参数用法错误,数组公式输入错误),所以它的结果是没有意义的,这样的讨论意义也不大。

以上为个人看法,如果有什么说的不对的地方,鱼版主请见谅。

[此贴子已经被作者于2006-9-28 9:59:59编辑过]

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-9-28 10:48 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

谢谢楼上的,解释的很清楚。

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-25 01:05 , Processed in 0.057149 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表