2013-02-21 43 views
8

Làm thế nào tôi có thể sắp xếp một bảng trong bảng 1 nhưLàm thế nào để sắp xếp bảng sử dụng chức năng/phương trình chỉ

A B C D E 
3 7 3 6 5 

vào bảng khác trong bảng 2

A C E D B 
3 3 5 6 7 

bằng cách chỉ sử dụng chức năng?

+0

bạn cũng cần các ký tự cột từ sắp xếp hay chỉ để làm rõ? –

+0

@PeterAlbert Tôi giả sử các chữ cái - nếu không tôi có thể gửi câu trả lời từ lâu)) –

+0

@PeterAlbert tôi cũng cần những chữ cái đó – Season

Trả lời

10

Một cách thực sự dễ dàng để làm điều đó sẽ chỉ có một chỉ số xếp hạng và sau đó sử dụng HLOOKUP để tìm các giá trị tương ứng:

=RANK(A4,$A$4:$E$4,1) 

Example 1

=IF(COUNTIF($A$1:A$1,A1)>1,RANK(A4,$A$4:$E$4,1)+COUNTIF($A$1:A$1,A1)-1,RANK(A4,$A$4:$E$4,1)) 

Example 2

=HLOOKUP(COLUMN(),$A$2:$E$4,2,FALSE) 

Example 3

=HLOOKUP(COLUMN(),$A$2:$E$4,3,FALSE) 

Example 4

+0

Tôi muốn lưu ý rằng nếu bạn cung cấp công thức trong văn bản. Ngoài ra, sự khác biệt giữa các màn hình 3 và 4 là gì? –

+2

@PeterL. Cho một người đàn ông một con cá và bạn cho nó ăn một ngày. Dạy một người đàn ông để câu cá, và bạn nuôi sống anh ta suốt đời - hoặc ít nhất là cho đến khi một số tập đoàn đánh cá lớn mở rộng vào làng của anh ấy. – Stepan1010

+0

@ Stepan1010: Giải pháp tuyệt vời với số đếm bổ sung và các tham chiếu tương đối/tuyệt đối linh hoạt! chỉ cải tiến nhỏ: trong công thức thứ hai, thay thế 'RANK (A4, $ A $ 4: $ E $ 4,1)' bằng 'A1', như bạn đã tính toán ở trên. –

0

Có thể thực hiện được! :-)

Đây là sample file.

Giải thích

tôi cho rằng dữ liệu của bạn trong dòng 1 của Sheet1 và rằng bạn muốn dữ liệu được sắp xếp bắt đầu từ cột 1 của bảng khác - nếu không muốn nói, điều chỉnh cho phù hợp.

Nơi công thức này trong cột 1 của bảng mục tiêu, nói trong dòng 2:

 
=ROUND(SMALL(Sheet1!$A$1:$E$1+COLUMN(Sheet1!$A$1:$E$1)/100000000,COLUMN()),6) 

Bạn cần phải nhập công thức như một công thức mảng, ví dụ: nhấn Ctrl-Shift-Enter.

Trong trường hợp bạn đặt nó vào cột khác so với cột thứ nhất, bạn cần thay thế COLUMN() bằng COLUMN()-COLUMN($A$2)+1 trong đó $A$2 phải là tham chiếu đến chính ô đó.

Công thức này sẽ trả lại cho bạn số thấp nhất trong phạm vi của bạn - nếu bạn sao chép nó trong 4 cột tiếp theo, bạn sẽ nhận được danh sách thứ tự các số.

Để dịch này trở lại với số cột, chúng ta cần phải thực hiện 2 bước sau:

  1. Hình ra số cột:
    Điều này có thể được thực hiện với với công thức này:
     
    =MATCH(SMALL(Sheet1!$A$1:$E$1+COLUMN(Sheet1!$A$1:$E$1)/100000000,COLUMN()),Sheet1!$A$1:$E$1+COLUMN(Sheet1!$A$1:$E$1)/100000000,0) 
    
    - một lần nữa, để được nhập dưới dạng công thức mảng. Nếu dữ liệu nguồn không bắt đầu trong cột A, bạn cần phải thêm +COLUMN(Sheet1!$A$1)-1 trong đó cần phải thay thế $ A $ 1 bằng ô ngoài cùng bên trái của dữ liệu nguồn.
  2. Chuyển đổi số cột để thư:
    Giả sử số cột của bạn từ bước 1 là trong tế bào A6, công thức này sẽ thực hiện công việc:
 
=LEFT(ADDRESS(1,A6,2),SEARCH("$",ADDRESS(1,A6,2))-1) 

