Sắp xếp số tài khoản (1 người xem)

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

bongmaihung

Thành viên hoạt động
Tham gia
7/8/14
Bài viết
173
Được thích
39
Em có file đính kèm cần sắp xếp theo yêu cầu. Yêu cầu em đã nêu trong file. Nhờ anh chị giúp đỡ
 

File đính kèm

Bạn lưu ý số Tài khoản chỉ so sánh với nhau khi cùng cấp, nếu không sẽ cho kết quả sai:
Ví dụ: Tk 1121 sẽ xếp trước Tk 131, nhưng số 1121>131
Để sắp xếp ta dùng cột phụ chẳng hạn cột C
tại C1 gõ va filldown công thức

=LEFT(A1&REPT(" ",10),10)

sau đó sắp xếp theo cột C
 
trong file bạn có note: Theo chủ quan của em thì có thể dựa vào 3 ký tự bên trái nhưng em chưa nghĩ ra???--=0--=0--=0--=0--=0--=0--=0--=0

thì chính là câu trả lời rồi còn gì.

-bạn dùng hàm left để lấy 3 ký tự bên trái : A2 =left(A1;1)
Sau đó filter cột nguyên bảng,sau đó sort từ A-> Z cột A2 là ra rồi còn gì.

Không ổn vì tiểu khoản sẽ không được sắp xếp. Hì, hình như bạn hướng dẫn người ta Filldown mà bạn lại Filter thì không biết ra cái gì?
 
Bạn lưu ý số Tài khoản chỉ so sánh với nhau khi cùng cấp, nếu không sẽ cho kết quả sai:
Ví dụ: Tk 1121 sẽ xếp trước Tk 131, nhưng số 1121>131
Để sắp xếp ta dùng cột phụ chẳng hạn cột C
tại C1 gõ va filldown công thức

=LEFT(A1&REPT(" ",10),10)

sau đó sắp xếp theo cột C
Dạ vâng, em cảm ơn anh,Không biết có cách nào có thể sắp xếp như yêu cầu mà ko cần cột phụ ko anh. Còn anh giải thích hoàn toàn hợp lý rồi ah.Lập lại khoảng trắng 10 lần là cách hay vì cái em đang cân là 1121 phải đứng trước 131 (cái này chắc anh quá rõ vì em biết anh là cao thủ về kế toán)
 
trong file bạn có note: Theo chủ quan của em thì có thể dựa vào 3 ký tự bên trái nhưng em chưa nghĩ ra???--=0--=0--=0--=0--=0--=0--=0--=0

thì chính là câu trả lời rồi còn gì.

-bạn dùng hàm left để lấy 3 ký tự bên trái : A2 =left(A1;1)
Sau đó filter cột nguyên bảng,sau đó sort từ A-> Z cột A2 là ra rồi còn gì.
cái này thì mình cũng biết rồi, nhưng thử xem có dùng công thức or VBA được không thôi, Dù sao cảm ơn bạn nhiều
 
không ổn thì ta chơi thế này: A2 =CONCATENATE(A2;REPT("0";10-LEN(A2)))

