问题出现
最近在统计大量模型生成的OD数据,但是模型生成的只有O→D方向,没有D→O方向,所以有些计算需要倒置。
例如一行数据: 1 2 3 4 5 想变成 5 4 3 2 1。
虽然Excel里面用辅助列排序可以做到,但是不能自动生成。其他数据处理语言也不怎么会,那就只能用在Excel里公式来解决了。
去网上搜搜,发现类似问题大概可以用indirect、index和offset等函数进行。
看了一下,index似乎还比较简单,就选这个了。
关于index函数的用法,详见微软网站
解决办法
1.假设现在有一列数据C11:C25,共15个数。

2.新建一列辅助列,填充1-15.

3.写函数

=INDEX($C$11:$C$25,COUNT($B$11:$B$25)-B11+1)
解释一下这个函数:
首先index的语法是=index(数组,行号,[列号])。
注意行号和列号是在数组中计数的,不是其绝对行号。
比如这个例子中,我们第一个就是想要得到原数组中第15行的数据,所以行号的计算结果应该是15,而不是25。
COUNT($B$11:$B$25)-B11+1得到的结果就是15。
注意$符号在计算中的运用,因为在下拉复制函数的时候如果没有这些就会出问题。
count函数的使用是为了修改方便,COUNT($B$11:$B$25)这一句可以直接换成15。
4.下拉复制就完成了

留言