Bestemme sorteringskriterier

September 11  by Eliza

Anta at en medarbeider gir du har et regneark som har flere hundre rader med data i 27 kolonner. Før du begynner å arbeide med data, kan det være lurt å vite om det tidligere har blitt sortert. Kjenne informasjonen kan ikke bare fjerne behovet for å ty til data, men vil også gi deg en idé om hva kollegaen følte var den viktigste måten å se på dataene.

Dessverre, ikke Excel ikke har en innebygd måte å bestemme sorteringskriterium brukes for en rekke data. Du kan i teorien skrive en makro som ville sjekke hver kolonne og se om det var i stigende eller synkende rekkefølge. Dette vil fortelle deg om det enkelt kolonne ble sortert, men det betyr ikke nødvendigvis at hele datatabellen ble sortert etter at kolonnen-det kan bare være tilfeldig at kolonnen er i sortert rekkefølge, og den slags ble gjort av noen andre kolonne. Oppgaven med å sjekke blir enda mer komplisert når du begynner vurderer sekundære og tertiære former.

Det er en ting du kan prøve, men å finne ut om en bestemt kolonne er sortert og om det er sortert i stigende eller synkende rekkefølge. (Husk: dette vil ikke fortelle deg om den aktuelle kolonnen var den primære kolonne brukes til sortering, det vil bare fortelle deg om kolonnen er sortert.)

Ideen bak makro er å kopiere innholdet i kolonnen til en midlertidig regneark, to ganger. For eksempel, hvis du ønsker å sjekke ut kolonne F, den makro kopier kolonne F til kolonnene A og B på den midlertidige arbeidsarket. Makroen sorterer deretter kolonne B i stigende rekkefølge og sammenligner det til kolonne A. Hvis de sorterte og usorterte kolonnene er det samme, så den opprinnelige kolonnen var i stigende rekkefølge. Deretter kolonne B er sortert i synkende rekkefølge, og sammenligningen gjøres på nytt. Igjen, hvis kolonnene er lik da kolonnen er i synkende rekkefølge.

Sub TestIfSorted (i)
Dim CColumn som Number
Dim CSheet som String
Dim FlagSort som String

«Identifiser Nåværende Column og nåværende ark
CColumn = i
CSheet = ActiveSheet.Name
FlagSort = ""

Legg til en midlertidig ark for å teste for sortering
Sheets.Add
ActiveSheet.Name = "TempSort"

"Copy NÅVÆRENDE kolonne til kolonner A, B i nåværende ark
Ark (CSheet) .Velg
Kolonner (CColumn) .Velg
Selection.Copy

Sheets ("TempSort"). Velg
Range ("A1"). Velg
ActiveSheet.Paste
Range ("B1"). Velg
ActiveSheet.Paste
Application.CutCopyMode = False

'I kolonne C test for likestilling av Columns A / B
«Hvis Sum i C1 = 0 deretter OK ellers Col A <> Col ​​B
Range ("B2"). Velg
Selection.End (xlDown) .Velg
Under = ActiveCell.Row
Range (Cells (2, 3), Cells (Bottom, 3)). Velg
Selection.FormulaArray = "= IF (RC [-2] = RC [-1], 0,1)"
Range ("C1"). Velg
ActiveCell.FormulaR1C1 = "= SUM (R [1] C: R [6535] C)"

'Slags kolonne B - Stigende - Se om c1 = 0
Kolonner ("B: B") Velg.
Selection.Sort Key1: = Range ("B2"), bestilling1: = xlDescending, _
Header: = xlYes, OrderCustom: = 1, MatchCase: = False, _
Orientering: = xlTopToBottom, DataOption1: = xlSortNormal
Hvis celler (1, 3) .Value = 0 Deretter FlagSort = "stigende"

'Slags kolonne B - Synkende - Se om c1 = 0
Kolonner ("B: B") Velg.
Selection.Sort Key1: = Range ("B2"), bestilling1: = xlAscending, _
Header: = xlYes, OrderCustom: = 1, MatchCase: = False, _
Orientering: = xlTopToBottom, DataOption1: = xlSortNormal
Hvis Cells (1, 3) .Value = 0 Then FlagSort = "Synkende"

Hvis FlagSort = "Stigende" Da
'Color Header på originale ark gul
Ark (CSheet) .Cells (1, CColumn) .Interior.ColorIndex = 36
End If

Hvis FlagSort = "synkende" Da
'Color Header på originale ark oransje
Ark (CSheet) .Cells (1, CColumn) .Interior.ColorIndex = 44
End If

'Slett midlertidig ark
Sheets ("TempSort"). Velg
ActiveWindow.SelectedSheets.Delete
End Sub

Når det bestemmes hvorvidt den opprinnelige kolonnen var i stigende eller synkende rekkefølge, og deretter den første cellen i kolonnen i den opprinnelige regnearket er satt til gul eller orange, respektivt. Til slutt blir den midlertidige arket slettet.

Denne makro kan bli modifisert slik at det ble kalt en gang for hver kolonne i en datatabell. Kjører makroen for en hel tabell ville ikke ta så lang tid, men vil gi en fargerik fremstilling om hvorvidt individuelle kolonner er sortert i stigende eller synkende rekkefølge.

Selvfølgelig, er enhver makro som dette ikke trivielt, så det kan bare være lettere for deg å finne ut hvordan du vil sortere dataene, og deretter sortere det på den måten fra get-go.

ExcelTips er din kilde for kostnadseffektiv Microsoft Excel trening. Dette tipset (2395) gjelder for Microsoft Excel 97, 2000, 2002, og 2003.