cách sắp xếp các sheet ?

  • Thread starter thangnm
  • Ngày gửi
T

thangnm

Guest
27/7/05
40
0
0
hanoi
có bạn nào biết cách sắp xếp các sheet trong 1 lile exel không nhỉ, bảo minh với, VD mình có 1 file trong đó có các sheet được là 111,112,421,334,511...(khoảng 40 sheet)
bây giờ có cách nào sắp xếp các sheet đó theo chiều tăng (giảm) dần được không?? hay phải sort bằng tay?? :deal: .
 
Khóa học Quản trị dòng tiền
W

workman

Guest
22/7/05
372
2
0
51
Ho Chi Minh
thangnm nói:
có bạn nào biết cách sắp xếp các sheet trong 1 lile exel không nhỉ, bảo minh với, VD mình có 1 file trong đó có các sheet được là 111,112,421,334,511...(khoảng 40 sheet)
bây giờ có cách nào sắp xếp các sheet đó theo chiều tăng (giảm) dần được không?? hay phải sort bằng tay?? :deal: .
Xài đỡ cái này nhé. Bạn insert module rồi paste cái đoạn mã này vào. Thế là xong.

Sub SortSheets()
Dim lCount As Long, lCounted As Long
Dim lShtLast As Long
Dim lReply As Long


lReply = MsgBox("To sort Worksheets ascending, select 'Yes'. " _
& "To sort Worksheets descending select 'No'", vbYesNoCancel, "Ozgrid Sheet Sort")
If lReply = vbCancel Then Exit Sub

lShtLast = Sheets.Count

If lReply = vbYes Then 'Sort ascending
For lCount = 1 To lShtLast
For lCount2 = lCount To lShtLast
If UCase(Sheets(lCount2).Name) < UCase(Sheets(lCount).Name) Then
Sheets(lCount2).Move Before:=Sheets(lCount)
End If
Next lCount2
Next lCount
Else 'Sort descending
For lCount = 1 To lShtLast
For lCount2 = lCount To lShtLast
If UCase(Sheets(lCount2).Name) > UCase(Sheets(lCount).Name) Then
Sheets(lCount2).Move Before:=Sheets(lCount)
End If
Next lCount2
Next lCount
End If

End Sub

Sưu tầm: http://www.ozgrid.com/
 
Sửa lần cuối:
T

thangnm

Guest
27/7/05
40
0
0
hanoi
ừ, vậy mình hỏi thêm nhé, nếu các sheet được đặt tên (VD như: bảng cân đối, đối chiếu, tháng 1,...) thì làm thế nào?
 
W

workman

Guest
22/7/05
372
2
0
51
Ho Chi Minh
Đoạn mã này dùng để sắp xếp theo text, không phải theo số. Nếu có lẫn các sheet vừa số vừa chữ thì nó sắp theo số trước, chữ sau. Chữ thì theo abc
 
S

SA_DQ

Thành viên Cố vấn - Webketoan Mentors
29/6/05
568
99
28
66
HCM city
Sẵn có rồi đó nha, chú í!

Thường thì Excel đã xếp sẵn; dù ta có đổi tên chăng nữa Excel &ũ như cẩn! cái trật tự mà nó tự cho rằng đúng; Nếu ta chịu khó thua nó thì xem như ta thắng (trong cái trật tự của Excel)
Trật tự này có thể xem trong menu Tool -> Macro -> Visual Basic Editor: Nó ở Broject Explorer VBAProject &ới ~ cái tên Sheet(ii).
:dzo:
 
Sửa lần cuối:
adam_tran

adam_tran

Guitar inspiration
17/5/05
1,374
36
48
46
Goooogle
Suggestion:
Bạn export toàn bộ sheet name ra list nằm ở sheet nào đó, đặt lại tên mới rồi import trở lại. Sau đó sort lại như hướng dẫn của bác workman.

Khi có sheet name được sort theo alphabet thì chỉ việc right click vào sheet navigator bar để di chuyển tới 1 sheet nào đó.
 
T

thangnm

Guest
27/7/05
40
0
0
hanoi
adam_tran nói:
Suggestion:
Bạn export toàn bộ sheet name ra list nằm ở sheet nào đó, đặt lại tên mới rồi import trở lại. Sau đó sort lại như hướng dẫn của bác workman.
bạn cho hỏi export ra bằng cách nào? :thinking:
 
W

workman

Guest
22/7/05
372
2
0
51
Ho Chi Minh
adam_tran nói:
Suggestion:
Bạn export toàn bộ sheet name ra list nằm ở sheet nào đó, đặt lại tên mới rồi import trở lại. Sau đó sort lại như hướng dẫn của bác workman.

Khi có sheet name được sort theo alphabet thì chỉ việc right click vào sheet navigator bar để di chuyển tới 1 sheet nào đó.
ơ cái tool của tôi là sort theo alphabet đấy chứ
 
