Hàm TỰ ĐỘNG SẮP XẾP THỨ TỰ

Liên hệ QC

thanh258

Thành viên mới
Tham gia
14/7/13
Bài viết
49
Được thích
9
Nghề nghiệp
Nhân viên văn phòng
Mình muốn viết hàm tự động xếp thứ tự các dữ liệu được nhập vào
Bạn nào biết giúp mình với nhé

View attachment XEPTHUTU.xls
 
Mình muốn viết hàm tự động xếp thứ tự các dữ liệu được nhập vào
Bạn nào biết giúp mình với nhé

View attachment 106095
Sao bạn không sử dụng chức năng Sort của Excel, vừa nhẹ bảng tính lịa hiệu quả. Còn nếu bạn muốn dùng công thức thì bạn thử công thức sau
Mã:
=index($C$5:$C$25,match(LARGE(COUNTIF($C$5:$C$25,">"&$C$5:$C$25),ROW(1:1)),COUNTIF($C$5:$C$25,">"&$C$5:$C$25),0))
Kết thúc Ctrl + Shift + Enter
 
Sao bạn không sử dụng chức năng Sort của Excel, vừa nhẹ bảng tính lịa hiệu quả. Còn nếu bạn muốn dùng công thức thì bạn thử công thức sau
Mã:
=index($C$5:$C$25,match(LARGE(COUNTIF($C$5:$C$25,">"&$C$5:$C$25),ROW(1:1)),COUNTIF($C$5:$C$25,">"&$C$5:$C$25),0))
Kết thúc Ctrl + Shift + Enter
Công thức của bạn cũng ra kết quả nhưng có 1 vấn đề là phải luôn bấm Ctrl + Shift + Enter để kết thúc, do đó vẫn chưa hoàn toàn tự động.
Chức năng Sort thì ok rùi nhưng mình muốn nó tự động lọc, để mình chỉ copy ra kết quả thôi. không cần phải thao tác nữa (file gốc của mình ẩn công thức để tiện cho việc copy dữ liệu)
Nếu còn cách nào khác bạn giúp mình nghe!
 
Bạn có thể dùng công thức sau:
Mã:
=SMALL(SUBSTITUTE($C$5:$C$25,"-","")*1,ROW(1:1))
Ctrl+ Shift+Enter
kéo xuống
phần kết quả định dạng là: ######-######
 
Công thức của bạn cũng ra kết quả nhưng có 1 vấn đề là phải luôn bấm Ctrl + Shift + Enter để kết thúc, do đó vẫn chưa hoàn toàn tự động.
Chức năng Sort thì ok rùi nhưng mình muốn nó tự động lọc, để mình chỉ copy ra kết quả thôi. không cần phải thao tác nữa (file gốc của mình ẩn công thức để tiện cho việc copy dữ liệu)
Nếu còn cách nào khác bạn giúp mình nghe!
Không hiểu khái niệm "Tự động" của bạn là như thế nào?
Nếu đã là công thức thì chỉ cần nhập 1 cái đầu tiên => sau đó kéo xuống "mỏi tay" thì thôi, chứ tôi không hiểu phần màu tím kia là như thế nào.
 
Không hiểu khái niệm "Tự động" của bạn là như thế nào?
Nếu đã là công thức thì chỉ cần nhập 1 cái đầu tiên => sau đó kéo xuống "mỏi tay" thì thôi, chứ tôi không hiểu phần màu tím kia là như thế nào.
Uk nhỉ :D
Không hiểu sao mình lại nghĩ là mỗi lần lọc lại phải nhấn Ctrl + Shift + Enter @@.
Thanks bạn nhiều :). Hihi
 
2 công thức:

=SMALL(SUBSTITUTE($C$5:$C$25,"-","")*1,ROW(1:1))và

=index($C$5:$C$25,match(LARGE(COUNTIF($C$5:$C$25,">"&$C$5:$C$25),ROW(1:1)),COUNTIF($C$5:$C$25,">"&$C$5:$C$25),0))Đều rất hay!

Nhưng mình lại gặp 1 vấn đề nữa là số dòng xếp thứ tự không cố định:
Khi tăng hoặc giảm 1 dòng CÔNG THỨC SẼ BÁO LỖI. Mình muốn để khoảng 1000 dòng dữ liệu. Do đó khi dữ liệu chỉ có khoảng 100 dòng thì công thức báo lỗi không trả về kết quả!

Có cách nào khắc phục không các bạn!
 
