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

Thảo luận trong 'Ứng dụng Excel' bắt đầu bởi thangnm, 16 Tháng mười 2005.

8,095 lượt xem

  1. thangnm

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

    Bài viết:
    40
    Đã được thích:
    0
    Nơi ở:
    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: .
     
    #1
  2. workman

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

    Bài viết:
    372
    Đã được thích:
    0
    Nơi ở:
    Ho Chi Minh
    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/
     
    Last edited: 16 Tháng mười 2005
    #2
  3. thangnm

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

    Bài viết:
    40
    Đã được thích:
    0
    Nơi ở:
    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?
     
    #3
  4. workman

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

    Bài viết:
    372
    Đã được thích:
    0
    Nơi ở:
    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
     
    #4
  5. SA_DQ

    SA_DQ Thành viên thân thiết

    Bài viết:
    428
    Đã được thích:
    34
    Nơi ở:
    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:
     
    Last edited: 18 Tháng mười 2005
    #5
  6. adam_tran

    adam_tran Steel Partner

    Bài viết:
    1,373
    Đã được thích:
    32
    Nơi ở:
    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 đó.
     
    #6
  7. thangnm

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

    Bài viết:
    40
    Đã được thích:
    0
    Nơi ở:
    hanoi
    bạn cho hỏi export ra bằng cách nào? :thinking:
     
    #7
  8. workman

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

    Bài viết:
    372
    Đã được thích:
    0
    Nơi ở:
    Ho Chi Minh
    ơ cái tool của tôi là sort theo alphabet đấy chứ
     
    #8
  9. Yeudoi

    Yeudoi Thành viên thân thiết

    Bài viết:
    88
    Đã được thích:
    0
    Nơi ở:
    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ỉ
     
    #9
  10. anktdn

    anktdn Thành viên thân thiết

    Bài viết:
    170
    Đã được thích:
    2
    Nơi ở:
    HUE-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.
     
    #10
  11. anktdn

    anktdn Thành viên thân thiết

    Bài viết:
    170
    Đã được thích:
    2
    Nơi ở:
    HUE-HCM
    ah thêm nua và việc này kg phải cần VB .
     
    #11
  12. thangnm

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

    Bài viết:
    40
    Đã được thích:
    0
    Nơi ở:
    hanoi
    đú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:
     
    #12
  13. thangnm

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

    Bài viết:
    40
    Đã được thích:
    0
    Nơi ở:
    hanoi
    địa chỉ của minh ha?: thangnm72@gmail.com
     
    #13
  14. workman

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

    Bài viết:
    372
    Đã được thích:
    0
    Nơi ở:
    Ho Chi Minh
    Đăng ký vào lớp VBA của bác Duyệt ấy.
     
    #14
  15. thangnm

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

    Bài viết:
    40
    Đã được thích:
    0
    Nơi ở:
    hanoi
    ừ, 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à.
     
    #15
  16. Yeudoi

    Yeudoi Thành viên thân thiết

    Bài viết:
    88
    Đã được thích:
    0
    Nơi ở:
    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
     
    #16

Chia sẻ trang này