Avatar billede daki Juniormester
26. oktober 2005 - 15:57 Der er 30 kommentarer og
1 løsning

sortering af rækker

I et regneark, har jeg et skema som fra gang til gang består af xx-antal rækker.
Disse rækker er opdelt således, at en grupper starter med en tekst som begynder med et tal eks. 100 og er med fedskrift.
I mellem disse linier forefindes der så xx-antal rækker, som ønskes sorteret på kolonne G (tal - største øverst).
Avatar billede beanbag Nybegynder
27. oktober 2005 - 09:17 #1
Jeg vil tro at der kan strikkes en løsning sammen vhja. en if-sætning der beregner en klassificering pr. linie der efterfølgende kan sorteres på. Dog skal der formentlig efterfølgende laves copy/paste values inden sortering, plus der skal tages højde for at overskriften som udgangspunkt vil blive sorteret ned i bunden af gruppen hvis du sorterer højeste beløb øverst.

Dette vil formentlig kunnes løses med lidt VBA og måske en ekstra hjælpekolonne, men inden så ville jeg lige høre hvor mange data vi snakker om, så vi ikke laver total overkill på noget der kan klares med 5 manuelle sorteringer.
Avatar billede daki Juniormester
27. oktober 2005 - 09:26 #2
Det lyder interessant. Hvis overskriften (total linien) kommer nederst vil det også forbedre det en hel del.
Skemaet består af 30 grupper nogen gange mindre andre gange flere.
Avatar billede beanbag Nybegynder
27. oktober 2005 - 09:46 #3
Hvordan ser de forskellige liner ud? totallinie og datalinier?
Avatar billede daki Juniormester
27. oktober 2005 - 10:06 #4
Altså,
Skemaet dækker kolonne A-V.
Kolonne A = Tekst, Kolonne B-V = Tal. (Der skal sorteres efter kolonne V)
Der Startes i Celle A5 med teksten 100 og sluttes i A? med teksten Total.

Det er sådan at efter 100 kommer det xx-antal linier med navne og på et tidspunkt kommer så teksten 200 osv.
Avatar billede beanbag Nybegynder
27. oktober 2005 - 10:56 #5
Ok, prøv først at sætte følgede formel ind:

=IF(ISERROR(VALUE(LEFT(B5;3)));A4;VALUE(LEFT(B5;3)))

Indsæt en ny kolonne A og kopier formel ind i A5.
Træk ned til bunden af tabellen
Copy/paste value på hele kolonne A
Sorter på kolonne A primært og kolonne W (tidligere V) sekundært

Hvis det virker efter hensigten, skulle kolonne A giver dig en "overskrift" til hver linie. Det kræver at de 3 første karakterer i datalinierne ikke er tal.

Hvis det virker kan vi arbejde på at automatisere processen i VBA.
Avatar billede daki Juniormester
27. oktober 2005 - 11:13 #6
Der har vi et problem, datalinier starter med 6 cifre eks. 101252.
Start linien begynder med 100 grp., 200 grp. osv.
Avatar billede beanbag Nybegynder
27. oktober 2005 - 11:31 #7
Kan vi gå ud fra at datalinier altid ligger mellem overskriftsliner, altså at mellem 100 og 200 overskrifterne er der kun linier der hedder noget med 1xx.xxx?
Avatar billede daki Juniormester
27. oktober 2005 - 11:34 #8
Det kan vi godt - altså: 1xxxxx
Avatar billede beanbag Nybegynder
27. oktober 2005 - 11:34 #9
I så fald kan formlen i kolonne A fx istedet være:

=left(B5;1)

så burde du få en klassificering i 9 grupper, men det kræver at dine grupper kun går fra 100-900?
Avatar billede daki Juniormester
27. oktober 2005 - 11:44 #10
Jeg ændrede til =left(b5;2), kan godt være en grp. 210 og 250 og 460 samt 470 osv. og grupper er mellem 100-999.
Avatar billede beanbag Nybegynder
27. oktober 2005 - 12:03 #11
Ok og så funker det?
Avatar billede daki Juniormester
27. oktober 2005 - 14:23 #12
Når jeg indsætter en ny kolonne A.
Indsætter formlen =HVIS(ER.FEJL(VÆRDI(VENSTRE(B4;2)));A4;VÆRDI(VENSTRE(B4;2))) og kopier denne nedad, står der 10 i alle rækker pånær de rækker hvor der er en ny gruppe starter, hvor der så står de 2 føreste cifre for den enkelte gruppe.

