java二维数组遍历后转为一维数组_Excel 数组

本篇图文所用的软件是微软的Excel,但提及的内容在 WPS 表格也适用,若有不同的会单独指出。

另外,图文由以下部分组成
  1. 数组概念
  2. 数组创建
  3. 数组运算
数组概念

数组就是单元的集合或是一组处理的值集合;也可以写成以数组为参数的公式(数组公式),通过这个单一的公式,执行多个输入的操作并产生多个结果,而每个结果显示在一个单元中。

简单点,说话的方式简单点……数组就是一组数据,它可以应用在公式,也就是数组公式。数组公式运算结果可以是单个或多个,若多个结果可以集中在一个单元格,也可以在对应的单元格里显示 👇

663517fd175c00cc84f649671e6e8648.gif

数组创建 数组的创建分为三种:
  1. 引用单元格区域;

  2. 手工创建;

  3. 运算创建。

引用单元格区域

先引用一个单元格区域,后按F9键;而这种方式又分为三种,分别是一维纵向、一维横向和二维引用。

一维纵向,是只引用一列纵向的单元格区域。如在 C1 单元格引用 A1:A5 单元格区域,然后按 F9 👇

30e6fe8be391eb2db403b1baa55a65c5.gif

一维横向,是只引用一行横向的单元格区域。如在 A3 单元格引用 A1:E1 单元格区域,然后按 F9 👇

851e14add6e5050e989c6a58d7b6434c.gif

二维引用,是引用多行、多列、一行多列或一列多行的单元格区域。如在 D1 单元格引用 A1:C3 单元格区域,然后按 F9 👇

71a8f6df8335e3285e1fc30ad61f1125.gif

在上述例子,可以看到数组表现形式是用大括号(又称花括号)括起内容。在数组中内容与内容之间用逗号或分号隔开;其中逗号表示分隔,而分号表示换行 👇

1d003bcefabfee74755be41d1c010a96.png

在上述的例子,无论是一维,还是二维引用,承载数组的单元格只会显示数组第一个内容。在引用承载数组的单元格进行运算,只有显示出来的内容参与运算 👇

b42b24ee6e4b3ed7f0d47585f27b1042.gif 注:可使用 F9 键检查,F9 有一个作用是返回运算结果,去除公式。

注意,当引用的单元格区域变成数组后,无论是拖动填充,还是更改被引用的单元格区域里的内容,数组的内容都不会随之改变 👇

f25da5b2da086afc1173d1fab462a1f6.gif

另外,在 WPS 表格中,引用单元格区域方式创建数组,直接返回一个文本类型对象的结果,所以会把所有内容显示出来 👇

9cf9d7fef8eec791b6776a9a2b502f79.gif

手工创建

