Avatar billede henriklarsen Nybegynder
22. maj 2003 - 11:45 Der er 6 kommentarer og
1 løsning

"avanceret transponering"

Jeg har nogle tankdata arrangeret i 6*3 kolonner.
Hver række indeholder 6 ens oplysninger om 3 forskellige tanke. Jeg har ca 800 rækker.
Jeg vil gerne have data arrangeret således, at der bliver 6 kolonner, og at data på de 3 tanke kommer til at stå under hinanden - altså 3 rækker med hver 6 oplysninger.
Er det muligt?
På forhånd tak for hjælpen.
Avatar billede jpvj Nybegynder
22. maj 2003 - 11:53 #1
Skal det forstås således, at du nu har nedenstående:

(A..R er data i række 1, 2, ...)

1  A B C  D E F  G H I  J K L  M N O  P Q R
2  A B C  D E F  G H I  J K L  M N O  P Q R

...
800

Data fra række 1 skal så lægges om således?
1  A  D  G  J  N  Q 
2  B  E  H  L  O  R
3  C  F  I  M  P  S

... og række 2 bliver til...
4  A  D  G  J  N  Q 
5  B  E  H  L  O  R
6  C  F  I  M  P  S

JP
Avatar billede jpvj Nybegynder
22. maj 2003 - 11:54 #2
OK ... K smuttede ud af alfabetet. Det korrekte må være:

Data fra række 1 skal så lægges om således?
1  A  D  G  J  M  P 
2  B  E  H  K  N  Q
3  C  F  I  L  O  R

... og række 2 bliver til...
4  A  D  G  J  M  P 
5  B  E  H  K  N  Q
6  C  F  I  L  O  R

JP
Avatar billede henriklarsen Nybegynder
22. maj 2003 - 11:58 #3
Det skal forstås sådan:
1 2 3 4 5 6 1 2 3 4 5 6 1 2 3 4 5 6
A B C D E F A B C D E F A B C D E F

skal blive til:
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
A B C D E F
A B C D E F
A B C D E F
etc. 800
Avatar billede bak Forsker
22. maj 2003 - 14:46 #4
Hvis du kan bruge en makro, så test lige denne her.
Du skal angive starten af dine data (øverste venstre celle) og hvor de skal kopieres hen (igen øverste venstre celle)

Option Explicit
Option Base 1
Sub advancedTranspose()
Dim rng1 As Range
Dim vRng1
Dim vRng2()
Dim x As Long, y As Long, z As Long, t As Long
Dim Start As String
Dim Hvortil As Range
Start = Application.InputBox("Startcelle ?", Type:=8).Address
Set Hvortil = Application.InputBox("Hvor skal der kopieres til ?", Type:=8)
Set rng1 = Range(Start, Range(Start).End(xlDown).Offset(0, 17).Address)

ReDim vRng2(rng1.Cells.Count / 6, 6)
vRng1 = rng1
For x = 1 To UBound(vRng1, 1)    'rækker
  For y = 0 To 2
      t = t + 1
      For z = 1 To 6
      vRng2(t, z) = vRng1(x, z + (6 * y))
      Next
  Next
Next
Hvortil.Resize(t, 6) = vRng2
End Sub
Avatar billede henriklarsen Nybegynder
22. maj 2003 - 14:57 #5
det virker. TAK!
Avatar billede bak Forsker
22. maj 2003 - 15:00 #6
Fint, så smider jeg lige et svar :-)
Avatar billede bak Forsker
22. maj 2003 - 15:00 #7
Prøver igen
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