| Jak posortować arkusze według zawartości danej komórki? |
|
Problem: W pliku mam 10 arkuszy z imionami swoich sprzedawców. Arkusze mają taką samą strukturę i zawierają dane dotyczące planu, wykonania i odchylenia od sprzedaży. Chciałbym posortować te arkusze według najlepszych sprzedawców (kryterium jest % odchylenia od planu). Chciałbym dodatkowo wyróżnić tych, którzy sprzedają powyżej i poniżej planu. Rozwiązanie: Możesz skorzystać np. z takiego makra: Option Explicit Sub SortowanieArkuszy() Dim wksArkusz As Excel.Worksheet Dim rngZakres As Excel.Range Dim iLiczbaArkuszy As Integer Dim iLicznik As Integer 'Zliczenie liczby arkuszy w skoroszycie 'dodanie pomocniczego arkusza sortujacego dane With ThisWorkbook iLiczbaArkuszy = .Worksheets.Count Set wksArkusz = .Worksheets.Add(After:=.Worksheets(.Worksheets.Count)) wksArkusz.Name = "TEMP" Application.ScreenUpdating = False 'Skopiowanie nazwy arkusza i danych do tymczasowego arkusza With wksArkusz For iLicznik = 1 To iLiczbaArkuszy .Range("A" & iLicznik) = Worksheets(iLicznik).Name .Range("B" & iLicznik) = Worksheets(iLicznik).Range("C4") Next iLicznik 'Sortowanie nowo powstalej tabeli z danymi Set rngZakres = .Range("A1").CurrentRegion rngZakres.Sort Key1:=.Range("B1"), Order1:=xlDescending, Header:=xlNo End With 'Przesuwanie arkuszy With wksArkusz For iLicznik = 1 To iLiczbaArkuszy Worksheets(.Range("A" & iLicznik).Value).Move Before:=Worksheets(iLicznik) Next iLicznik End With 'Dodanie kolorów dla zakladek For iLicznik = 1 To iLiczbaArkuszy Select Case Worksheets(iLicznik).Range("C4").Value Case Is > 0: Worksheets(iLicznik).Tab.ColorIndex = 43 Case Is < 0: Worksheets(iLicznik).Tab.ColorIndex = 53 Case Is = 0: Worksheets(iLicznik).Tab.ColorIndex = 23 End Select Next iLicznik 'Skasowanie arkusza tymczasowego With Application .DisplayAlerts = False wksArkusz.Delete .DisplayAlerts = True .ScreenUpdating = True End With End With End Sub |
|
| Zmieniony ( Środa, 30. Czerwiec 2010 14:15 ) |