Y

Yeudoi

Trung cấp
29/9/05
88
0
6
Hoi An Quang Nam
Mình biết trong Webketoan này có hình như trong tài nguyên mạng sao đó đợt trước mình định gửi nhưng không vào điễn đàng được nó rất hay.Nếu bạn cần đợt sau tôi sẽ gửi cho.Nhưng bạn phải đưa địa chỉ
 
anktdn

anktdn

Trung cấp
11/7/05
170
2
18
41
HCM
To thangnm :
Mình hiểu cách bạn làm là theo dõi các tài khoản(sỏ cái), nhưng bạn ah
E xcell đã làm được vấn đề này chỉ cần trên 1 sheet thôi , aøtheo dõi hết tất cả các tài khoản thù 111 cho đến 911. Trên hình thứC SỎ nkc . NẾU được thì mình sẽ chỉ dân cho bạn làm , và việc theo dõi TK se tiện hơn rất nhiều.
 
T

thangnm

Guest
27/7/05
40
0
0
hanoi
anktdn nói:
To thangnm :
Mình hiểu cách bạn làm là theo dõi các tài khoản(sỏ cái), nhưng bạn ah
E xcell đã làm được vấn đề này chỉ cần trên 1 sheet thôi , aøtheo dõi hết tất cả các tài khoản thù 111 cho đến 911. Trên hình thứC SỎ nkc . NẾU được thì mình sẽ chỉ dân cho bạn làm , và việc theo dõi TK se tiện hơn rất nhiều.
đúng là có thể chỉ cần làm ở trên 1 sheet, nhưng mình nghĩ, còn nhiều thứ nưa phải sử dụng đến các sheet khác nhau nên mình mới hỏi mà.
to workman: đoạn code của bạn chạy rất hay, mỗi tội mình mù tịt về VBA nên không hiểu hết các lệnh :biggrin:
 
T

thangnm

Guest
27/7/05
40
0
0
hanoi
Yeudoi nói:
Mình biết trong Webketoan này có hình như trong tài nguyên mạng sao đó đợt trước mình định gửi nhưng không vào điễn đàng được nó rất hay.Nếu bạn cần đợt sau tôi sẽ gửi cho.Nhưng bạn phải đưa địa chỉ
địa chỉ của minh ha?: thangnm72@gmail.com
 
T

thangnm

Guest
27/7/05
40
0
0
hanoi
workman nói:
Đăng ký vào lớp VBA của bác Duyệt ấy.
ừ, mình muốn học, nhưng không đủ tiền đi máy bay vào đó để học 5 buỏi rồi bay ra, :biggrin: . mình o HN mà.
 
Y

Yeudoi

Trung cấp
29/9/05
88
0
6
Hoi An Quang Nam
Mình gửi mọi người đoạn mã sắp xếp các sheet theo thứ tự ABC:

Sub SortSheets()
' This routine sorts the sheets of the
' active workbook in ascending order.

Dim SheetNames() As String
Dim i As Integer
Dim SheetCount As Integer
Dim VisibleWins As Integer
Dim Item As Object
Dim OldActive As Object

' Check for protected workbook structure
If ActiveWorkbook.ProtectStructure Then
MsgBox ActiveWorkbook.Name & " is protected.", _
vbCritical, "Cannot Sort Sheets"
Exit Sub
End If

' Disable Ctrl+Break
Application.EnableCancelKey = xlDisabled

' Exit if no windows are visible
VisibleWins = 0
For Each Item In Windows
If Item.Visible Then VisibleWins = VisibleWins + 1
Next Item
If VisibleWins = 0 Then Exit Sub

' Get the number of sheets
SheetCount = ActiveWorkbook.Sheets.Count

' Redimension the array
ReDim SheetNames(1 To SheetCount)

' Store a reference to the active sheet
Set OldActive = ActiveSheet

' Fill array with sheet names and hidden status
For i = 1 To SheetCount
SheetNames(i) = ActiveWorkbook.Sheets(i).Name
Next i

' Sort the array in ascending order
Call BubbleSort(SheetNames)

' Turn off screen updating
Application.ScreenUpdating = False

' Move the sheets
For i = 1 To SheetCount
ActiveWorkbook.Sheets(SheetNames(i)).Move _
ActiveWorkbook.Sheets(i)
Next i

' Reactivate the original active sheet
OldActive.Activate
End Sub



Sub BubbleSort(List() As String)
'‘ Sorts the List array in ascending order
Dim First As Integer, Last As Integer
Dim i As Integer, j As Integer
Dim Temp

First = LBound(List)
Last = UBound(List)
For i = First To Last - 1
For j = i + 1 To Last
If UCase(List(i)) > UCase(List(j)) Then
Temp = List(j)
List(j) = List(i)
List(i) = Temp
End If
Next j
Next i
End Sub
 

Xem nhiều

Webketoan Zalo OA