是否有一种简单的方法可以反转所选行的顺序?
(或者,如果更容易,那么所有行呢。)

具体来说,在这种情况下,没有可用于排序以使其按正确顺序排列的列。因此,给定一排任意顺序的行,是否可以颠倒该顺序?

作为示例...



...在反转这5行之后,“ Waitrose 756”应排在最前面,“ Moot”应排在最后。

评论

“没有可用于排序的列”为什么不只是添加一个具有升序值(1、2、3,...)的列,对该列进行降序排序,然后将其删除?

这是一个非常常见的请求,因为这么多的人开始创建电子表格时,为每个条目添加一行,然后在底部添加新行,然后在意识到100行之后,他们想要将其反转以在顶部添加行,因为这需要花费WAY每次要添加新数据时,都有太多时间找不到最底部的非空白行。不幸的是AFAIK无法做到这一点,如果您希望公式和格式在反转后保持不变。

#1 楼

要反转所选范围的顺序(与按特定列排序相反),可以使用以下脚本:

function reverseOrder()
{
  var range = SpreadsheetApp.getActiveRange();
  var values = range.getValues();
  range.setValues(values.reverse());
}


添加此onOpen脚本将创建一个菜单项Extra,包含名为Reverse的项:

function onOpen ()
{
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var menu = [{name: "Reverse", functionName: "reverseOrder"}];
  ss.addMenu("Extra", menu);
}


评论


谢谢。我花了一点时间弄清楚如何添加这些内容,以便菜单项出现(工具->脚本管理器...),但是一旦完成,它就可以工作了!

– Jonik
13年7月4日在13:48

@AdamL,我们如何不编写脚本就能做到这一点?

–起搏器
2014年8月21日在11:14

@AdamL:非常适合移动文本,但是不能移动单元格背景色等。如何扩展脚本来执行此操作?

– Gruber
16-2-23在11:43

@Pacerier:非常抱歉对较晚的回复,但是一种解决方案是使用一个助手列,其编号以升序排列,并按该列的降序对范围进行排序(然后您可以删除该助手值)。

– AdamL
16-2-25在23:19

@Gruber:第一个选择是脚本一次复制/粘贴一个单元格;第二种选择是获取范围所需的所有格式,也将它们反转并设置。我想说第一种选择对于小范围可能是可以的,但对于大范围却很糟糕。第二种选择是涵盖所有用例的最佳选择。

– AdamL
16-2-25在23:23

#2 楼

这是一个不使用脚本即可执行此操作的示例-请注意,此方法假定您的数据只是数据-如果您具有引用相同范围内其他单元格的公式,则可能会发生奇怪的事情:


插入新列(为方便起见,我们将其称为A列)。


在A1中,输入值[1]。 (您可以从A10开始,如果只想对范围进行排序,则可以从A50开始)


在A2中,输入公式[= A1 + 1]。 (请调整是否没有从步骤2中的A1开始)


将A2中的公式扩展到要反转的数据的底部。
现在所有内容都应该从1到要排序范围内的行数进行编号。


选择已设置范围内的所有行。


单击“数据”菜单,然后选择“按A,Z到A的范围对范围进行排序”。


您的数据现在应颠倒顺序。由于我们设置编号公式的方式,该编号将被重置,并且仍然从顶部的1开始...,但是其他列中的实际数据应该全部颠倒。

评论


这太容易了,以至于我不得不不顾自己的脑袋sm一下。很棒的答案。 +1。

–GroggyOtter
18-10-4在7:33



对于步骤2-4,您甚至不需要公式。只需在A1中输入1,在A2中输入2,选择两者并根据需要将其向下拖动即可。

–帕特里克(Patrick)
19年4月16日在19:38

难道不是最后一步吗?单击数据菜单,然后选择“按Z列排序范围,A-> A”。由于索引从A列中的1到N开始,如果我们想反转选定范围内其他数据的顺序(从B列到X),则该顺序应由A列中的索引定义,逆序,因此应使用降序。已对其进行测试,并且仅使用“ Z,A列”方法,如所述。

–SzilárdNémeth
20年6月2日在10:35

但这不会颠倒行的顺序,正如问题所问...我会使用第一种方法

–结城
20-10-28在8:30

它确实颠​​倒了顺序。您将它们全部标记为1到n,然后按降序排列。这有效地颠倒了顺序。

–先生
20-10-28在21:08

#3 楼

按照Mir的示例,您可以将SORT函数放入单元格D3中,以反转列C中的数据顺序:

=sort(C3:C,A3:A,False)


评论


A3:A的作用是什么?

– Paul Razvan Berg
20年5月1日在13:51

A3:A表示从A3到A的“底部”的范围,无论它走多远。

–先生
20-10-28在21:10