Bestemmelse sorteringskriterier

Antag, at en medarbejder giver du har et regneark, der har flere hundrede datarækker i 27 kolonner. Før du begynder at arbejde med dataene, kan du ønsker at vide, om det tidligere er blevet sorteret. Kendskab oplysningerne, kan ikke kun fjerne behovet for at ty data, men vil også give dig en idé om, hvad din kollega følte var den vigtigste måde at se på dataene.

Desværre er Excel ikke har en indbygget måde at bestemme sorteringskriterier, der anvendes til en række data. Du kunne teoretisk skrive en makro, der ville kontrollere hver kolonne og se om det var i stigende eller faldende rækkefølge. Dette vil fortælle dig, hvis det enkelt kolonne blev sorteret, men det betyder ikke nødvendigvis, at hele datatabel blev sorteret efter denne kolonne-det kunne bare være en tilfældighed, at kolonnen er sorteret orden, og den slags blev gjort af en anden kolonne. Opgaven med kontrol bliver endnu vanskeligere, når du begynder at overveje sekundære og tertiære slags.

Der er én ting, du kan prøve, men at afgøre, om en bestemt kolonne sorteres, og om det er sorteret i stigende eller faldende rækkefølge. (Husk: det vil ikke fortælle dig, hvis det særlige kolonne var den primære kolonne bruges til sortering, det vil kun fortælle dig, hvis kolonnen er sorteret.)

Ideen bag makroen er at kopiere indholdet af kolonnen til en midlertidig regneark, to gange. For eksempel, hvis du ønsker at tjekke ud kolonne F, den makro kopier kolonne F til kolonne A og B på den midlertidige regneark. Makroen sorterer derefter kolonne B i stigende rækkefølge og sammenligner det med kolonne A. Hvis de sorterede og usorterede kolonner er de samme, så den oprindelige kolonne var i stigende rækkefølge. Derefter kolonne B er sorteret i faldende rækkefølge og sammenligningen gjort igen. Igen, hvis søjlerne er ens så søjlen er i faldende rækkefølge.

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

»Identificer aktuelle kolonne og Current Sheet
CColumn = i
CSheet = ActiveSheet.Name
FlagSort = ""

»Tilføj et særligt ark til at teste for sortering
Sheets.Add
ActiveSheet.Name = "TempSort"

'Kopiér aktuelle kolonne til kolonne A, B i Current Sheet
Sheets (CSheet) .Select
Kolonner (CColumn) .Select
Selection.Copy

Vælg Sheets ("TempSort").
Range ("A1"). Vælg
ActiveSheet.Paste
Range ("B1"). Vælg
ActiveSheet.Paste
Application.CutCopyMode = False

»I Kolonne C test for ligestilling af Kolonner A / B
»Hvis Sum i C1 = 0 så OK ellers Col A <> Col ​​B
Range ("B2"). Vælg
Selection.End (xlDown) .Select
Bottom = ActiveCell.Row
Range (Cells (2, 3), celler (bund, 3)). Vælg
Selection.FormulaArray = "= IF (RC [-2] = RC [-1], 0,1)"
Range ("C1"). Vælg
ActiveCell.FormulaR1C1 = "= SUM (R [1] C: R [6535] C)"

'Sort Kolonne B - Stigende - Se om c1 = 0
Kolonner ("B: B") Vælg.
Selection.Sort Key1: = Range ("B2"), Order1: = xlDescending, _
Header: = xlYes, OrderCustom: = 1, MatchCase: = False, _
Orientering: = xlTopToBottom, DataOption1: = xlSortNormal
Hvis Cells (1, 3) .Value = 0, så FlagSort = "Stigende"

'Sort Kolonne B - Faldende - Se om c1 = 0
Kolonner ("B: B") Vælg.
Selection.Sort Key1: = Range ("B2"), Order1: = xlAscending, _
Header: = xlYes, OrderCustom: = 1, MatchCase: = False, _
Orientering: = xlTopToBottom, DataOption1: = xlSortNormal
Hvis Cells (1, 3) .Value = 0, så FlagSort = "Faldende"

Hvis FlagSort = "Stigende" Så
'Color Header på original ark gul
Sheets (CSheet) .Cells (1, CColumn) .Interior.ColorIndex = 36
End hvis

Hvis FlagSort = "Faldende" Så
'Color Header på original ark appelsin
Sheets (CSheet) .Cells (1, CColumn) .Interior.ColorIndex = 44
End hvis

'Slet midlertidige ark
Vælg Sheets ("TempSort").
ActiveWindow.SelectedSheets.Delete
End Sub

Når det er afgjort, om den oprindelige kolonne var i stigende eller faldende rækkefølge, så den første celle i den kolonne i den oprindelige regneark er indstillet til gul eller orange, henholdsvis. Endelig er den midlertidige regneark slettet.

Denne makro kan ændres, således at det blev kaldt en gang for hver kolonne i en datatabel. Kørsel af makro til en hel tabel ville ikke tage så lang tid, men ville give en farverig repræsentation, hvorvidt de enkelte kolonner sorteres i stigende eller faldende rækkefølge.

Selvfølgelig enhver makro som dette er ikke trivielt, så det kan bare være nemmere for dig at finde ud af, hvordan du vil sortere data, og derefter sortere det på den måde fra get-go.

ExcelTips er din kilde til omkostningseffektiv Microsoft Excel træning. Dette tip (2395) gælder for Microsoft Excel 97, 2000, 2002, og 2003.


© 2019 Zajacperrone.com | Contact us: webmaster# zajacperrone.com