Thêm if vào là ổn thôi
Mã:
if(Row(1:1)>counta($C$5:$C$25),"",........)
 
2 công thức:

=SMALL(SUBSTITUTE($C$5:$C$25,"-","")*1,ROW(1:1))và

=index($C$5:$C$25,match(LARGE(COUNTIF($C$5:$C$25,">"&$C$5:$C$25),ROW(1:1)),COUNTIF($C$5:$C$25,">"&$C$5:$C$25),0))Đều rất hay!

Nhưng mình lại gặp 1 vấn đề nữa là số dòng xếp thứ tự không cố định:
Khi tăng hoặc giảm 1 dòng CÔNG THỨC SẼ BÁO LỖI. Mình muốn để khoảng 1000 dòng dữ liệu. Do đó khi dữ liệu chỉ có khoảng 100 dòng thì công thức báo lỗi không trả về kết quả!

Có cách nào khắc phục không các bạn!
Bạn đặt Name: Area
Mã:
=OFFSET(Sheet1!$C$5,,,COUNTA(Sheet1!$C$5:$C$1000))
Sau đó bạn thay tất cả đoạn $C$5:$C$25 trong công thức bằng Area
Cách đặt Name thì bạn tìm hiểu trên diễn đàn.
Chúc thành công!
 
Công thức của bạn cũng ra kết quả nhưng có 1 vấn đề là phải luôn bấm Ctrl + Shift + Enter để kết thúc, do đó vẫn chưa hoàn toàn tự động.
Thế này để chỉ bấm Enter bạn nè :
PHP:
=INDEX($C$5:$C$25,MATCH(LARGE(INDEX(COUNTIF($C$5:$C$25,">"&$C$5:$C$25),0),ROW(1:1)),INDEX(COUNTIF($C$5:$C$25,">"&$C$5:$C$25),0),0))
 
2 công thức:

=SMALL(SUBSTITUTE($C$5:$C$25,"-","")*1,ROW(1:1))và

=index($C$5:$C$25,match(LARGE(COUNTIF($C$5:$C$25,">"&$C$5:$C$25),ROW(1:1)),COUNTIF($C$5:$C$25,">"&$C$5:$C$25),0))Đều rất hay!

Nhưng mình lại gặp 1 vấn đề nữa là số dòng xếp thứ tự không cố định:
Khi tăng hoặc giảm 1 dòng CÔNG THỨC SẼ BÁO LỖI. Mình muốn để khoảng 1000 dòng dữ liệu. Do đó khi dữ liệu chỉ có khoảng 100 dòng thì công thức báo lỗi không trả về kết quả!

Có cách nào khắc phục không các bạn!
Với dữ liệu hơn 1000 dòng mà dùng công thức mảng để sắp xếp coi chừng "Rùa còn hơn Quy".
Nếu quá "Làm biếng" thì chỉ cần click vào hình "Tiểu sư phụ" 1 cái, "Tiểu sư phụ" sẽ niệm chú sắp xếp lại dữ liệu.
Nếu click 1 phát mà vẫn còn "làm biếng" nữa "Tiểu sư phụ" cũng "bó thây.cơm"
 

File đính kèm

Bạn đặt Name: Area
Mã:
=OFFSET(Sheet1!$C$5,,,COUNTA(Sheet1!$C$5:$C$1000))
Sau đó bạn thay tất cả đoạn $C$5:$C$25 trong công thức bằng Area
Cách đặt Name thì bạn tìm hiểu trên diễn đàn.
Chúc thành công!

Mình nghĩ nên dùng công thức: =SMALL(SUBSTITUTE($C$5:$C$1000,"-","")*1,ROW(1:1)) vì nó đơn giản dễ nhớ. Thay vào đó mình sẽ đặt giá trị cho những dòng còn trống cùng 1 giá trị giống nhau để nó xếp thứ tự phía sau những giá trị mình cần sắp xếp.
 
Bài viết rất quan trọng, nhưng tôi muốn sử dụng cho cả bảng lương

[TABLE="width: 500"]
[TR]
[TD]Họ tên[/TD]
[TD]Tổng lương[/TD]
[TD]Ghi chú[/TD]
[/TR]
[TR]
[TD]A[/TD]
[TD]560000[/TD]
[TD][/TD]
[/TR]
[TR]
[TD]B[/TD]
[TD]678000[/TD]
[TD][/TD]
[/TR]
[TR]
[TD]G[/TD]
[TD]546000[/TD]
[TD][/TD]
[/TR]
[TR]
[TD]H[/TD]
[TD]445000[/TD]
[TD][/TD]
[/TR]
[TR]
[TD]C[/TD]
[TD]345000[/TD]
[TD][/TD]
[/TR]
[TR]
[TD]D[/TD]
[TD]1276000[/TD]
[TD][/TD]
[/TR]
[/TABLE]

