Các Bạn xem giúp hàm sắp xếp dữ liệu theo vần bị lỗi (1 người xem)

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

ndhmoney686

Thành viên thường trực
Tham gia
25/4/12
Bài viết
376
Được thích
104
Mình đang dùng một hàm sắp xếp theo vần. Tự nhiên bây giờ phát hiện nó bị lỗi. Sau khi sắp xếp thường thì sẽ bị thiếu mất một mặt hàng. Mình có file mình họa đính kèm. Các bạn xem và giúp mình nhé.
 

File đính kèm

Mình đang dùng một hàm sắp xếp theo vần. Tự nhiên bây giờ phát hiện nó bị lỗi. Sau khi sắp xếp thường thì sẽ bị thiếu mất một mặt hàng. Mình có file mình họa đính kèm. Các bạn xem và giúp mình nhé.
toàn chuỗi ký tự ko à thì large gì đc chứ
sao đã dùng code ko dùng code hết luôn đi, nữa nạt nữa mỡ -+*/
 
Dạ đúng là Em đang dùng code hàm tự tạo đó để lọc danh sách duy nhất. Hàm tự tạo đó rất tuyệt lọc rất nhanh. Nhưng kết quả còn thiếu 1 chút nữa là nó ko sắp xếp được theo thứ tự.
Cho nên Em làm thủ công 1 chút là đang dùng thêm cột phụ và dùng hàm để lọc sắp xếp thêm lần nữa cho ra kết quả theo vần Anh ạ
 
toàn chuỗi ký tự ko à thì large gì đc chứ
sao đã dùng code ko dùng code hết luôn đi, nữa nạt nữa mỡ -+*/

Dùng large được vì Large có áp dụng cho ký tự đâu, trong công thức file đó Large áp dụng cho số (kết quả của countif)

Song đúng là công thức quá khủng

Chắc tác giả thích ăn thịt ba rọi (ba chỉ) cho ngon ngon đây... nói đến thấy đói rui
 
Lần chỉnh sửa cuối:
Mình đang dùng một hàm sắp xếp theo vần. Tự nhiên bây giờ phát hiện nó bị lỗi. Sau khi sắp xếp thường thì sẽ bị thiếu mất một mặt hàng. Mình có file mình họa đính kèm. Các bạn xem và giúp mình nhé.

Dùng công thức này đi cho C2, ngắn gọn và chuẩn hơn và chỉ cần bấm Enter thui nhé

=IF(ROW(1:1)<COUNTA(Data)+1,INDEX(Data,MATCH(LARGE(INDEX(COUNTIF(Data,">="&Data),0),ROW(1:1)),INDEX(COUNTIF(Data,">="&Data),0),0)),"")

Nhưng lưu ý rằng công thức mảng kiểu này sẽ làm bảng tính rất chậm khi dữ liệu nhiều và chỉ sắp xếp tốt cho Tiếng Anh hoặc Tiếng Việt không dấu thui (Tiếng Việt có dấu - bạn sẽ thấy nó sắp xếp sai vần D và Đ ...vv)

Muốn khắc phục chắc chỉ có thể VBA
 
Dạ đúng là Em đang dùng code hàm tự tạo đó để lọc danh sách duy nhất. Hàm tự tạo đó rất tuyệt lọc rất nhanh. Nhưng kết quả còn thiếu 1 chút nữa là nó ko sắp xếp được theo thứ tự.
Cho nên Em làm thủ công 1 chút là đang dùng thêm cột phụ và dùng hàm để lọc sắp xếp thêm lần nữa cho ra kết quả theo vần Anh ạ
thử cho đoạn này vào xem[GPECODE=vb]
Option Explicit

Sub GPE()
Dim Sarr(), Darr(), X%, Y%, Rarr%
With Sheets(1)
Rarr = .[a65000].End(xlUp).Row
Sarr = .Range("a2:A" & Rarr).Value
ReDim Darr(1 To Rarr - 1, 1 To 1)
For X = 1 To Rarr - 1
If Sarr(X, 1) <> "" Then
If Sarr(X, 1) <> 0 Then
Y = Y + 1
Darr(Y, 1) = Sarr(X, 1)
End If
End If
Next
.Range("c2:c" & Rarr).ClearContents
.Range("c2").Resize(Y, 1) = Darr()
End With
With Sheets(1).Sort
.SortFields.Clear
.SortFields.Add Key:=Range("c2:c" & Y), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
.SetRange Range("c2:c" & Y)
.Header = xlNo
.MatchCase = False
End With
End Sub
[/GPECODE]
 