把输入内容的用大括号括起来,如在 A1 单元格输入={1,TRUE,"a",#VALUE!," "} 👇

fbb3b1dceb5342a34a9565b104b98bfa.gif

👆 在上述例子,可以知道数组里能放的内容有数值、逻辑值、文本和错误值。

运算创建

在输入公式后,按 Ctrl+Shift+Enter 组合键运算。如在 E1 单元格引用 A1:C1 区域乘10,按 Ctrl+Shift+Enter 组合键运算 👇

de134c4e9cd01d24bf0e2e3c8b699ad0.gif

上文提到,数组的公式运算的结果可以是单个或多个,若多个结果可以集中在一个单元格,也可以在对应的单元格里显示。那刚刚的是多个结果集中在一个单元格,接下来要说的是把多个结果在对应的单元格里显示的方法。

还是以刚刚的例子为例,选择 E1:G1 区域,按 F2 键进入编辑栏,按 Ctrl+Shift+Enter 组合键 👇

18ff939d56cc6eba3cf4c910054c1cc7.gif

也可以在运算求值之前,把对应的单元格区域选好 👇

8ee86b2a2948a5db3c44bfb41fd7bd49.gif

把多个结果在对应的单元格里显示的对应单元格选择是有标准,要根据引用单元格区域的格式来选择。以刚刚的例子为例来说明,被引用的单元格区域是3列1行,所以放结果的对应单元格区域选择也要3列1行。否则,只会是填充 👇

fb46e5842f28b71baedb476bc750f08c.gif

注意,当多个结果放在对应的单元格里显示,结果是不能单一更改 👇

0731da7afc44ddeb7c784e931a2df50c.gif

此外,上文提到在引用承载数组的单元格进行运算,只有显示出来的内容参与运算。在以运算创建的数组,只要是多个结果集中在一个单元格都是只有显示出来的内容参与运算。也就是无论是那种方式创建的数组,只要是多个内容/结果集中在一个单元格都是只有显示出来的内容参与运算。

另外,以这种方式创建的数组属于内存数组。

数组运算

在数组创建部分已经提到一些数组运算内容,而接下来要说的数组运算就是数组公式,也就是运算创建数组(Ctrl+Shift+Enter)。

数组公式一般在运算过程或运算结果涉及数组的时候使用。实际需要使用的情况,如运算所需引用的数据不在同一行/列;运算过程,需要增加辅助列才能完成;运算多个结果……

例子-1,假设一个成绩表,60分为合格,求各科合格人数。在 B10 单元格输入=SUM(--(B2:B9>59)),按 Ctrl+Shift+Enter 组合键;然后向右拖动填充即可 👇

9ec58dbc66f38081f16778a2b53f0fc5.png

注:例子中的数值都可以用函数RANDBETWEEN随机填充。

👆 上述这个例子是数组公式中的一维数据与单值运算,所引用的数据中每个数值都会与单值进行运算。其中引用的数据属于单元格引用(相对引用),所以向右填充即可。

刚刚提到的是一列的一维数据与单值运算,而一行的一维数据与单值运算也是一样。以刚刚成绩表为例,可以自己尝试求个人合格科目数。

例子-2,假设一个业绩表,求所有业绩大于50000以上的个数。在 B8 单元格输入=SUM(--(B2:E6>50000)),按组合键 👇

ddd545910cecd64abbeb649f4acd324d.png

👆 上述这个例子是数组公式中的二维数据与单值运算,所引用的数据中每个数值都会与单值进行运算。

例子-3,制作一个九九乘法表。在 B1:J9 和 A2:A10 区域分别填上1至9。从B2 单元格开始框选至 J11 单元格,然后输入=B1:J1&"×"&A2:A10&"="&B1:J1*A2:A10,按组合键 👇

3941c20254b5072afa5988efed2f2cf1.png

👆 上述这个例子是数组公式中的不同方向的一维数据之间的运算。先理解公式意思 👇

394dcc64c243a6d2e8e972a770f4fbbf.png

那 B1:J1*A2:A10 运算是 B1:J1 区域里的每个单元格数值都乘 A2 单元格数值,随后 B1:J1 区域里的每个单元格数值又都乘 A3 单元格数值,之后就是 A4、A5、A6 直到 A10。或者说 B1 单元格乘 A2:A10 区域里的每个单元格数值……

学过代码的应该对这个运算过程有种似曾相识的感觉——遍历,每个节点都访问一次,不同的遍历方式,访问顺序也不一样。

那把 A2:A10 写在前头,公式改为 =A2:A10&"×"&B1:J1&"="&A2:A10*B1:J1 👇

5ec35dcf3701f54c4171ddfee67661cb.png

看不懂,不明白,没关系,那就把九九乘法表看作有81个节点,把得到的运算结果看作访问。

另外,上文提及把多个结果在对应的单元格里显示的对应单元格选择是有标准,而这里的标准是两组一维数据最后的数值运算结果来选择;否则会显示不全或出现#N/A 👇

972656f9d893dcde5f994b68ab45f4c3.gif

说完不同方向的一维数据之间运算,接下来就说同方向的一维数据之间运算。

例子-4,假设一个记录了参选作品获得票数的表格。要计算出最高的票数,在 E2 单元格输入=MAX(B2:B9+C2:C9),按组合键 👇

00ede69f58de18b6714ebeed323e9338.png

👆 上述这个例子是同方向的一维数据之间的运算,所引用的两组数据中的第一位数值与第一位数值运算,第二位与第二位运算,第三位与第三位运算,依次类推。以这个例子来说,B2 与 C2 单元格相加,B3 与 C3 单元格相加……B9 与 C9 单元格相加。

把纵向换成横向也是一样。还是刚刚的例子,只是方向变成横向 👇

d2028e5ff7131834bb050c530cfb0947.png

另外,当两组数据长度不一,相互运算就会出现 #N/A 👇

949ad04aef4b11343888626e80215a32.png

例子-5,又假设一个业绩表,计算所有业绩补贴总和。在 D7 单元格输入=SUM(B3:D5*G3:I5),按组合键 👇

08e0c354989c233ee6e10d94515f2e3f.png

👆 上述这个例子是二维数据之间的运算,所引用的两组数据中的第一位数值与第一位数值运算,第二位与第二位运算,第三位与第三位运算,依次类推。以这个例子来说,B3 与 G3 单元格运算,C3 与 H3 单元格,D3 与 I3 单元格运算…… 👇

d87ee46c15b4531862a74236a17cb8ab.png

例子-6,又一次假设一个业绩表,计算所以业绩提成总和。在 C6 单元格输入=SUM(B2:D4*G2:G4) 👇

9d77b38c791504625c496b79d72cc21b.png

👆 上述这个例子是二维数据与一维数据的运算,其中引用的二维数据的第一行/列的所有数值都会与一维数据第一行/列的单一数值运算,第二行/列的所有数值都会与一维数据第二行/列的单一数值运算,依次类推。以这个例子来说,B2、C2、D2 都会与 G2 单元格运算,B3、C3、D3 都会与 G3 单元格运算…… 👇

008958245b7a2fb8eacd86a06bea0453.png

当然,也可以说成一维数据与二维数据的运算,以及把横向变成纵向 👇

f7fcb02b0e1482c9ce5ac3036bbca571.png

但,有一个要注意的点,就是二维数据与一维数据必须是对应的。以这个上面配图来说明,在二维数据中哞哞是第一列,那在一维数据中哞哞也必须是第一列;呵呵在二维数据中是第二列,那在一维数据中也必须是第二列;哼哼在二维数据中是第三列,那在一维数据中也必须是第三列。否则,结果会出错 👇

66188c569fbaf2542d9fe2f70efd373f.png

同时,这也是二维数据之间的运算要注意的。

最后,说一下逻辑值和文本放在数组中,能与数值进行比较运算,而且得到结果是 TRUE 👇

0a4308b5d1029a43c6121309eb2bbabd.png

👆 说真的,我也不知道怎么回事……

最后的最后,放张封面图 👇

8db9b586fe4a3dc957576d83c6fb9029.png

以往笔记
  • Excel 比较运算符
  • Excel 单元格引用
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值