ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[转帖] 浅谈excel函数引用、数组、内存数组

[复制链接]

TA的精华主题

TA的得分主题

发表于 2010-7-23 10:35 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
我们编写函数公式的时候往往会遇到一些问题,而造成了我们认为正确的公式可是就是不能返回正确的结果,或者干脆EXCEL就不让我们输入。这是什么原因呢?举个例子比如我们输入 =COUNTIF({1,2,3},">2")按回车, 呃?报错! 为什么呢? 我们输入 =SUM(INDEX(ROW(1:10),ROW(1:3))) 按CTRL+SHIFT+ENTER 结果为1,应该为3啊! 这又是为什么呢? 等等这些让我们认为是莫名奇妙的问题,它们到底是什么问题呢?

第一个问题是因为COUNTIF函数的第一个参数只能支持区域的引用,而不可以为数组,像这样的函数还有SUMIF(第一和第三个参数) SUBTOTAL(第二个参数)D大头的数据库函数(第一第二个参数) RANK(第二个参数)COUNTBLANK 等等。

第二个问题就是SUM()里面的INDEX(ROW(1:10),ROW(1:3)) 返回的不是一个内存数组。而这些就是我今天要和大家讲的关于区域引用,数组,内存数组这方面的问题。

数组我就不用讲了吧,想想那串糖葫芦就好了^_^。那么什么是区域引用呢?这个其实非常好理解,区域引用就是你可以直接通过它在EXCEL中找到属于它的位置。

比如A1 ,A1:A10 ,B2:D15...这中直接的引用另外就是常用的OFFESET INDIRECT这两个函数了,=OFFSET(A1,1,2,5,) =INDIRECT("A"&ROW(1:5)) 等等,这些你都可以直接在EXCEL找到它的位置。另外这里的判断是整个一个参数,比如我们经常想用的一个公式吧 =COUNTIF(A1:A10&B1:B10,F1&F2) 这也是不可以的,为什么呢?大家可能会问了A1:A10和B1:B10这不都是引用么,EXCEL判断A1:A10&B1:B10作为一个整体的 它是这两个区域每两个数值连接在一起的一个数组

下面我们就要讲讲内存数组了。 那么什么是内存数组呢?简单一句话:内存数组可以进一步作为别的函数的参数的数组。比如:如果你在表中选取众向的3个单元格(A1:A3)输入=INDEX(ROW(1:10),ROW(1:3)) 可以显示1;2;3是数组没问题,但是把它作为SUM的参数时返回不了正确的结果。如果我们输入=SUM(SMALL(ROW(1:10),ROW(1:3)) 按CTRL+SHIFT+ENTER得到结果6 没问题。这就是因为INDEX(ROW(1:10),ROW(1:3))不是内存数组,而SUM(SMALL(ROW(1:10),ROW(1:3)) 是内存数组。

那么内存数组有什么作用呢?正因为内存数组可以进一步作为别的函数的参数,所以我们可以将其作为公式众的一个环节应用。生成的内存数组我们还可以直接用来作为图表的数据源(放到定义名中) 如何区别是否为内存数组呢? 也用其可以被别的函数作为参数的特点,直接让其作为其他函数的参数,返回结果真确就是内存数组了,比如比较常用的就是 =INDEX(要判断的内存数组,ROW(1:1)) 然后下拉看看是不是能正确返回。

至于要生成内存数组,就需要大家在不断的实践中慢慢积累经验了。多换角度去思考问题就可以了。比如返回一个区域每行和的内存数组的话,我们就别总见到求和就SUM,因为SUM基本不能生成内存数组的,而这种问题往往就用MMULT函数。另外就是什么MIN MAX 也避免用其返回内存数组,像INDEX我们也可以用lookup来代替它。

TA的精华主题

TA的得分主题

发表于 2010-7-23 10:49 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2010-7-23 22:45 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2010-7-24 09:39 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2010-7-25 18:33 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2010-7-25 19:03 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
哈哈,瞅瞅,有没有下文?

TA的精华主题

TA的得分主题

发表于 2010-7-25 19:30 | 显示全部楼层
看了,不大明白,多学再看

TA的精华主题

TA的得分主题

发表于 2010-7-28 10:22 | 显示全部楼层
我喜欢直接举具体的实例来说明问题。纯文字的长文章一般不愿看完,实际上讲得不错,就是没有具体的实例,可以丰满的。等待你的附件的发送。

[ 本帖最后由 lhx120824 于 2010-7-28 10:23 编辑 ]

TA的精华主题

TA的得分主题

发表于 2010-7-28 11:24 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2010-7-28 11:31 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-4-27 09:28 , Processed in 0.043163 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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