Sắp xếp các Sheet - Bài toán sắp xếp

Liên hệ QC

Nguyễn Duy Tuân

Nghị Hách
Thành viên danh dự
Tham gia
13/6/06
Bài viết
4,649
Được thích
10,138
Giới tính
Nam
Nghề nghiệp
Giáo viên, CEO tại Bluesofts
Gửi các bạn phương pháp sắp xếp các Sheet trong Workbook theo thứ tự nào đó.
 

File đính kèm

  • Sapxep.zip
    14.8 KB · Đọc: 2,752
Cái này hay đấy, tiện thể anh Tuan giới thiệu luôn sắp xếp các giá trị trong cell theo thứ tự tăng hoặc giảm dần như trong Data/Sort... :-=
 
Upvote 0
Help me

Chào anh chị, tôi tải cái bản sắp xếp các Sheet rồi, và kích hoạt rồi, nhứng tai sao không sắp xếp được nhỉ, có ai chỉ mình với}}}}}
 
Upvote 0
Mình sắp xếp tên theo vần A,B, C, nhưng các cột còn lại không đổi theo, tôi có làm thiếu bước nào không nhỉ ??
 
Upvote 0
Mình sắp xếp tên theo vần A,B, C, nhưng các cột còn lại không đổi theo, tôi có làm thiếu bước nào không nhỉ ??

Cái này là sắp xếp tên của sheet để tiện quản lý thôi bạn ah. Còn muốn sắp xếp cột thì bạn phải vào Data/Sort
 
Upvote 0
Chương trình này rất hay !
Em down về rồi nhưng ko biết sử dụng.
Khi down về mở ra nó xuất hiện thanh công cụ " Sắp xếp " nhưng ấn vào đó nó báo lỗi gì đó về Macro hoặc báo The file could not be access.... gì đó.
Các bác hướng dẫn kỹ hơn được ko?
 
Upvote 0
Ai làm cái sắp xếp rồi thì hướng dẫn cách làm với. Mình đã tải về nhưng không biết cách làm
 
Upvote 0
Em đã tải về và sắp xếp, nhưng chỉ xếp đợc theo thứ tự giảm dần chứ không xếp được theo thứ tự tăng dần. làm thế nào để xếp được theo thứ tự tăng dần ạ?
 
Upvote 0
Em đã tải về và sắp xếp, nhưng chỉ xếp đợc theo thứ tự giảm dần chứ không xếp được theo thứ tự tăng dần. làm thế nào để xếp được theo thứ tự tăng dần ạ?
Thử file này xem:
PHP:
Sub SortSheet(Order As Boolean)
  Dim i As Long, j As Long
  Application.ScreenUpdating = False
  For i = 1 To Sheets.Count - 1
    For j = i + 1 To Sheets.Count
      If Sheets(IIf(Order, j, i)).Name < Sheets(IIf(Order, i, j)).Name Then
        Sheets(j).Move Before:=Sheets(i)
      End If
    Next j
  Next i
  Application.ScreenUpdating = True
End Sub
PHP:
Sub Main()
  Dim TB As Long
  TB = MsgBox("Ban muon sort tang hay giam dan?" & vbLf & _
  "Bam 'YES' de sort tang dan" & vbLf & _
  "Bam 'NO' de sort giam dan", 4)
  SortSheet (TB = 6)
End Sub
 

File đính kèm

  • SortSheets.xls
    35.5 KB · Đọc: 556
Lần chỉnh sửa cuối:
Upvote 0
Thử file này xem:
PHP:
Sub SortSheet(Order As Boolean)
Dim i As Long, j As Long
Application.ScreenUpdating = False
For i = 1 To Sheets.Count - 1
For j = i + 1 To Sheets.Count
If Sheets(IIf(Order, j, i)).Name < Sheets(IIf(Order, i, j)).Name Then
Sheets(j).Move Before:=Sheets(i)
End If
Next j
Next i
Application.ScreenUpdating = True
End Sub
PHP:
Sub Main()
Dim TB As Long
TB = MsgBox("Ban muon sort tang hay giam dan?" & vbLf & _
"Bam 'YES' de sort tang dan" & vbLf & _
"Bam 'NO' de sort giam dan", 4)
SortSheet (TB = 6)
End Sub
---
Anh có 1 file có khoảng 70 sheet, 10 sheet đầu tiên được sắp xếp theo trình tự nhập liệu, do không muốn người xử dụng thay đổi vị trí các sheet này ( 10 sheet đầu tiên ) , không biết chú có thể viết giúp code này được không ? 60 sheet còn lại được sắp xếp thứ tự tăng dần hay giảm dần đều được. Mong chú rõ, Cám ơn.
 
Lần chỉnh sửa cuối:
Upvote 0
---
Anh có 1 file có khoảng 70 sheet, 10 sheet đầu tiên được sắp xếp theo trình tự nhập liệu, do không muốn người xử dụng thay đổi vị trí các sheet này ( 10 sheet đầu tiên ) , không biết chú có thể viết giúp code này được không ? 60 sheet còn lại được sắp xếp thứ tự tăng dần hay giảm dần đều được. Mong chú rõ, Cám ơn.
Anh để ý code của em có đoạn:
For i = 1 To Sheets.Count - 1
Tức sort từ sheet đầu tiên... trong khi anh lại muốn sort từ sheet thứ 11 trở đi ---> Vậy cách đơn giản là sửa code trên thành:
For i = 11 To Sheets.Count - 1
Muốn tổng quát hơn, tức có thể sort bất kỳ nhóm sheet nào thì phải sửa code lại khá nhiều
 
