Excel数组:槛外篇
使用Excel者,或多或少都会接触到Excel数组,只是浑然不知而已。知与不知,或许都不影响基本的使用,本着这样的认识,本帖名曰槛外篇,顾名思义,入门之前的简单介绍。数组,不一定只和数字相关,但的确离不开数字。数组指的是有序的元素序列,有序就能够用数字来描述。举个栗子:
{"张三","李四","王五","Lucy","Jim"}
以上便是Excel的一个数组,由五个人名组成。这个数组有序在哪里?我们用索引函数 index 来查找一下数组中的第二个元素是谁:
=INDEX({"张三","李四","王五","Lucy","Jim"},2)
结果指向李四。在Excel里,数组下标从1数起(绝大多数编程语言从0数起),李四这个元素的下标是2。下标就是数组元素的有序界定表现之一,我们可以从数组的下标精准获取数组的某一个元素的内容。
Excel对数组的有序体现还在于它的组成结构,正如上文的红色栗子那样,每一个元素之间用小角逗号隔开,还可以用分号隔开:
{"张三";"李四";"王五";"Lucy";"Jim"}
我们用索引函数读取第二个元素内容,效果一样:
=INDEX({"张三";"李四";"王五";"Lucy";"Jim"},2) →李四
那么,逗号隔开的和分号隔开的有什么区别呢?
逗号隔开各元素的数组,对应于Excel的行,{"张三","李四","王五","Lucy","Jim"} 在Excel工作表中将显示为:
张三李四王五LucyJim
分号隔开各元素的数组,对应于Excel的列,在Excel工作表中将显示为:
张三
李四
王五
Lucy
Jim
而要将数组记录进Excel工作表,需先选中连续的与数组元素数量相同的单元格,然后输入公式,输好后按 Ctrl+Shift+回车:
={"张三","李四","王五","Lucy","Jim"} → 得到行数组
={"张三";"李四";"王五";"Lucy";"Jim"} → 得到列数组
然后这个行和列,它们就是数组,可以按数组的操作方式进行读写。
以上说的都是一维数组,Excel还用到二维数组和三维数组,最多也只是三维数组。有点蒙是不是?
又是一个很棒的技术帖,给黑黑点赞{:4_199:} 能不能举个具体的例子,说明这个索引函数得到结果后能派什么用途? 二维的索引数组又是怎样实现的? 红影 发表于 2021-7-4 08:31
能不能举个具体的例子,说明这个索引函数得到结果后能派什么用途?
这个实际上多数人都已用上,只是没感觉而已。在Excel里,对一个区域的读取操作,从Excel内部的实现机制上讲,就是用上了数组,具体地说,用数组并依据数组的小标(又称索引)赋值、取值、修改值。
倘若使用者能掌控数组,则Excel的操作是进阶性的,比Excel熟手更高一个级别。 红影 发表于 2021-7-4 08:32
二维的索引数组又是怎样实现的?
在Excel里,二维它实际上表现不出来,毕竟,工作表是由行和列组成表格,是一维的表现形式。不过,为了能够进行二维数组的操作,Excel采用多行多列表示二维,一维则是单行或单列,分别称为行数组和列数组,至于三维数组,在Excel中如果真的要使用,必须借助VBA才能实现。
关于二维的索引(下标),在编程世界里这么读取:
假设有一个二维数组名叫MyARR:{1,2,3; "A",“B”,“C”; True,False,False; 100,20,1;…………}
比如,我们要取ABC中的第一个元素:MyARR 。这里,下标 表示父数组的第二个数组元素 (数组例子中的 "A",“B”,“C”),表示子数组的第一个元素(子数组中的元素 A)。当然,Excel的下标是从 1 算起,若在 Excel 里使用,则为 MyARR ,但Excel不是这么用的,它要将数组放入单元格区域中再引用。 马黑黑 发表于 2021-7-4 08:48
这个实际上多数人都已用上,只是没感觉而已。在Excel里,对一个区域的读取操作,从Excel内部的实现机制上 ...
嗯嗯,明白了,这个应该是赋值用的{:4_204:} 马黑黑 发表于 2021-7-4 09:01
在Excel里,二维它实际上表现不出来,毕竟,工作表是由行和列组成表格,是一维的表现形式。不过,为了能 ...
这个有点复杂,但大意明白了。谢谢黑黑{:4_204:} https://p0.ssl.qhmsg.com/t011b4b1620b8bf51b4.gif
只能帮顶了!
谢顶
页:
[1]