ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[函数用法讨论系列18] ROWS($A$1:A1)与ROW(1:1)用法探讨!

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2006-2-22 15:31 | 显示全部楼层
以下是引用[I]qlz110[/I]在2006-2-22 9:40:25的发言:[BR]

row(1:1)={1},不是=1,{1}是一个单元素数组,1是数值。虽然你在一个单元格内输入={1},结果显示1,但如果它参与公式计算的话,效果是不一样的。2*row(1:1)={2},而2*1=2,你试比较=OFFSET(A1,1,,ROW(1:1)*2,ROW(1:1))与=OFFSET(A1,1,,2*1,1)有什么不同。

我比较了,两个公式如果是非数组公式,没有什么不同

TA的精华主题

TA的得分主题

发表于 2006-2-23 09:36 | 显示全部楼层

说说关于ROW(1:1)的看法,与楼主提的ROWS()无关

ROW(1:1)的最简单的用法如下:

A1:A10里存放了10个数字,要在B11:B20里把它从小到大排列出来,有以下几个写法(自定义名称DATA1=A1:A10):

1, SMALL(DATA1,ROW(A1)),下拉

2, SMALL(DATA1,ROW(1:1)),下拉

3, SMALL(DATA1,ROW(INDIRECT("A"&ROW()-19))),下拉

4, 多单元格数组公式:SMALL(DATA1,ROW(INDIRECT("1:10"))

5, 多单元格数组公式:SMALL(DATA1,ROW(DATA1))

哪个好用?

公式1和2,3的计算速度应该比4和5要慢,因为它有10个公式,要计算10次,而后两个公式只计算一次,就填入10个单元格;另外,更致命的是,一旦删除数据区的某一行,将造成显示结果错误。

公式4与5,删除数据区不会造成错误,速度块。

而公式4与5相比:公式4使用了易失函数,会引发大量的重算,速度也受到很大影响,而公式5则没有这个问题。

结论:多单元格数组公式:SMALL(DATA1,ROW(DATA1))是最好的。

TA的精华主题

TA的得分主题

发表于 2006-2-25 13:58 | 显示全部楼层
以下是引用[I]czzqb[/I]在2006-2-23 9:36:26的发言:[BR]

说说关于ROW(1:1)的看法,与楼主提的ROWS()无关

ROW(1:1)的最简单的用法如下:

A1:A10里存放了10个数字,要在B11:B20里把它从小到大排列出来,有以下几个写法(自定义名称DATA1=A1:A10。

提个很菜的问题:怎样“自定义名称DATA1=A1:A10”呢??菜鸟问问题请原谅!

TA的精华主题

TA的得分主题

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

to13楼:插入〉名称〉定义:输入data,引用区域输入=A1:A10

另:对12楼提出的运算速度感兴趣,以前接触多单元格数组公式较少,一直也不明所以。盼一个详尽的解释。 因为,我经常用单个数组公式下拉可以,但用多单元格按三键后就出错或者答案不一样了。 个人支持这个运算速度提法,运算1次,和每个单元格运算1次,肯定会快。 to 楼主: 关于row(A1)、row(1:1)、rows(A$1:A1)——我一直用row(A1)较多,那是因为刚学会后不懂速度问题,认为这个字数最少。而且,一开始还不知道当A1单元格删除的出错情况,呵呵。不过,看了此帖,这3种写法一样存在这个问题。 个人支持rows(A$1:A1)比row(1:1)快的观点,原因也是返回数、和返回数组的区别。
[此贴子已经被作者于2006-2-25 17:17:05编辑过]

TA的精华主题

TA的得分主题

发表于 2006-2-26 12:00 | 显示全部楼层

虽然12楼的第5个公式是比较好的,但也有问题:除了在该例子中可以运用之外,其他的地方恐怕要受到限制,因为ROW()得到的只是DATA1区域的行数,要想得到更多的行数,还是要用第4个公式。

to:gouweicao78:关于单个单元格数组公式和多单元格数组公式速度上的差别,apolloh版主曾在一个跟帖中说过,时间应该不长(大概是>2006-1-1)。但我也找不到原链接。

TA的精华主题

TA的得分主题

发表于 2006-2-26 15:04 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
以下是引用[I]四海飘零[/I]在2006-2-26 12:00:22的发言:[BR]

虽然12楼的第5个公式是比较好的,但也有问题:除了在该例子中可以运用之外,其他的地方恐怕要受到限制,因为ROW()得到的只是DATA1区域的行数,要想得到更多的行数,还是要用第4个公式……

这个……不知四海飘零兄指的是什么不妥,如果是DATA1区域要增加行数,需要改变为动态名称引用而觉得麻烦的话,我有一解,前几天学到的“列表”自动拓展功能的妙用,将A1:A10创建为列表区域,定义DATA1=A1:A10,则当A11输入数据后,DATA1区域自动变为A1:A11…… http://club.excelhome.net/dispbbs.asp?BoardID=3&ID=152396&replyID=&skin=0 如果不是这个考虑,还请指教。

TA的精华主题

TA的得分主题

发表于 2006-3-11 18:25 | 显示全部楼层

还有一个区别的地方:

要用多单元格数组公式时,=rows($1:1)和=row(1:1)都只能返回一系列的1,只有用=row()-公式上一行的行号

才能返回1、2、3……这个系列。(补充,还有已知行数x,用row(1:x)也可以。)

而多单元格数组公式又是可以减少运算次数的。

[此贴子已经被作者于2006-4-15 7:57:19编辑过]

TA的精华主题

TA的得分主题

发表于 2006-11-30 17:39 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2007-1-5 15:16 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2007-4-3 13:31 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-12-23 04:24 , Processed in 0.036732 second(s), 6 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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