Altså:
arket starter i B4 med teksten '100 grp.', i B20 kommer '180 grp.' og i B25 kommer '260 grp.'  i celle A4-A19 står der '10', i Celle 'A20' står der '18', i celle A21-A24 står der '10' og i celle A25 står der '26' osv.
Avatar billede beanbag Nybegynder
27. oktober 2005 - 15:17 #13
Den formel du sætter ind i celle A5 og kopierer ned skal være:
=HVIS(ER.FEJL(VÆRDI(VENSTRE(B5;2)));A4;VÆRDI(VENSTRE(B5;2)))

hvad står der i celle B21?
Avatar billede daki Juniormester
27. oktober 2005 - 15:34 #14
OK, kan se hvordan formlen fungere.
Jeg skal se, om jeg kan forklarer det bedre :-)

I B4 = "100 grp. - 'gruppenavn'"
I B5 - B19 = "Lev.nr. - lev.navn" (lev.nr. består af 6 cifre startende med 10xxxx)
I B20 = "180 grp. - 'gruppenavn'"
I B21 - B24 = "Lev.nr. - lev.navn"

osv.
Avatar billede beanbag Nybegynder
27. oktober 2005 - 15:48 #15
Hvad står der specifikt i celle B21?

Jeg prøver at finde ud af hvorfor formlen i A21 returnerer værdien 10?
Det burde den kun kunne gøre hvis der i B21 står fx. "101565 Jens Larsen".
Fordi i celle B20 står der "180 grp. - Skruer og stumper", og formlen i celle A20 returnerer værdien "18" og eftersom formlen i A21 kun har 2 muligheder:
- enten at returnere de første to karakterer i B21 hvis de er numeriske
- eller at returnere værdien fra A20 som er 18
må det betyde at der i celle B21 står fx. "101565 Jens Larsen", og hvis der gør det fungerer formlen ikke, fordi den er baseret på at der skal stå de samme to cifre som i gruppeoverskriften.
Avatar billede daki Juniormester
27. oktober 2005 - 16:02 #16
Alle lev.nr. begynder med 10 og er på 6 cifre.
eks.
B5 = 100025 - INWOOD
B15 = 102152 - STORA
B21 = 100637 - BE
B55 = 101105 - JOEL
osv.
Avatar billede beanbag Nybegynder
27. oktober 2005 - 17:34 #17
Ok, det havde jeg fanget anderledes.
Dvs. de 3 første cifre kan godt være det samme for f.eks. "100 grp." og "100637 - BE".
Kan vi antage at alle overskrifter indeholder "grp." som karakter 5-8? Så kan vi foretage klassificeringen på baggrund af disse istedet. Hvis dette ikke er tilfældet, er du nødt til at fortælle mig hvordan overskrifterne adskiller sig fra datalinierne (Det skal være konsekvent hele vejen ned)

=HVIS(MIDT(B5;5;4)="grp.";VENSTRE(B5;2);A4)

