本文主要针对这样的一个场景:在一个表中已有一组数据A,在另一个表中可以通过坐标定位取出这一组数据的任意一个位置的数据进行其他运算。
这个场景涉及到了两个问题:1. 如何得到数组A中任意一个位置的数据。2. 如何在一个表中使用另一个表中的数据。
具体场景如下:把sheet2中的源数据倒序后放到sheet1中。
最终呈现的效果如下:
主要实现的思路是:
1. 确定源数据的数组。在这里是($B$2:$E$2)。
2. 实现数组中任意一个数的索引。比如数组中30是在($B$2:$E$2)这个数组的第1行,第4列。所以,利用Index函数,写为Index($B$2:$E$2, 1, 4),即可实现在($B$2:$E$2)这个数组中返回第1行,第4列的数,即30。
说到这里其实已经实现一大半了,现在还有两个问题没有解决:
1. 如何在sheet1中引用sheet2中的数组。利用"Sheet2!"加数组即可。不加Sheet2默认是当前sheet。
2. 当数组数量庞大时,通过写具体的行列号来实现会很费时费力,因此可以通过某种运算来完成自动索引。即建立最终数据的坐标索引与数组索引的关系。通过分析可以得到,6-最终数据的列号即可得到源数据数组的对应列号。
最终的公式如下图所示。
其中,index函数的各个参数定义为(数组范围,行号,列号)。column()函数会返回当前单元格的列号,与此对应的是row(),即返回行号。