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

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

thangnm

Thành viên sơ cấp
27/7/05
40
0
0
hanoi
#1
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: .
 
W

workman

Thành viên sơ cấp
22/7/05
372
0
0
46
Ho Chi Minh
#2
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

Thành viên sơ cấp
27/7/05
40
0
0
hanoi
#3
ừ, 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

Thành viên sơ cấp
22/7/05
372
0
0
46
Ho Chi Minh
#4
Đ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 thân thiết
29/6/05
435
38
28
61
HCM city
#5
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

Steel Partner
17/5/05
1,373
32
48
41
Goooogle
#6
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

Thành viên sơ cấp
27/7/05
40
0
0
hanoi
#7
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

Thành viên sơ cấp
22/7/05
372
0
0
46
Ho Chi Minh
#8
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

Thành viên thân thiết
29/9/05
88
0
6
Hoi An Quang Nam
#9
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

Thành viên thân thiết
11/7/05
170
2
18
35
HCM
#10
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

Thành viên sơ cấp
27/7/05
40
0
0
hanoi
#12
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

Thành viên sơ cấp
27/7/05
40
0
0
hanoi
#13
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

Thành viên sơ cấp
27/7/05
40
0
0
hanoi
#15
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

Thành viên thân thiết
29/9/05
88
0
6
Hoi An Quang Nam
#16
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
 

Thành viên trực tuyến

Không có thành viên trực tuyến.

Xem nhiều