Sắp xếp mã số có chứa cả kí tự

Liên hệ QC

linhmuc_kt

Thành viên mới
Tham gia
6/5/14
Bài viết
3
Được thích
0
Mình muốn sắp cột mã số trong file như sau
1
1A
2
3
4
4A
Có nghĩa xếp số xong mà số tiếp theo có kèm kí tự thì xếp liền sau nó. Mính xếp nó toàn tách ra xếp số xong moi tới số kèm kí tự. Mong mọi người giúp đỡ.
 

File đính kèm

Bạn thêm 1 cột bên fải;
Áp vô nó công thức ="GPE" & RIGHT("000"&RC[-1],4)
Copy Down đến tận cùng'
Cho nó cái tiêu đề & xếp theo nó; Chắc được.
 
không được bạn ah. Mà sao lại thêm GPE vào, mình muốn để y nguyên như vậy và sắp xếp thôi
 
không được bạn ah. Mà sao lại thêm GPE vào, mình muốn để y nguyên như vậy và sắp xếp thôi

Để nguyên vậy mà sếp thì đợi đến Tết Công gô nha bạn!
 

File đính kèm

Không phải sếp như vậy bạn ơi, làm như của bạn thì 11A lại sếp sau 119, 30A lại sếp sau số 300 mấy chục rồi. ý mình muốn 11A sếp ngay sau 11 luôn kìa, 30A sếp sau 30, 30B sếp sau 30A.
 
Không phải sếp như vậy bạn ơi, làm như của bạn thì 11A lại sếp sau 119, 30A lại sếp sau số 300 mấy chục rồi. ý mình muốn 11A sếp ngay sau 11 luôn kìa, 30A sếp sau 30, 30B sếp sau 30A.
Nếu các mã chỉ có dạng mCn trong đó m là số, C là ký tự từ A đến E hoặc "", n là 1 chữ số hoặc "" thì ta có thể convert mã thành số = m*100 + (ASC(C)-ASC("A")+1) *10 + n (trường hợp C hay n="" coi là 0). Copy các số này vào cột Y để sort, cuối cùng xóa cột Y đi.
Mã:
Function cn(s As String) As Long
Dim i As Integer
Dim c As String
Dim k As Integer
Dim s1 As String, s2 As String, s3 As String
s1 = s
s2 = ""
s3 = ""
For i = 65 To 69
c = Chr(i)
k = InStr(s, c)
If k > 0 Then
s1 = Left(s, k - 1)
s2 = c
s3 = Right(s, Len(s) - k)
GoTo a
End If
Next
a:
kq = CLng(s1) * 100
If s2 <> "" Then kq = kq + (Asc(s2) - 64) * 10
If s3 <> "" Then kq = kq + CLng(s3)
cn = kq
End Function
Sub sapxep()
n = Range("A10000").End(xlUp).Row
For i = 2 To n
Range("Y" & i) = cn(Range("C" & i))
Next
Range("A2:Y" & n).Sort key1:=Range("Y2:Y" & n), order1:=xlAscending, header:=xlNo
Range("Y:Y").ClearContents
End Sub
 

File đính kèm

Cách tạo giá trị để sort:
- Xét ký tự cuối cùng, nếu là alpha thì tách nó ra. Nếu là numeric thì giữ trọn chuỗi. Như vậy thì chỉ còn lại số
- Đem số cộng cho một số rất lớn (1000000). Mục đích là để cho chúng thẳng hàng (dùng hàm text cũng được)
- Nối trở lại vào ký tự cuối.

=(1000000+IF(ISNUMBER(VALUE(RIGHT(A1,1))),A1,LEFT(A1,LEN(A1)-1))) & RIGHT(A1,1)
 
Cách tạo giá trị để sort:
- Xét ký tự cuối cùng, nếu là alpha thì tách nó ra. Nếu là numeric thì giữ trọn chuỗi. Như vậy thì chỉ còn lại số
- Đem số cộng cho một số rất lớn (1000000). Mục đích là để cho chúng thẳng hàng (dùng hàm text cũng được)
- Nối trở lại vào ký tự cuối.

=(1000000+IF(ISNUMBER(VALUE(RIGHT(A1,1))),A1,LEFT(A1,LEN(A1)-1))) & RIGHT(A1,1)
Lọc số cần đưa vào để Sort, hình như anh chưa xem kỹ dữ liệu, còn có số sau alpha nữa, ví dụ 244A1, 47B1, ...
Có lẽ cần thêm 1 bước xử lý nữa.
 
Lọc số cần đưa vào để Sort, hình như anh chưa xem kỹ dữ liệu, còn có số sau alpha nữa, ví dụ 244A1, 47B1, ...
Có lẽ cần thêm 1 bước xử lý nữa.
Thế này chắc là được:
Mã:
=IF(ISERROR(VALUE(MID(C2,LEN(C2)-1,1))),IF(LEN(C2)>1,RIGHT("000000"&C2,5),RIGHT("000000"&C2&"00",5)),IF(ISERROR(VALUE(RIGHT(C2))),RIGHT("000000"&C2&"0",5),RIGHT("000000"&C2&"00",5)))
 

File đính kèm

Lần chỉnh sửa cuối:
Lọc số cần đưa vào để Sort, hình như anh chưa xem kỹ dữ liệu, còn có số sau alpha nữa, ví dụ 244A1, 47B1, ...
Có lẽ cần thêm 1 bước xử lý nữa.

Đúng vậy, có thêm thắt gì nữa thì hoàn toàn trật lất. Dữ liệu phức tạp thì dùng hàm tự chế cho xong.

Tôi lười xem file lắm (thật sự là tôi tránh vi rút, máy tôi có rất nhiều dữ liệu mật, bị chôm thì tôi mất việc).
Chủ thớt diễn tả như thế nào tôi làm thế ấy (cả 2 bài #1 và #5 đề diễn tả như vậy). Chơi cho vui thôi chứ theo kinh nghiệm diễn đàn này, 95% các chủ thớt không diễn tả đúng yêu cầu. Hơn 3/4 chủ thớt xem kết quả xong mới biết mình chưa nắm vững yêu cầu.
 
Đúng vậy, có thêm thắt gì nữa thì hoàn toàn trật lất. Dữ liệu phức tạp thì dùng hàm tự chế cho xong.

Tôi lười xem file lắm (thật sự là tôi tránh vi rút, máy tôi có rất nhiều dữ liệu mật, bị chôm thì tôi mất việc).
Chủ thớt diễn tả như thế nào tôi làm thế ấy (cả 2 bài #1 và #5 đề diễn tả như vậy). Chơi cho vui thôi chứ theo kinh nghiệm diễn đàn này, 95% các chủ thớt không diễn tả đúng yêu cầu. Hơn 3/4 chủ thớt xem kết quả xong mới biết mình chưa nắm vững yêu cầu.
Hơn nữa chủ thớt này cũng "biến" đâu mất rồi. Còn lại "ta với ta". --=0
 
Web KT

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

Back
Top Bottom