File đính kèm

Lần chỉnh sửa cuối:
Dùng công thức này đi cho C2, ngắn gọn và chuẩn hơn và chỉ cần bấm Enter thui nhé

=IF(ROW(1:1)<COUNTA(Data)+1,INDEX(Data,MATCH(LARGE(INDEX(COUNTIF(Data,">="&Data),0),ROW(1:1)),INDEX(COUNTIF(Data,">="&Data),0),0)),"")

Nhưng lưu ý rằng công thức mảng kiểu này sẽ làm bảng tính rất chậm khi dữ liệu nhiều và chỉ sắp xếp tốt cho Tiếng Anh hoặc Tiếng Việt không dấu thui (Tiếng Việt có dấu - bạn sẽ thấy nó sắp xếp sai vần D và Đ ...vv)

Muốn khắc phục chắc chỉ có thể VBA


Anh ơi nếu chỉ sort cho khoảng 300 dòng thì chắc ko ảnh hưởng đến tốc độ file nhiều a nhỉ
Cảm ơn vodoi2x! Công thức đã xử lý được vấn đề Em hỏi Anh ạ.
PS: công thức này nếu mà bị một dòng trống ở giữa thì ko sort đc hết dữ liệu a nhỉ?
 
Lần chỉnh sửa cuối:
Anh ơi nếu chỉ sort cho khoảng 300 dòng thì chắc ko ảnh hưởng đến tốc độ file nhiều a nhỉ
công thức này nếu mà bị một dòng trống ở giữa thì ko sort đc hết dữ liệu a nhỉ.

Thử mới bit được bao nhiều dòng, còn tùy thuộc nó đặt vào file đã nặng thế nào chưa,

Tôi thử xóa 1 dòng trống thấy vẫn sort đủ hoàn toàn
 
thử cho đoạn này vào xem[GPECODE=vb]
Option Explicit

Sub GPE()
Dim Sarr(), Darr(), X%, Y%, Rarr%
With Sheets(1)
Rarr = .[a65000].End(xlUp).Row
Sarr = .Range("a2:A" & Rarr).Value
ReDim Darr(1 To Rarr - 1, 1 To 1)
For X = 1 To Rarr - 1
If Sarr(X, 1) <> "" Then
If Sarr(X, 1) <> 0 Then
Y = Y + 1
Darr(Y, 1) = Sarr(X, 1)
End If
End If
Next
.Range("c2:c" & Rarr).ClearContents
.Range("c2").Resize(Y, 1) = Darr()
End With
With Sheets(1).Sort
.SortFields.Clear
.SortFields.Add Key:=Range("c2:c" & Y), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
.SetRange Range("c2:c" & Y)
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
[/GPECODE]


Nếu một file mà cần sort cho 3 vùng liệu có được ko Anh?
 
xem mẫu củ thể mới biết, em định sort thế nào


Anh ơi Em đưa file mới ví dụ cho 3 vùng
- Hàng hóa
- Nguyên Vật liệ
- Khách hàng
Nếu ứng dụng được code vào thì với dữ liệu nhiều thì nó chạy sẽ rất mượt. Nếu được Anh giúp Em nhé. Cảm ơn Anh!
 

File đính kèm

Lần chỉnh sửa cuối:
Mình đang dùng một hàm sắp xếp theo vần. Tự nhiên bây giờ phát hiện nó bị lỗi. Sau khi sắp xếp thường thì sẽ bị thiếu mất một mặt hàng. Mình có file mình họa đính kèm. Các bạn xem và giúp mình nhé.

Công thức cho C2, kết thúc bằng CTRL + SHIFT + ENTER

Mã:
=INDEX(Data;MATCH(SMALL(COUNTIF(Data;"<"&Data);ROWS($1:1));COUNTIF(Data;"<"&Data);0))

Kéo xuống dưới cho tới khi #NUM!

hoặc

Mã:
=IFERROR(INDEX(Data;MATCH(SMALL(COUNTIF(Data;"<"&Data);ROWS($1:1));COUNTIF(Data;"<"&Data);0));"")

kéo xuống dưới

Dữ liệu của bạn phải liên tục không có dòng trống. Nhưng bạn nói dữ liệu do hàm lọc trả về nên chắc chắn sẽ liên tục.
------------
Nhưng sao lại dùng code lọc duy nhất --> sao sang cột phụ --> sắp xếp bằng công thức?
Đã code thì code luôn. Trong chủ đề khác tôi có đề nghị ví dụ để test.
 

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

Back
Top Bottom