Jeg tror det hedder MIDT på dansk men jeg ved det ikke?
Avatar billede daki Juniormester
28. oktober 2005 - 08:58 #18
Nu står der 10 - 18 - 26 osv. i kolonne A udfor de tilsvarende rækker.
Avatar billede beanbag Nybegynder
28. oktober 2005 - 10:11 #19
Ok, så Copy / Paste Values - og du er klar til at sortere...
Avatar billede daki Juniormester
28. oktober 2005 - 11:08 #20
Øøøhhh, copy paste er foretaget.
Men vil du have, jeg skal sortere manuelt eller hvad ??
Avatar billede beanbag Nybegynder
28. oktober 2005 - 11:10 #21
Ja, det ville da være rart at se om det har den ønskede virkning - det er jo gået lidt trægt indtil nu.. :o)
Avatar billede daki Juniormester
28. oktober 2005 - 11:30 #22
Når jeg vælger sorter på kolonne A (stigende) med kolonne V (faldende), sorteres der godt nok, men total forbliver øverst da denne er størst (ikke vigtigt at det står nederst)
Avatar billede beanbag Nybegynder
28. oktober 2005 - 11:36 #23
Ok, så det funker?
Skal du bruge det tilstrækkeligt ofte, til at det er nødvendigt med en makro.
Avatar billede daki Juniormester
28. oktober 2005 - 11:39 #24
Ja, der skal genereres et nyt ark hver uge........
Avatar billede daki Juniormester
28. oktober 2005 - 11:44 #25
Og det er ikke altid mig, som skal lave regnearket.
Derfor vil det være rart at så meget som muligt er automatiseret :-)
Avatar billede beanbag Nybegynder
28. oktober 2005 - 14:30 #26
Jeg forsøger at strikke en VBA løsning sammen, men er løbet ind i lidt problemer (er ikke den største VBA haj), du må lige væbne dig med tålmod (læs: det bliver ikke idag)
Avatar billede daki Juniormester
28. oktober 2005 - 14:59 #27
Bare iorden, skal først bruges mandag/tirsdag.
Avatar billede daki Juniormester
28. oktober 2005 - 16:18 #28
Det er ikke fordi jeg tro du kan, men jeg er kommet så langt selv.

Range("A5").Select
Selection.EntireColumn.Insert
Columns("A:A").Select
Selection.Font.ColorIndex = 2
Selection.ColumnWidth = 0.5
Range("A5").Select
ActiveCell.FormulaR1C1 = "=(IF(MID(RC[1],5,4)=""grp."",LEFT(RC[1],3),R[-1]C))*1"

Det der så mangler, er at finde sidste celle i kolonne A og kopier formlen ned af. Derefter at markere skemaet fra A5 til Q?? og sortere på A-stigende og Q-faldende.

Sidste celle i B indeholder teksten Total.
Så det må være noget med - find teksten total i celle B? kopiere A5 til A6:A?, markere skema A5:Q?, sortere på kolonne A´-stigende og kolonne Q-faldende.

Men lige hvordan? :-)
Avatar billede daki Juniormester
28. oktober 2005 - 20:00 #29
Ved at prøve mig frem med 'indspil macro' og se på andre macro'er som folk har lavet til mig, har jeg fået strikket nedenstående sammen og det giver mig det resultat jeg gerne vil have.

Dim rgTotal As Range
Set rgTotal = Range("A1:A65536").Find(What:="TOTAL")
Range("O:Q").Select
Selection.Columns.AutoFit
Range("A5").Select
Selection.EntireColumn.Insert
Columns("A:A").Select
Selection.Font.ColorIndex = 2
Selection.ColumnWidth = 0.5
Range("A5").Select
ActiveCell.FormulaR1C1 = "=(IF(MID(RC[1],5,4)=""grp."",LEFT(RC[1],3),R[-1]C))*1"
Selection.Copy
Range("A6:A" & rgTotal.Row - 1).Select
ActiveSheet.Paste
Range("A5:Q" & rgTotal.Row - 1).Select
Selection.Sort Key1:=Range("A5"), Order1:=xlAscending, Key2:=Range("Q5") _
, Order2:=xlDescending, Header:=xlNo, OrderCustom:=1, MatchCase:=False _
, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2:= _
xlSortNormal

Det kan sikkert laves meget bedre, men det er godt til mig :-)

beanbag smid et svar, så du kan få nogle points for din hjælp.
Avatar billede beanbag Nybegynder
31. oktober 2005 - 10:08 #30
VBA haj :o)
Jeg rodede med noget ActiveCell.CurrentArray.Select - men kunne ikke rigtig få det til at gøre som jeg ville. Så det er jo fint at du selv tog affære..
Avatar billede daki Juniormester
31. oktober 2005 - 10:37 #31
:-)
Her er dine points.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester