Làm thế nào để đảo ngược thứ tự của các hàng đã chọn?


33

Có cách nào dễ dàng để đảo ngược thứ tự của các hàng đã chọn không? (Hoặc làm thế nào về tất cả các hàng , nếu điều đó dễ dàng hơn.)

Cụ thể, trong trường hợp này, không có cột nào có thể được sử dụng để sắp xếp để có được chúng theo đúng thứ tự. Vì vậy, được đưa ra một loạt các hàng theo thứ tự tùy ý, có thể đảo ngược thứ tự đó không?

Ví dụ ...

nhập mô tả hình ảnh ở đây

... Sau khi đảo ngược 5 hàng này, "Waitrose 756" sẽ xuất hiện trước và "Moot" cuối cùng.


"không có cột nào có thể được sử dụng để sắp xếp" Tại sao không thêm một cột có giá trị tăng dần (1, 2, 3, ...), sắp xếp giảm dần trên cột đó, sau đó xóa nó?
Patrick

Đây là một yêu cầu rất phổ biến, vì rất nhiều người bắt đầu một bảng tính với một hàng cho mỗi mục, thêm các hàng mới ở dưới cùng và sau 100 hàng nhận ra họ muốn đảo ngược nó để thêm các hàng ở trên cùng, vì phải mất CÁCH quá nhiều thời gian để tìm hàng không trống nhiều nhất mỗi lần bạn muốn thêm một phần dữ liệu mới. Thật không may, AFAIK không có cách nào để làm điều đó, không phải nếu bạn muốn các công thức và định dạng của mình giữ nguyên sau khi đảo ngược.
Phil Goetz

Câu trả lời:


24

Để đảo ngược thứ tự của phạm vi đã chọn (trái ngược với sắp xếp theo một cột cụ thể), bạn có thể sử dụng tập lệnh sau:

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

Thêm tập lệnh onOpen này sẽ tạo ra một mục menu có tên Extra , chứa một mục có tên Reverse :

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

3
Cảm ơn. Tôi đã mất một chút thời gian để tìm ra cách thêm những thứ này để mục menu xuất hiện (Công cụ -> Trình quản lý tập lệnh ...), nhưng khi tôi đã hoàn thành, nó sẽ hoạt động!
Jonik

@AdamL, Làm thế nào chúng ta có thể làm điều này mà không cần kịch bản?
Pacerier

1
@AdamL: Tuyệt vời cho việc di chuyển văn bản, nhưng nó không thể di chuyển màu nền của ô, v.v ... Làm thế nào tập lệnh có thể được mở rộng để thực hiện điều này?
Gruber

1
@Pacerier: xin lỗi vì trả lời cực kỳ muộn, nhưng một giải pháp sẽ là với một cột trợ giúp với các số theo thứ tự tăng dần và sắp xếp phạm vi theo cột đó giảm dần (và sau đó bạn có thể xóa các giá trị của trình trợ giúp).
AdamL

@Gruber: tùy chọn đầu tiên sẽ là cho tập lệnh sao chép / dán một ô mỗi lần; tùy chọn thứ hai sẽ là lấy tất cả các định dạng cần thiết cho phạm vi, đảo ngược chúng và đặt chúng. Tôi muốn nói rằng tùy chọn đầu tiên có thể ổn với phạm vi nhỏ, nhưng khủng khiếp cho phạm vi lớn; tùy chọn thứ hai sẽ là đặt cược tốt nhất để bao gồm tất cả các trường hợp sử dụng.
AdamL

21

Đây là một ví dụ về cách thực hiện việc này mà không cần sử dụng tập lệnh - xin lưu ý rằng phương pháp này giả sử dữ liệu của bạn chỉ là dữ liệu - nó có thể làm những điều kỳ lạ nếu bạn có công thức tham chiếu các ô khác trong cùng phạm vi:

  1. Chèn một cột mới (ví dụ: chúng ta sẽ gọi nó là cột A).
  2. Trong A1, đặt giá trị [1]. (Bạn có thể bắt đầu ở A10 hoặc A50 nếu bạn chỉ muốn sắp xếp một phạm vi)
  3. Trong A2, đặt công thức [= A1 + 1]. (Điều chỉnh nếu bạn không bắt đầu ở A1 trong bước 2)
  4. Mở rộng công thức trong A2 xuống dưới cùng của dữ liệu bạn muốn đảo ngược.

    Bây giờ mọi thứ sẽ được đánh số từ 1 đến số hàng trong phạm vi bạn sắp xếp.

  5. Chọn tất cả các hàng trong phạm vi bạn đã thiết lập.
  6. Nhấp vào menu Dữ liệu và chọn "Sắp xếp phạm vi theo cột A, Z -> A".

Dữ liệu của bạn bây giờ sẽ được đảo ngược thứ tự. Do cách chúng tôi thiết lập công thức đánh số, số sẽ được đặt lại và vẫn bắt đầu từ 1 ở trên cùng ... nhưng tất cả dữ liệu thực tế trong các cột khác sẽ bị đảo ngược.


2
Điều này quá dễ đến nỗi tôi phải đánh vào trán mình vì không nghĩ đến nó. Câu trả lời tuyệt vời. +1.
GroggyOtter

2
Đối với các bước 2-4, bạn thậm chí không cần một công thức. Chỉ cần nhập 1 trong A1, 2 trong A2, chọn cả hai và kéo xuống dưới mức cần thiết.
Patrick

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.