问题出现

最近在统计大量模型生成的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.下拉复制就完成了

结果

最后修改日期: 2014 年 4 月 29 日

作者

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。