Làm sao để khi cột tổng lương tự động sắp xếp theo thứ tự nhỏ dần thì cột họ tên và ghi chú cũng nhảy theo?
 
Mình nghĩ nên dùng công thức: =SMALL(SUBSTITUTE($C$5:$C$1000,"-","")*1,ROW(1:1)) vì nó đơn giản dễ nhớ. Thay vào đó mình sẽ đặt giá trị cho những dòng còn trống cùng 1 giá trị giống nhau để nó xếp thứ tự phía sau những giá trị mình cần sắp xếp.
Hàm này có sắp xếp được giá trị dạng text không nhỉ? Ví dụ: sắp xếp lại tên theo kiểu ABC...
Nếu chỉ sắp xếp lại các giá trị dạng number thì chỉ cần dùng = SMALL() là ok. Hàm = SMALL( array;k) trả về giá trị nhỏ thứ k trong mảng, với biến k =1;2..n, để ý rằng các bảng biểu bao giờ cũng có cột TT ( thứ tự ) từ 1;2;3...n, tận dụng điều này làm biến chạy k cho hàm SMALL là ok. Ví dụ = SMALL($B1:$B100;A1) với A1 =1; A2 =2...An=n là cột TT. Tương tự với hàm LARGE nếu muốn sắp xếp từ lớn đến bé.
 
2 công thức:

=SMALL(SUBSTITUTE($C$5:$C$25,"-","")*1,ROW(1:1))và

=index($C$5:$C$25,match(LARGE(COUNTIF($C$5:$C$25,">"&$C$5:$C$25),ROW(1:1)),COUNTIF($C$5:$C$25,">"&$C$5:$C$25),0))Đều rất hay!

Nhưng mình lại gặp 1 vấn đề nữa là số dòng xếp thứ tự không cố định:
Khi tăng hoặc giảm 1 dòng CÔNG THỨC SẼ BÁO LỖI. Mình muốn để khoảng 1000 dòng dữ liệu. Do đó khi dữ liệu chỉ có khoảng 100 dòng thì công thức báo lỗi không trả về kết quả!

Có cách nào khắc phục không các bạn!
Công thức
PHP:
=index($C$5:$C$25,match(LARGE(COUNTIF($C$5:$C$25,">"&$C$5:$C$25),ROW(1:1)),COUNTIF($C$5:$C$25,">"&$C$5:$C$25),0))
đâu có báo lỗi nhỉ, nếu bạn dùng công thức naỳ cho 1000 dòng mà chỉ có 99 dòng có số liệu thì kết quả vẫn trả ra 1000 dòng nhưng mà từ dòng 99 đến dòng 1000 giống hệt nhau, bạn chỉ việc copy 99 dòng đầu tiên là được trừ khi bạn ko nhớ có bao nhiêu dòng thôi :)
 
[TABLE="width: 500"]
[TR]
[TD]Họ tên[/TD]
[TD]Tổng lương[/TD]
[TD]Ghi chú[/TD]
[/TR]
[TR]
[TD]A[/TD]
[TD]560000[/TD]
[TD][/TD]
[/TR]
[TR]
[TD]B[/TD]
[TD]678000[/TD]
[TD][/TD]
[/TR]
[TR]
[TD]G[/TD]
[TD]546000[/TD]
[TD][/TD]
[/TR]
[TR]
[TD]H[/TD]
[TD]445000[/TD]
[TD][/TD]
[/TR]
[TR]
[TD]C[/TD]
[TD]345000[/TD]
[TD][/TD]
[/TR]
[TR]
[TD]D[/TD]
[TD]1276000[/TD]
[TD][/TD]
[/TR]
[/TABLE]

Làm sao để khi cột tổng lương tự động sắp xếp theo thứ tự nhỏ dần thì cột họ tên và ghi chú cũng nhảy theo?

Ko hiểu ý bạn lắm nhưng nếu sắp xếp tổng lương thì bạn có thể dùng lệnh sort trong excel là được mà
 
Em muốn sort theo cột ngày tự động, các cột khác đi theo, nhờ các anh chị giúp ạ ! em cảm ơn
 

File đính kèm

Web KT

Bài viết mới nhất

Back
Top Bottom