Dansk Regneark Forum
  Hjælp Hjælp  Søg i forum   Arrangementer   Opret ny bruger Opret ny bruger  Log ind Log ind


Emne lukketTransponer række til kolonne baseret på tekst

 Besvar Besvar
Forfatter
Usuk Se dropdown
Forum Begynder
Forum Begynder


Medlem: 13.Apr.2016
Status: Offline
Point: 18
Direkte link til dette indlæg Emne: Transponer række til kolonne baseret på tekst
    Sendt: 13.Apr.2016 kl. 17:18
Kære Dansk Regneark Forum,

Jeg er drøn spændt på, om I kan hjælpe mig med et lille problem.

Jeg har en bunke data, som alt sammen står i samme kolonne. Dette vil jeg gerne have splittet ud i flere kolonner og en ny række skal startes, hver gang, der kommer en bestemt linje tekst. Nemmeste måde at beskrive det på er sikkert med et eksempel, så det får i her:


<START>
Højde = 10
Længde = 15
Vægt = 14
<SLUT>
<START>
Højde = 4
Længde = 3
Vægt = 2
<SLUT>

Skal gerne blive til:

<START>  Højde = 10    Længde = 15   Vægt = 14   <SLUT>
<START>  Højde = 4      Længde = 3     Vægt = 2     <SLUT>

Jeg har forsøgt mig med funktionerne Transponer og Sammenlign, men har ikke fået det til at spille.

Nogen der har en idé til at løse problemet?
Til top



Til top
excelent Se dropdown
Guld bruger
Guld bruger
Avatar

Medlem: 12.Apr.2011
Land: DK
Status: Offline
Point: 2171
Direkte link til dette indlæg Sendt: 13.Apr.2016 kl. 18:55
Hvis du har dine data i A2 og ned :

Indsæt følgende formler

B2==HVIS(VENSTRE($A2;3)="<ST";$A2;#I/T)
C2==HVIS(VENSTRE($A2;3)="Høj";$A2;#I/T)
D2==HVIS(VENSTRE($A2;3)="Læn";$A2;#I/T)
E2==HVIS(VENSTRE($A2;3)="Væg";$A2;#I/T)
F2==HVIS(VENSTRE($A2;3)="<SL";$A2;#I/T)

Marker B2:F2 og kopier ned med fyldhåndtag

Tast F5 og vælg Speciel...
Prik i "Formler"
Fjern flueben i Tal, Tekst og Logiske (kun flueben i Fejl)
Klik OK

Højreklik et sted i markering
Vælg Slet
Sæt prik i "Ryk celler opad"
Klik OK

Jeg anvender Excel 2016 DK. Hvad anvender DU ? HUSK TILBAGEMELDING !!!
Til top
Usuk Se dropdown
Forum Begynder
Forum Begynder


Medlem: 13.Apr.2016
Status: Offline
Point: 18
Direkte link til dette indlæg Sendt: 14.Apr.2016 kl. 09:07
Hej Excelent,

Tak for svaret, og jeg burde nok have været mere udførlig i min beskrivelse af problemet og valgt et eksempel, som er tættere på de data jeg sidder med.

Der kan være flere forskellige slags data mellem <Start> og <Slut>, der er heller ikke det samme antal rækker mellem hver <Start> og <Slut>. Prøver lige igen med et eksempel

<Start>
xyz=12343535
zyx=3204202
yxz=hej_matematik
abcd=20303
<Slut>
<Start>
t=203049
acd=eksempel
STOP
<Slut>

skal blive til:

<Start>      xyz=12343535      zyx=3204202      yxz=hej_matematik      abcd=20303      <Slut>
<Start>      t=203049              acd=eksempel     STOP                             <Slut>

Sagt med andre ord. Excel skal tage alt mellem den første <Start> og første <Slut> og putte i første række. Den skal så tage alt mellem den anden <Start> og anden <Slut> og smide på anden række. Dette skal den gøre over data givet i en kolonne, som har godt 1 mio. rækker. Altså fra A1:A1400000. Der er flere tusinde <Start> og <Slut> entries, men <Start> er altid efterfulgt af en <Slut>, og <Start> kommer altid lige efter en <Slut>.

Håber det giver mening.
Til top
excelent Se dropdown
Guld bruger
Guld bruger
Avatar

Medlem: 12.Apr.2011
Land: DK
Status: Offline
Point: 2171
Direkte link til dette indlæg Sendt: 14.Apr.2016 kl. 19:21
Prøv denne makro :

Sub xSplit()

splitKol = 1 ' 1= kolonne A hvor dine data er  (*** RET TIL AKTUEL ***)
tilKol = 2 ' 2=kolonne B hvor data flyttes til (*** RET TIL AKTUEL ***)
lastRow = Cells(1048000, splitKol).End(xlUp).Row ' sidste celle med data
nRk = 2

Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False

For t = 1 To lastRow
Cells(nRk, Cells(nRk, 255).End(xlToLeft).Column + 1) = Cells(t, splitKol)
If Cells(t, splitKol) = "<Slut>" Then nRk = nRk + 1
Next

Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic

End Sub

Jeg anvender Excel 2016 DK. Hvad anvender DU ? HUSK TILBAGEMELDING !!!
Til top
excelent Se dropdown
Guld bruger
Guld bruger
Avatar

Medlem: 12.Apr.2011
Land: DK
Status: Offline
Point: 2171
Direkte link til dette indlæg Sendt: 14.Apr.2016 kl. 19:34
rettese :

Sub xSplit()

splitKol = 1 ' 1= kolonne A hvor dine data er  (*** RET TIL AKTUEL ***)
tilKol = 5 ' 2=kolonne B hvor data flyttes til (*** RET TIL AKTUEL ***)
lastRow = Cells(1048000, splitKol).End(xlUp).Row ' sidste celle med data
nRk = 2

Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False

For t = 1 To lastRow
kol = Application.WorksheetFunction.Max(tilKol, Cells(nRk, 255).End(xlToLeft).Column + 1)
Cells(nRk, kol) = Cells(t, splitKol)
If Cells(t, splitKol) = "<Slut>" Then nRk = nRk + 1
Next

Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic

End Sub
Jeg anvender Excel 2016 DK. Hvad anvender DU ? HUSK TILBAGEMELDING !!!
Til top
Usuk Se dropdown
Forum Begynder
Forum Begynder


Medlem: 13.Apr.2016
Status: Offline
Point: 18
Direkte link til dette indlæg Sendt: 15.Apr.2016 kl. 15:40
Du er for vild excelent! Det spillede 1000%! 102043 rækker med data blev til 1415 rækker i løbet af ca. 30 sekunder :)

Det er fornemt! Mange tusinde tak! :)
Til top
excelent Se dropdown
Guld bruger
Guld bruger
Avatar

Medlem: 12.Apr.2011
Land: DK
Status: Offline
Point: 2171
Direkte link til dette indlæg Sendt: 15.Apr.2016 kl. 18:45
velbekom
Jeg anvender Excel 2016 DK. Hvad anvender DU ? HUSK TILBAGEMELDING !!!
Til top
 Besvar Besvar

Skift forum Forum tilladelser Se dropdown

© 2010 - 2024 Dansk Regneark Forum - en del af Excel-regneark.dk