马黑黑 发表于 2021-7-3 23:43

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还用到二维数组和三维数组,最多也只是三维数组。有点蒙是不是?

红影 发表于 2021-7-4 08:30

又是一个很棒的技术帖,给黑黑点赞{:4_199:}

红影 发表于 2021-7-4 08:31

能不能举个具体的例子,说明这个索引函数得到结果后能派什么用途?

红影 发表于 2021-7-4 08:32

二维的索引数组又是怎样实现的?

马黑黑 发表于 2021-7-4 08:48

红影 发表于 2021-7-4 08:31
能不能举个具体的例子,说明这个索引函数得到结果后能派什么用途?

这个实际上多数人都已用上,只是没感觉而已。在Excel里,对一个区域的读取操作,从Excel内部的实现机制上讲,就是用上了数组,具体地说,用数组并依据数组的小标(又称索引)赋值、取值、修改值。

倘若使用者能掌控数组,则Excel的操作是进阶性的,比Excel熟手更高一个级别。

马黑黑 发表于 2021-7-4 09:01

红影 发表于 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 10:31

马黑黑 发表于 2021-7-4 08:48
这个实际上多数人都已用上,只是没感觉而已。在Excel里,对一个区域的读取操作,从Excel内部的实现机制上 ...

嗯嗯,明白了,这个应该是赋值用的{:4_204:}

红影 发表于 2021-7-4 10:32

马黑黑 发表于 2021-7-4 09:01
在Excel里,二维它实际上表现不出来,毕竟,工作表是由行和列组成表格,是一维的表现形式。不过,为了能 ...

这个有点复杂,但大意明白了。谢谢黑黑{:4_204:}

风从东方来 发表于 2021-7-4 11:41

https://p0.ssl.qhmsg.com/t011b4b1620b8bf51b4.gif
只能帮顶了!

马黑黑 发表于 2021-7-4 11:59

谢顶
页: [1]
查看完整版本: Excel数组:槛外篇