Hej. Du beskriver inte vad F- samt B-kolumnerna är tänkta att innehålla, men så som din kod är skriven nu så sorterar du på i första hand F-kolumnen i stigande ordning (d.v.s. minsta värdet överst), i andra hand B-kolumnen i stigande ordning. Jag ber om ursäkt för det slarvet, F innehåller: Ahaa, kan det vara så att det finns datuminformation i fälten, men som inte syns p.g.a. formateringen?Problem med en excell-uträkning för attackplan
Jag har fått problem med en attackplan som jag har byggt för ett spel.
Så här ser det ut ung.
C5 = atacktid
D5 = transporttid
E5 = Resultatet när man skall skicka trupperna för anfallet.
Det finns idag 122 städer där anfallen kan komma ifrån.
M.A.O.
Om anfallet skall ske kl. 01:30:00 och transporttiden är 01:22:53 så skall ju trupperna sändas 00:07:07
Koden ser ut så här:
=OM(ÄRTOM(D5);"";OM(D5>$C$4;$C$4-D5+24;$C$4-D5))
Därefter så har jag lagt in en knapp för att köra ett makro, vars uppgift det är att lägga den trupp som tar längst tid på sig övers, sedan näst längst tid osv.
Så här ser makrot ut:
Range("A5:G150").Select
ActiveWorkbook.Worksheets("Attack plan_2").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Attack plan_2").Sort.SortFields.Add Key:=Range( _
"F5:F150"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
ActiveWorkbook.Worksheets("Attack plan_2").Sort.SortFields.Add Key:=Range( _
"B5:B150"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("Attack plan_2").Sort
.SetRange Range("A5:G150")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Men här blir det fel, titta här:
......................D..............E..............F
Orrefors.......... 01:22:53 00:07:07 00:07:07
Boda .............. 01:17:30 00:12:30 00:12:30
Lessebo........... 01:14:36 00:15:24 00:15:24
Örsjö............... 01:12:53 00:17:07 00:17:07
Emmaboda.......00:59:40 00:30:20 00:30:20
Flygfors........... 00:39:58 00:50:02 00:50:02
Skruv............... 00:38:55 00:51:05 00:51:05
Beckebo...........00:32:07 00:57:53 00:57:53
Asa..................08:04:06 17:25:54 17:25:54
Jag misstänker att det är någonting med makrot som är galet, men vad?
Sv: Problem med en excell-uträkning för attackplan
Om du vill ha störst värde högst upp så behöver du ändra sorteringen till fallande ordning (d.v.s. Order:=xlDescending).Sv:Problem med en excell-uträkning för attackplan
=OM(C6="LS";E6-"00:00:30";OM(C6="CS";E6+"00:00:30";E6))
Alltså om det står LS(lightship) så skall den sändas 00:00:30 tidigare, står det CS så är det senare.
Jag har försökt att sortera xlDescending men det blir helt galet, då lägger sig de tomma posterna övers och de ifyllda underst.
Om du titta på min kopiering av resultatet så ser du att det börja med resultat som är efter midnatt, efter det så kommer resultaten som är innan midnat....
Orrefors 01:22:53 _____00:07:07_____ 00:07:07
Boda 01:17:30_____ 00:12:30_____ 00:12:30
Lessebo 01:14:36_____ 00:15:24_____ 00:15:24
Örsjö 01:12:53_____ 00:17:07_____ 00:17:07
Emmaboda 00:59:40_____ 00:30:20_____ 00:30:20
Flygfors 00:39:58_____ 00:50:02_____ 00:50:02
Skruv 00:38:55_____ 00:51:05_____ 00:51:05
Beckebo 00:32:07_____ 00:57:53_____ 00:57:53
Asa 08:04:06_____ 17:25:54_____ 17:25:54
Galtabeck 07:36:15_____ 17:53:45_____ 17:53:45
Evedahl 07:32:49_____ 17:57:11_____ 17:57:11
Stojby 07:14:12_____ 18:15:48_____ 18:15:48
... och det är där som felet ligger.
Sv: Problem med en excell-uträkning för attackplan
Det skulle i så fall förklara varför poster med ett sent klockslag kommer före poster med ett tidigare klockslag. För att skala bort eventuell datuminformation kan du t.ex. använda formeln =TIDVÄRDE(TEXT(A1:"tt:mm:ss")). TIDVÄRDE ger ett tal mellan 0 och 1 som är trevligt att räkna med/sortera på, och om du formaterar cellen som tid så kommer den visa ett klockslag.
Om du besväras av de tomma cellerna kanske du kan infoga en kolumn till som lagrar information om ifall truppen "ska förflyttas", och i så fall innehåller 1, annars 0 om truppen ej ska flyttas. Därefter ändrar du macrot så sorteringen sker i första hand på denna kolumn, därefter på kolumnen för starttid. På så sätt kan du styra över om de "tomma" posterna ska vara överst eller underst (genom att sätta xlAscending eller xlDescending sort order på den första kolumnen).