ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助]定义公式期待高手的指点!(这个问题困扰我很久了!)

[复制链接]

TA的精华主题

TA的得分主题

发表于 2008-2-23 10:30 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
   定义公式,平时这个公式,写全部返回假,所以得出想要的结果。但到了自定义公式里,却全部返回空。虽然可以通过改变公式的方法也让自定义公式能用,但为什么用F9键得到是真,却返回假呢?
期待高手的指点!(这个问题困扰我很久了!) 9nBm8qhr.rar (16.95 KB, 下载次数: 172)

TA的精华主题

TA的得分主题

发表于 2008-2-23 17:44 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

回复:(yaozhaoze)定义名称为何错误

要弄清这个问题,必须了解几个知识:

1、隐含交叉

在汇总工作表输入公式:

F3=SHL月汇总!A:A

G3=SHL月汇总!A3

可以看到,两个单元格公式不同,而结果相同。其中F3单元格公式相当于:

=SHL月汇总!A:A SHL月汇总!3:3

注意,中间是一个空格。

这个公式称为交叉引用,A列与第3行交叉,结果是SHL月汇总!A3。类似F3单元格公式,引用了一列多个单元格,在这种情况下,系统默认它是一个交叉引用,行号取当前单元格的行号(3),把F3公式往下复制,可以发现,会出现不相同的结果,这是列相同而行不相同的原因。这种交叉称为“隐含交叉”。

再作个练习,以加深对“隐含交叉”的理解。在H3单元格输入公式:

=SHL月汇总!1:1

这是引用SHL月汇总工作表第1行,这种情况下,系统自动以当前列号取交叉值,结果与下面公式相同:

H3=SHL月汇总!H1

H3=SHL月汇总!H:H SHL月汇总!1:1

H3=SHL月汇总!1:1 SHL月汇总!H:H

在普通公式中,对整行或整列的引用,系统都默认以当前行列号取交叉值,这就是隐含交叉。

理解了这一点,原公式可以改为:

C3=IF(ISERR(INDIRECT(汇总!C$2&"月汇总!A1")),"",SUMIF(INDIRECT(汇总!C$2&"月汇总!A:A"),汇总!$A3,INDIRECT(汇总!C$2&"月汇总!D:D")))

2、在自定义名称中,数组公式优先

在工作表的普通公式中引用整行或整列,会以隐含交叉返回引用。但在自定义名称中,引用多个单元格时,只要函数支持,都会默认为数组参数,返回数组结果。

如“ISERR(INDIRECT(汇总!C$2&"月汇总!A:A"))”,前面讨论过,在普通公式中,它相当于“ISERR(INDIRECT(汇总!C$2&"月汇总!A3"))”,但在自定义名称中,它表示的结果是一个数组。

3、数组公式的限制

Excel2003及以下版本中,数组公式不允许引用整列,正因为如此,在“ISERR(INDIRECT(汇总!C$2&"月汇总!A:A"))”中,公式“INDIRECT(汇总!C$2&"月汇总!A:A")”返回错误。

这个限制在Excel2007中被取消。

因此,定义名称HZ时要注意,ISERR()与SUMIF()的第2个参数不要引用整列。

光标定位B3单元格,插入—名称—定义:

HZ=IF(ISERR(INDIRECT(汇总!B$2&"月汇总!A1")),"",SUMIF(INDIRECT(汇总!B$2&"月汇总!A:A"),汇总!$A3,INDIRECT(汇总!B$2&"月汇总!D:D")))

ISERR()的目的,仅判断工作表是否存在,所以参数中可以使用固定单元格A1

返回数组结果

题外话,如果需要根据A3:A11的值返回一个数组,得到汇总结果,它的公式是:

=IF(ISERR(INDIRECT(汇总!$C$2&"月汇总!A3:A11")),"",SUMIF(INDIRECT(汇总!$C$2&"月汇总!A:A"),汇总!$A$3:$A$11,INDIRECT(汇总!$C$2&"月汇总!D:D")))

为什么公式中可以引用整列?

前面郑重其事说过,数组公式中不能引用整列,而上面公式中还是存在对整列的引用,如何说?

这里有区别。与数组行数相关的参数,不能引用整列,如上面彩色部分,它决定了结果中数组的行数,它不能引用整列,SUMIF()的第1、3个参数,与结果的行数无关,所以它不受“整列”的限制。

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2008-2-24 13:07 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
山菊花老师指点,我明白
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-22 23:48 , Processed in 0.032184 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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