bongmaihung
Thành viên hoạt động



- Tham gia
- 7/8/14
- Bài viết
- 173
- Được thích
- 39











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???
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ì.



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)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



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ềutrong 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???
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 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.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 bạn muốn dùng code, thì xem qua bàiEm 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 đỡ



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 anhNế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.
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



Nếu bạn muốn dùng code, thì xem qua bài
http://www.giaiphapexcel.com/forum/...ắp-xếp-các-Mã-giống-như-bảng-mẫu-chuẩn-có-sẵn
Không dám nhận chữ rất hay đâu, cách mình trong VBA dùng cột phụ mà.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
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
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