sau đó fill công thức xuống và filter A->Z cột A2[/QUOTE
Cảm ơn bạn nhiều, bạn kết hợp công thức rất linh hoạt, thỉng thoảng lên giao lưu với mọi người lại học hỏi được thêm, lâu rồi mình cũng ko dùng lai concatenate để nối chuỗi
 
không ổn thì ta chơi thế này: A2 =CONCATENATE(A2;REPT("0";10-LEN(A2)))

sau đó fill công thức xuống và filter A->Z cột A2[/QUOTE
Cảm ơn bạn nhiều, bạn kết hợp công thức rất linh hoạt, thỉng thoảng lên giao lưu với mọi người lại học hỏi được thêm, lâu rồi mình cũng ko dùng lai concatenate để nối chuỗi
Nếu dùng công thức như vậy thì sẽ gặp lỗi tham chiếu vòng. Nếu dùng cột phụ, ví dụ cột B, B1="a" & A1, sort cột B này rồi xóa đi. Dùng VBA làm gì cho mất công hả bạn, VBA không Undo được.
 
Nếu dùng công thức như vậy thì sẽ gặp lỗi tham chiếu vòng. Nếu dùng cột phụ, ví dụ cột B, B1="a" & A1, sort cột B này rồi xóa đi. Dùng VBA làm gì cho mất công hả bạn, VBA không Undo được.
Dạ, thực ra đây cũng là bài toán nhỏ thôi ah, nhưng thử lên GPE tham khảo ý kiến mọi người anh ah, xem có cách nào hay nhất thì áp dụng ah. Cảm ơn anh
 
Nếu bạn muốn code thì thử dùng
Mã:
Sub SortNumberByText()
    Columns(2).Insert
    n = Cells(Rows.Count, 1).End(3).Row
    Range("B1").Formula = "=  ""a"" & A1"
    Range("B1").Resize(n, 1).FillDown
    Range("A1:B" & n).Sort [B1]
    Columns(2).Delete
 End Sub
 
Nếu bạn muốn code thì thử dùng
Mã:
Sub SortNumberByText()
    Columns(2).Insert
    n = Cells(Rows.Count, 1).End(3).Row
    Range("B1").Formula = "=  ""a"" & A1"
    Range("B1").Resize(n, 1).FillDown
    Range("A1:B" & n).Sort [B1]
    Columns(2).Delete
 End Sub

Cách của anh ngắn gọn và rất hay, em chờ mãi, hi, thực ra em ngĩ kiểu gì cũng có cách ko dùng cột phụ nhưng ko làm được. Anh đưa ý tưởng từ từ cel vào vba khá hay,
Em đã rút được kinh nghiệm là bài này nên thêm ký tự văn bản vào dễ xử lý hơn
Cảm ơn anh nhiều
 
Lần chỉnh sửa cuối:
Cách của anh ngắn gọn và rất hay, em chờ mãi, hi, thực ra em ngĩ kiểu gì cũng có cách ko dùng cột phụ nhưng ko làm được. Anh đưa ý tưởng từ từ cel vào vba khá hay,
Em đã rút được kinh nghiệm là bài này nên thêm ký tự văn bản vào dễ xử lý hơn
Cảm ơn anh nhiều
Không dám nhận chữ rất hay đâu, cách mình trong VBA dùng cột phụ mà.
 
Nếu bạn muốn code thì thử dùng
Mã:
Sub SortNumberByText()
    Columns(2).Insert
    n = Cells(Rows.Count, 1).End(3).Row
    Range("B1").Formula = "=  ""a"" & A1"
    Range("B1").Resize(n, 1).FillDown
    Range("A1:B" & n).Sort [B1]
    Columns(2).Delete
 End Sub
Mã:
Sub SortNumberByText()
With Sheet1
    Columns(2).Insert
    n = Cells(Rows.Count, 1).End(3).Row
    Range("B1").Formula = "=  ""a"" & A1"
    Range("B1").Resize(n, 1).FillDown
    Range("A1:B" & n).Sort [B1]
    Columns(2).Delete
End With
 End Sub

Em mạn phép sửa lại chút xíu, để bạn nào có làm kế toán thì sửa tên sheet phù hợp là được
 
Sửa như vậy chẳng có tác dụng gì, nếu dùng with sheet1 thì phải thêm dấu chấm ở trước Columns, Cells, Range. Để đỡ phải tìm sửa nhiều thì bạn có thể sửa thành
Mã:
Sub SortNumberByText()
Dim n&, s As Worksheet
Set s=Activesheet
Sheet1.Activate
Columns(2).Insert
    n = Cells(Rows.Count, 1).End(3).Row
    Range("B1").Formula = "=  ""a"" & A1"
    Range("B1").Resize(n, 1).FillDown
    Range("A1:B" & n).Sort [B1]
    Columns(2).Delete
s.Activate
End Sub
 
Lần chỉnh sửa cuối:

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

Back
Top Bottom