Sort dữ liệu sau khi dùng hàm mảng (1 người xem)

  • Thread starter Thread starter curong
  • Ngày gửi Ngày gửi

Người dùng đang xem chủ đề này

curong

Thành viên mới
Tham gia
9/1/13
Bài viết
32
Được thích
1
mọi người giúp em với ạ! em dùng hàm mảng {=IFERROR(SMALL(IF((TH!$X$2:$X$6235<>"");ROW(TH!$D$2:$D$6235);"");ROW(K1))-1;"")}
sau đó em muốn sắp xếp dữ liệu theo cột B theo ngày tháng mà không thể nào sort được, bây giờ có công thức nào viết thêm vào công thức mảng để nó sẽ sắp xếp theo cột B không ạ?
 

File đính kèm

không ai giúp được em à?
 
không ai giúp được em à?

dữ liệu bạn đưa lên, là link với file khác, nên dữ liệu sẽ trở thành #value khi thành viên down về , nên chắc k giúp được

Đoán chừng:

không sort có thể do bạn merged các cells ở dòng 3

==> muốn sort bạn chọn vùng dữ liệu từ A4 đến cell cuối --> bấm sort và sắp xếp cột B

hy vọng là được
 
mình đã làm vậy rồi, cách sort mình biết, giờ chỉ có điều chỉnh công thức thôi, hic, không biết điều chỉnh ở đâu?
Em gửi lại file nhờ các bác giúp đỡ, em cảm ơn nhiều!
Đại khái nó là như thế, do file nặng nên em phải bỏ bớt nhiều, túm lại là em muốn sắp xếp dữ liệu ở sheet So 111 theo cột B!
Mong các bác giúp đỡ ạ!
 

File đính kèm

Lần chỉnh sửa cuối:
mong các bác để ý giúp e với ạ! em cảm ơn các bác nhiều ạ!
 
mong các bác để ý giúp e với ạ! em cảm ơn các bác nhiều ạ!

File của bạn có hàng trăm name rác ẩn và hiện nha bạn, tôi đã xử lý tất cả rồi!

Vấn đề sắp xếp, bạn nên insert 1 hàng tiêu đề rồi dùng AutoFilter rồi sắp xếp sẽ được thôi.
 

File đính kèm

sort như Nghĩa, chưa sort triệt để: Dòng 87 là 31/12/12, dòng 88 quay lại 06/01/12. Vấn đề là nó index từ bảng sheet TH, thứ tự dòng theo cột J, cột J tăng dần theo row(), thánh cũng không sort được.

Tôi thắc mắc là tại sao chứng từ trong sheet TH không nhập theo thứ tự ngày tháng? Hoặc sort theo ngày tháng tại sheet TH? Từ sheet TH tôi cho rằng sẽ trích xuất ra nhiều thứ khác nhau, vậy xử lý từ gốc có phải dễ dàng hơn nhiều không? V2 đó là cách duy nhất.
 
Dữ liệu của bạn được Index dựa theo cột J sheet Số 111. Vậy để sắp xếp theo thời gian thì chỉ cần xử lý cột phụ nàu, bạn làm như sau:
Đặt Name
1/ Data
Mã:
=IF(OFFSET(TH!$N$2,,,COUNT(TH!$B$2:$B$5000))=111,OFFSET(TH!$B$2,,,COUNT(TH!$B$2:$B$5000)),0)
2/ Tmp
Mã:
=(MAX(Data)-Data+1)*10000+ROW(INDIRECT("1:"&ROWS(Data)))
3/ Công thức tại cột J
Mã:
=IFERROR(SMALL(Tmp,ROW(1:1))-(MAX(Data)-INDEX(Data,MATCH(SMALL(Tmp,ROW(1:1)),Tmp,0))+1)*10000,"")
Công thức trên là công thức sắp xếp giảm, nếu bạn sắp xếp tăng thì thay Small bằng Large nhé
 

File đính kèm

dhn46 thử xóa 1 vài ô cột N sheet TH, hoặc thay bằng 112 xem, dữ liệu lập tức chạy sai: các dòng 112 chạy sang sheet 111, 1 số dòng 111 (tương ứng với số dòng sửa) thì lại không qua.

Chỉ 1 cách duy nhất và đơn giản là sort sheet TH mà thôi.
 
dhn46 thử xóa 1 vài ô cột N sheet TH, hoặc thay bằng 112 xem, dữ liệu lập tức chạy sai: các dòng 112 chạy sang sheet 111, 1 số dòng 111 (tương ứng với số dòng sửa) thì lại không qua.

Chỉ 1 cách duy nhất và đơn giản là sort sheet TH mà thôi.
Chú Mỹ cái này chỉ bắt lỗi là được mà
Cháu đổi công thức tại cột J, chú Test giùm cháu
Mã:
=IF(COUNTIF(TH!$N$2:$N$5000,111)>=ROW(1:1),SMALL(Tmp,ROW(1:1))-(MAX(Data)-INDEX(Data,MATCH(SMALL(Tmp,ROW(1:1)),Tmp,0))+1)*10000,"")
 
