12. februar 2008 - 20:20Der er
15 kommentarer og 1 løsning
samle data uden huller i én kolonne
Hey...
Jeg har en række beregnet data i en kolonne, hvor det variere om der står noget i den enkelte række efter nogle bruger inddaterede parametre - håber det er forståeligt, ellers bare sig til!
Mit problem er så, at jeg gerne vil have data'erne fra kolonne A over i kolonne B uden de mellemrum der kan være i data'erne? Og i kolonne C skal data'erne være sorteret efter største tal øverst.
Der skal nok laves kode til dette, da tingene kan variere fra gang til gang.
I lang tid har samarbejdsbranchen fokuseret på at forbedre enhedsfunktioner – bedre kameraer, klarere lyd og smartere software. Men den virkelige forvandling handler ikke om funktioner.
Sub test3() Dim resultat() Dim rng As Range Dim rngC As Range Dim x As Long
Set rng = Range("A1:A" & Range("A65536").End(xlUp).Row) ReDim resultat(rng.Cells.Count, 1) For Each rngC In rng If Not IsEmpty(rngC) Then x = x + 1 resultat(x, 1) = rngC End If Next Range("B1").Resize(x, 1) = resultat Range("C1").Resize(x, 1) = resultat Range("C1").Resize(x, 1).Sort Key1:=Range("C1"), Order1:=xlDescending, Header:=xlYes, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ DataOption1:=xlSortNormal End Sub
Jeg har leget lidt med det og sat det ind sådan her:
Private Sub CommandButton2_Click() Calculate
Dim resultat() Dim rng As Range Dim rngC As Range Dim x As Long
Set rng = Range("I2:I" & Range("I65536").End(xlUp).Row) ReDim resultat(rng.Cells.Count, 1) For Each rngC In rng If Not IsEmpty(rngC) Then x = x + 1 resultat(x, 1) = rngC End If Next Range("J2").Resize(x, 1) = resultat Range("K2").Resize(x, 1) = resultat Range("K2").Resize(x, 1).Sort Key1:=Range("K2"), Order1:=xlDescending, Header:=xlYes, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ DataOption1:=xlSortNormal End Sub
Ved ikke helt om det kan stå sammen med "Calculate"?
Når jeg trykker på knappen, så får den ikke fjernet de tomme rækker i J-kolonnen? Men den får fint sorteret dem alle i kolonne K.
mange tak for det bak....det var lige hvad jeg manglede :-)
Så mangler jeg bare lige et par små ting. - Vil gerne at den får slettet hele kolonnen, da antallet af værdier kan være forskellige. Så der ikke forekommer gamle værdier fra en tidligere beregning? - Også er der et eller andet galt med den sidste i rækken, den bliver ikke sorteret rigtigt i kolonne K. Dvs. den sidste værdi er større end de forrige?
Private Sub CommandButton2_Click() Dim resultat() Dim rng As Range Dim rngC As Range Dim x As Long
Set rng = Range("I2:I" & Range("I65536").End(xlUp).Row) Range("J2:K65536").ClearContents ReDim resultat(1 To rng.Cells.Count, 1 To 2) For Each rngC In rng If Not rngC.Value = "" Then x = x + 1 resultat(x, 1) = rngC End If Next Range("J2").Resize(x, 1) = resultat Range("K2").Resize(x, 1) = resultat Range("K:K").Sort Key1:=Range("K1"), Order1:=xlDescending, Header:=xlYes, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ DataOption1:=xlSortNormal End Sub
jeg tror helt sikkert at den sorterer korrekt. Prøv lige at undersøge den sidste celle og se om der ikke skulle være et mellemrum foran værdi. Mellemrum kommer nemlig før A i sortering
Jeg har lige tjekket igen....og den gør ingen ting ved den sidste række.
Og jeg kan slet ikke se at der skulle være noget galt med tallet. Det giver samme resultat hvis beregningerne bliver lavet om til andre tal, så er det stadig den nederste den ikke sortere korrekt.
Har du prøvet at sætte din kode ind i et excel ark?
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.