想到这个问题,是因为工作中有张 Excel 表本来是时间从大到小排列的,现在要和其它表数据合并,需要把时间从小到大排列。这件事也具有一定的普遍性,就是把原先的数据逆序放置,我把我的方法总结一下。
本来指望 Excel 有个类似“Paste in Reverse Order”的命令,但是没有找到,只有转置粘贴(Transpose),不能实现我的要求。我还是选择用公式来解决这个问题。
请看示例数据:
A2:C9 是原始数据,D2:F9 是期望的结果。
我先讲一下在 D 栏中如何逆序放置 A 栏的数据,再讲整个 A2:C9 如何逆序放置在 D2:F9 中。
在 D2 输入公式 =OFFSET($A$2,ROWS(A2:$A$9)-1,0), 然后双击填充柄,自动应用到 D3:D9 的区域,可以看到 D3 中的公式是 =OFFSET($A$2,ROWS(A3:$A$9)-1,0); D9 中的公式是 =OFFSET($A$2,ROWS(A9:$A$9)-1,0)。
D 栏里要逆序放置 A 栏的数据,A9 放在 D2,A8放在 D3,如此类推,A2 放在 D9。我设计的公式,以 A2 为参考点,为了保证公式自动填充时这个基准点不会变化,用的是绝对引用 $A$2。 ROWS(A2:$A$9)-1 计算出要取值的单元格和参照点之间的距离(行数)。最后,用 Offset 函数返回要取值的单元格。
对于整个 A2:C9 区域的逆序放置,我们不必把上面的公式在 E 栏和 F 栏分别输入一遍。Offset 函数本身就可以返回一个区域的。选择 D2:F2,在公示栏里输入 =OFFSET($A$2:$C$2,ROWS(A2:$A$9)-1,0), 按 Ctrl+Shift+Enter 输入,D2:F2 就全部填充了,然后双击填充柄,自动应用到D2:F9 整个区域。