Forfatter |
Emne Søg Emne funktioner
|
Usuk
Forum Begynder
Medlem: 13.Apr.2016
Status: Offline
Point: 18
|
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?
|
 |
|
|
 |
excelent
Guld bruger
Medlem: 12.Apr.2011
Land: DK
Status: Offline
Point: 2171
|
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 !!!
|
 |
Usuk
Forum Begynder
Medlem: 13.Apr.2016
Status: Offline
Point: 18
|
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.
|
 |
excelent
Guld bruger
Medlem: 12.Apr.2011
Land: DK
Status: Offline
Point: 2171
|
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 !!!
|
 |
excelent
Guld bruger
Medlem: 12.Apr.2011
Land: DK
Status: Offline
Point: 2171
|
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 !!!
|
 |
Usuk
Forum Begynder
Medlem: 13.Apr.2016
Status: Offline
Point: 18
|
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! :)
|
 |
excelent
Guld bruger
Medlem: 12.Apr.2011
Land: DK
Status: Offline
Point: 2171
|
Sendt: 15.Apr.2016 kl. 18:45 |
velbekom
|
Jeg anvender Excel 2016 DK. Hvad anvender DU ? HUSK TILBAGEMELDING !!!
|
 |