Avatar billede martin_sj Nybegynder
09. juli 2010 - 10:21 Der er 6 kommentarer og
1 løsning

gruppering/formatering af rækker

Hej Eksperter

Jeg har et regneark der ser således ud (;= ny kolonne):

A;Txt1;dette er linie 1
A;Txt1;dette er linie 2
A;Txt2;dette er linie 1
B;Txt1;dette er linie 1
B;Txt1;dette er linie 2

Jeg vil gerne have lavet en knap, der formattere data med følgende resultat:

A;Txt1;dette er linie 1dette er linie 2
A;Txt2;dette er linie 1
B;Txt1;dette er linie 1dette er linie 2

Altså hvis række 1 og række 2 er ens i de to første kolonner så skal kolonne 3 for de 2 rækker slås sammen med Char(10).
altså (C3 & Char(10) & C4).

Kan nogen fortælle mig hvordan jeg koder det?

Mvh. Martin
Avatar billede supertekst Ekspert
09. juli 2010 - 12:53 #1
Er "kolonne 3" det maksimale?
Avatar billede martin_sj Nybegynder
09. juli 2010 - 13:19 #2
Der kommer flere kolonner, men i mit eksempel er der kun 3, men de ekstra kolonner der kommer vil altid være med det samme indhold.

Jeg skal bagefter gemme som CVS fil og kolonne 3 skal derfor gemmes som "dette er linie 1(her skal så være Char(10)dette er linie 2)
Avatar billede martin_sj Nybegynder
09. juli 2010 - 13:21 #3
Jeg kan lade kolonne 3 til altid at være sidste kolonne, så teksten altid bliver sidste kolonne i arket, altså kolonne 7 eller...
Avatar billede Thyge Nybegynder
14. juli 2010 - 11:04 #4
Hej Martin,

Jeg er ikke super stærk til programmering, men du kan evt. prøve nedenstående. Vær opmærksom på at hvis tre eller flere rækker er ens i første og anden kolonne vil den lægge dem alle samme på én linje, f.eks.:

A;Txt1;dette er linie 1
A;Txt1;dette er linie 2
A;Txt1;dette er linie 3
A;Txt2;dette er linie 1
B;Txt1;dette er linie 1
B;Txt1;dette er linie 2

vil komme til at se således ud:

A;Txt1;dette er linie 1dette er linie 2dette er linje3
A;Txt2;dette er linie 1
B;Txt1;dette er linie 1dette er linie 2

Her er funktionen:

Sub Test()

Application.ScreenUpdating = False

Dim c As Range

    Range("området i første kolonne").Select
    For Each c In Selection
    If c.Value = c.Offset(1, 0).Value And c.Offset(0, 1).Value = c.Offset(1, 1).Value Then
        c.Offset(1, 2).Value = c.Offset(0, 2).Value & Chr(10) & c.Offset(1, 2).Value
        c.EntireRow.Delete
    End If
    Next

Application.ScreenUpdating = True

End Sub
Avatar billede martin_sj Nybegynder
14. juli 2010 - 13:19 #5
Hej C_Thyge

Jeg kan ikke helt få din kode til at virke, den ligger ikke koden sammen, men tager bare den sidste tekst.
Kan jeg sende et eksempel til dig?

msj@missionpharma.com

Mvh. Martin
Avatar billede martin_sj Nybegynder
15. juli 2010 - 13:46 #6
Tak for indsatsen det virker nu som det skal
Se kode her:

Send svar så får du point!

Sub Test_Makro()

Application.ScreenUpdating = False

Dim c As Range

    Range("D2:D100").Select
    For Each c In Selection
    If c.Value = "" Then
        c.ClearContents
    ElseIf c.Offset(0, 3).Value = c.Offset(1, 3).Value Then
        c.Value = c.Value & Chr(10) & c.Offset(1, 0).Value
        c.Offset(1, 0).EntireRow.Delete
    End If
    Next

Application.ScreenUpdating = True

End Sub
Avatar billede Thyge Nybegynder
15. juli 2010 - 13:53 #7
Svar :)
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
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

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