Vẫn vậy nhóc ơi. Chú thay small bằng large để sắp xếp tăng dần (ai cũng thế à nha), thay 3 ô 111 thành 112 ở sheet TH. 3 dòng đó lập tức chạy qua sheet 111 mà lại lên đầu mới ghê.
Nếu sửa các dòng 29/2, thì các dòng 29/2 cũng chạy qua và cũng lên đầu, nghĩa là nằm trên ngày 31/01, sai thứ tự sort.
 

File đính kèm

Vẫn vậy nhóc ơi. Chú thay small bằng large để sắp xếp tăng dần (ai cũng thế à nha), thay 3 ô 111 thành 112 ở sheet TH. 3 dòng đó lập tức chạy qua sheet 111 mà lại lên đầu mới ghê.
Nếu sửa các dòng 29/2, thì các dòng 29/2 cũng chạy qua và cũng lên đầu, nghĩa là nằm trên ngày 31/01, sai thứ tự sort.
Ah đúng rùi, nếu sắp xếp theo Small thì vẫn được cong Large thì lỗi vậy cháu sửa lại tổng thể như sau, chú lại test hộ cháu nữa nhé
Đặt Name
1/ Data
Mã:
=IF(OFFSET(TH!$N$2,,,COUNT(TH!$B$2:$B$5000))=111,OFFSET(TH!$B$2,,,COUNT(TH!$B$2:$B$5000)),"")
2/ Tmp
Mã:
=IFERROR((MAX(Data)-Data+1)*10000+ROW(INDIRECT("1:"&ROWS(Data))),"")
3/ Công thức tại cột J
Mã:
=IF(COUNTIF(TH!$N$2:$N$5000,111)>=ROW(1:1),SMALL(Tmp,ROW(1:1))-(MAX(Data)-INDEX(Data,MATCH(SMALL(Tmp,ROW(1:1)),Tmp,0))+1)*10000,"")
File cháu đính kèm có 2 cột sắp xếp theo Small và Large.
 

File đính kèm

Cảm ơn các bác rất nhiều ạ! Em đã xem và hiểu rồi ạ!
 
bác dhn46 ơi! Bác xem lại cách sort của bác lộn xộn hết cả rồi, em thấy nó sort phiếu thu một chỗ, phiếu chi một chỗ, nếu sort theo cột B thì các ngày giống nhau phải sắp gần nhau chứ, sao lộn xộn ngày bé thì ở sau, ngày lớn thì ở trước vậy ạ? Cách khắc phục là gì vậy? Mới nhìn thì tưởng đúng nhưng kiểm tra kỹ mới thấy sai.
à! chỉ cần sửa cột b thành cột e là được, cảm ơn bác, em đã hiểu!
 
Lần chỉnh sửa cuối:
Bác dhn46 ơi! em file của bác thì đúng rồi, nhưng em sang file của em thì không ra nó báo lỗi #NUM! là vì sao ạ, file của em không chỉ có mỗi dữ liệu chỉ có như vậy đâu mà còn nhiều dòng nữa, xem trong file của bác thì bác cắt hết chỉ còn hiển thị những dòng liên quan để sắp xếp sang bên sheet so 111 thôi, hic, làm sao giờ hả bác?????????????
em đã tìm ra nguyên nhân rồi bác ạ, và đã sửa được rồi, hì hì, phiền các bác quá, không phải tại bác, mà tại em ạ! cảm ơn bác một lần nữa ạ!
 
Lần chỉnh sửa cuối:
curong đã viết:
bài hôm trước sắp xếp theo cột B sau khi dùng lệnh, em xem ok rồi, nhưng khi sắp cùng 1 ngày thì nó lại cho dòng lớn lên trước dòng nhỏ ở sau, vậy làm thế nào để nó sắp xếp dòng theo thứ tự nhỏ trước, lớn sau?
Cảm ơn bác!
Xin được trả lời bạn tại Topic này để mọi người nếu cần có thể tham khảo
Nếu bạn muốn như vậy thì bạn cần sửa 2 công thức
1/ Sửa Name: Tmp
Mã:
=IFERROR([SIZE=4][COLOR=#ff0000][B]-[/B][/COLOR][/SIZE](MAX(Data)-Data+1)*10000+ROW(INDIRECT("1:"&ROWS(Data))),"")
2/ Sửa công thức tại cột J
Mã:
=IF(COUNTIF(TH!$N$2:$N$5000,111)>=ROW(1:1),SMALL(Tmp,ROW(1:1))[SIZE=4][B][COLOR=#ff0000]+[/COLOR][/B][/SIZE](MAX(Data)-INDEX(Data,MATCH(SMALL(Tmp,ROW(1:1)),Tmp,0))+1)*10000,"")
Cho sắp xếp tăng
Mã:
=IF(COUNTIF(TH!$N$2:$N$5000,111)>=ROW(1:1),LARGE(Tmp,ROW(1:1))[SIZE=4][B][COLOR=#ff0000]+[/COLOR][/B][/SIZE](MAX(Data)-INDEX(Data,MATCH(LARGE(Tmp,ROW(1:1)),Tmp,0))+1)*10000,"")
Cho sắp xếp giảm.
 

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

Back
Top Bottom