Upvote 0
Anh để ý code của em có đoạn:
For i = 1 To Sheets.Count - 1
Tức sort từ sheet đầu tiên... trong khi anh lại muốn sort từ sheet thứ 11 trở đi ---> Vậy cách đơn giản là sửa code trên thành:
For i = 11 To Sheets.Count - 1
Muốn tổng quát hơn, tức có thể sort bất kỳ nhóm sheet nào thì phải sửa code lại khá nhiều
---
Cám ơn chú, vậy là giải quyết được vấn đề sắp xếp từ sheet thứ 11 trở đi. Nếu chú thấy khả thi thì còn việc cố định 10 sheet đầu có gặp trở ngại không ?
10 sheet đầu tiên được sắp xếp theo trình tự nhập liệu, do không muốn người xử dụng thay đổi vị trí các sheet này ( 10 sheet đầu tiên )
 
Upvote 0
Em cảm ơn anh ndu96081631, nhưng em không hiểu được đoạn code trên phải làm như thế nào hả anh? Anh chỉ giùm em với. Nếu File của em có khoảng 200 sheet thì sắp xếp có bị ảnh hưởng gì không ạ?
 
Upvote 0
---
Cám ơn chú, vậy là giải quyết được vấn đề sắp xếp từ sheet thứ 11 trở đi. Nếu chú thấy khả thi thì còn việc cố định 10 sheet đầu có gặp trở ngại không ?
Thật ra cũng đã làm rồi, em đưa lên cho anh tham khảo ---> Với file đính kèm dưới đây anh có thể sort bất kỳ nhóm sheet nào anh muốn
- Mở file lên và bấm Ctrl + Shift + S để gọi form
- Một form hiện ra như hình:

untitled.JPG


- Dùng chuột chọn 1 sheet trong ListBox rồi bấm giữ Ctrl và chọn thêm sheet khác... Cũng có thể chọn sheet đầu, giữ phím Shift và chọn sheet cuối (nếu các sheet nằm liên tục nhau)
- Tiếp theo chọn kiểu sort tăng dần hay giảm dần bằng cách check vào Option Button
- Cuối cùng là bấm nút Sort
- Code này có thể lưu lại thành 1 Add-In để dùng lâu dài
(code của em cũng chưa tối ưu lắm... để từ từ cải tiến thêm)
 

File đính kèm

  • SortSh_ByUserForm.xls
    62 KB · Đọc: 233
Upvote 0
Em không hiểu được code a gửi, anh có thể giải thích cụ thể giùm em được không ạ. A gửi qua mail: hanhhoang10@gmail.com giúp em với ạ. Em cảm ơn anh nhiều!
 
Upvote 0
giúp em vấn đề này với:
em có file excel gồm 300 sheet được tạo ra theo thứ tự là K1,K2,K3,...,K100,V1,V2,V3,...,V100,H1,H2,H3,...,H100 , jo` em muốn sắp xếp lại theo thứ tự là K1,V1,H1,K2,V2,H2,K3,V3,H3,...,K100,V100,H100
vậy có cách nào không ah.. em cần gấp mong các bro giải quyết dùm..
 
Upvote 0
Thật ra cũng đã làm rồi, em đưa lên cho anh tham khảo ---> Với file đính kèm dưới đây anh có thể sort bất kỳ nhóm sheet nào anh muốn
- Mở file lên và bấm Ctrl + Shift + S để gọi form
- Một form hiện ra như hình:

View attachment 46070


- Dùng chuột chọn 1 sheet trong ListBox rồi bấm giữ Ctrl và chọn thêm sheet khác... Cũng có thể chọn sheet đầu, giữ phím Shift và chọn sheet cuối (nếu các sheet nằm liên tục nhau)
- Tiếp theo chọn kiểu sort tăng dần hay giảm dần bằng cách check vào Option Button
- Cuối cùng là bấm nút Sort
- Code này có thể lưu lại thành 1 Add-In để dùng lâu dài
(code của em cũng chưa tối ưu lắm... để từ từ cải tiến thêm)
NDU viết giúp code sort sheets thêm phần theo màu tô. (tab color).
Vd: theo thứ tự Xanh, đỏ, vàng...
Dùng cả cho Ex 03 và 07.
Cám ơn.
 
Upvote 0
NDU viết giúp code sort sheets thêm phần theo màu tô. (tab color).
Vd: theo thứ tự Xanh, đỏ, vàng...
Dùng cả cho Ex 03 và 07.
Cám ơn.
Ý ThuNghi là sao? Là sort theo màu sắc hay chỉ thêm phần tô màu khi sort?
- Nếu là sort theo màu sắc thì phải viết lại toàn bộ code
- Nếu chỉ là thêm màu sắc trong khi sort thì dễ mà ---> thêm vào code Sheets(...).Tab.ColorIndex = ???
 
Upvote 0
Ý ThuNghi là sao? Là sort theo màu sắc hay chỉ thêm phần tô màu khi sort?
- Nếu là sort theo màu sắc thì phải viết lại toàn bộ code
- Nếu chỉ là thêm màu sắc trong khi sort thì dễ mà ---> thêm vào code Sheets(...).Tab.ColorIndex = ???
Sort theo màu sắc, màu đã tô cho sh.
Vì mình phân loại sh theo kỳ là màu đỏ, sh theo năm là màu xanh, và data là màu khác.
Khi thao tác đã dời các sh, bây giờ muốn 1 code đời lại theo quy định.
Cám ơn.
 
Upvote 0
Web KT
Back
Top Bottom