Tất nhiên, bạn cũng có thể kết hợp bước 1 & 2, điều này sẽ dẫn đến megaformula này:

 
=LEFT(
    ADDRESS(
     1, 
     MATCH(
      SMALL(Sheet1!$A$1:$E$1+COLUMN(Sheet1!$A$1:$E$1)/100000000,COLUMN()), 
      Sheet1!$A$1:$E$1+COLUMN(Sheet1!$A$1:$E$1)/100000000, 
      0), 
     2), 
    SEARCH(
     "$", 
     ADDRESS(
      1, 
      MATCH(
       SMALL(Sheet1!$A$1:$E$1+COLUMN(Sheet1!$A$1:$E$1)/100000000,COLUMN()), 
       Sheet1!$A$1:$E$1+COLUMN(Sheet1!$A$1:$E$1)/100000000,0), 
      2) 
    )-1 
) 
Một lần nữa, để được nhập dưới dạng công thức mảng.

+0

Peter, tôi đã xem mẫu của bạn, nhưng tôi cho rằng ý tưởng của yêu cầu là BẤT CỨ văn bản có thể thay cho ABCDE. Giải pháp của bạn sẽ xử lý nó? –

+0

@PeterL.: sự hiểu biết của tôi về câu hỏi là nó sắp xếp các con số, lá thư chỉ là các chữ cái cột. do đó, nó sắp xếp các số và hiển thị trong đó cột dữ liệu gốc được đặt. –

+0

tốt, giả sử đầu vào (OP địa chỉ nó như bảng) - Tôi không nghĩ như vậy. Nếu không, loại động 1D num mảng được thực hiện với công thức mảng "tầm thường" tôi có thể đăng trong nháy mắt) –

12

Được rồi, đây là "một công thức sẽ làm tất cả" giải pháp mà không cột tạm thời bổ sung:

enter image description here

Formula trong A6:

 
=INDEX($A$2:$E$2,MATCH(SMALL($A$3:$E$3+COLUMN($A$3:$E$3)/100000000,COLUMN()),$A$3:$E$3+COLUMN($A$3:$E$3)/100000000,0)) 

Nhập nó như một công thức mảng, tức là nhấn Ctrl - Shift - Nhập. Sau đó sao chép nó vào các cột liền kề.

Để có được cũng là số, sử dụng công thức này trong A7 (một lần nữa như công thức mảng):

 
=ROUND(SMALL($A$3:$E$3+COLUMN($A$3:$E$3)/100000000,COLUMN()),6) 

Cả hai công thức là một chút cồng kềnh khi họ cũng đã để xử lý các bản sao tiềm năng. Giải pháp là chỉ cần thêm một phần rất nhỏ của cột trước khi áp dụng sắp xếp (chức năng SMALL) - và sau đó để loại bỏ nó một lần nữa ...

+0

Thăng cấp công bằng của tôi và vẫn chỉ có 2 điểm để lấy 3k! có giá trị +100. đơn giản rực rỡ! –

+0

@PeterL .: thanks. nó thực sự là công thức giống như giải pháp trước đây - chỉ có "nhận được cột thư" làm cho nó phức tạp hơn ... –

+0

Thủ thuật này với/10000000 chỉ là một kiệt tác) Tôi điên về các giải pháp thanh lịch như vậy! Địa ngục tôi vẫn còn xấu xí nhưng ..))))) –

2

Tôi nghĩ rằng một giải pháp dễ dàng hơn là sử dụng chức năng "Lớn": excel screenshot

Chức năng Cột chỉ là cách dễ dàng để đếm từ 5 xuống 1, nhưng cột trợ giúp có thể dễ dàng hơn.

Bạn cũng có thể có câu trả lời tương tự bằng cách sử dụng chức năng "Nhỏ".

1

Mặc dù tôi đã sử dụng "thêm một kỹ thuật số nhỏ", tôi nghĩ rằng đây là thanh lịch nhất cho một hàng helper/cột:

=RANK(B4,$B$4:$F$4,0) + COUNTIF($B$4:$F$4,B4)-1 

(sao chép trên cột hàng) RANK giúp bạn gần gũi và phần COUNTIF xử lý các bản sao bằng cách đếm số lượng các ô trùng lặp của ô đó đến điểm đó. Vì luôn có sự kết hợp (chính nó) bạn trừ 1 cho hạng cuối cùng. Điều này "sắp xếp" quan hệ theo thứ tự mà chúng xuất hiện. Lưu ý rằng ô trống sẽ tạo # N/A và dữ liệu ký tự là #Values.

Các vấn đề liên quan