Avatar billede jss Nybegynder
18. september 2002 - 13:59 Der er 12 kommentarer og
2 løsninger

VB og transponering

Hej
Sidder her med en udfordring, hvor jeg har brug for lidt hjælp fra jer derude :-)

Det drejer sig om at få transponeret en række data (kolonne -> række), men det der driller mig er, at antallet af kolonner skal være dynamisk, dvs. det vil variere fra række til række. Data-eksemplet herunder skal resultere i 3 rækker (User: 11,12 og 17) med 4 kolonner til user 11, 3 kol. til user 12 og 6 kol. til user 17. Man kan mene at det hurtigt kunne gøres manuelt, men det rigtige datasæt indeholder over 11.000 rækker, så lidt VB vil nok være en go´ idé her.

Q.No    User    Answer
1    11    1
1    11    2
1    11    3
1    11    4
1    12    32
1    12    33
1    12    35
1    17    1
1    17    4
1    17    16
1    17    21
1    17    26
1    17    56

Håber at I kan hjælpe!
18. september 2002 - 14:12 #1
Du er velkommen til at sende mig dit ark fd@win-consult.com
Avatar billede jss Nybegynder
18. september 2002 - 15:42 #2
Ark er mailet :-)
19. september 2002 - 12:34 #3
Jeg har pt. trukket mig pga. tid.
Avatar billede rvm Nybegynder
19. september 2002 - 16:09 #4
Send arket til mig - så kigger jeg på det: rvejemad@sca.csc.com
Avatar billede bak Forsker
19. september 2002 - 21:28 #5
Prøv at teste denne .
Du bliver bedt om at angive/markere det celleområde der skal transponeres og hvortil.

Sub transp()
  Dim var
  Dim x As Integer, y As Integer, z As Byte
  Dim uniq As New Collection
  Dim StartNy As Range
  Dim Omr As Range
  Set Omr = Application.InputBox(prompt:="Angiv område for transponering ", Type:=8)
  Set StartNy = Application.InputBox(prompt:=" start på nyt område ?", Type:=8)
  Application.ScreenUpdating = False
  var = Omr
  On Error Resume Next
  For x = 1 To UBound(var, 1)
    uniq.Add var(x, 1), CStr(var(x, 1))
  Next
  y = 1
  With StartNy
    For x = 1 To uniq.Count
      .Offset(x - 1, 0) = uniq(x)
      z = 1
      Do
        .Offset(x - 1, z) = var(y, 2)
        y = y + 1
        z = z + 1
      Loop Until var(y, 1) <> uniq(x)
    Next
  End With
End Sub
Avatar billede jss Nybegynder
20. september 2002 - 09:26 #6
<rvm> ark er sendt !
<bak> prøver din løsning af her i weekenden :-)
Avatar billede tma_oksboel Nybegynder
26. september 2002 - 13:43 #7
Denne transponer-funktioner er testet og virker:

Function MinTransponer(ByRef arrayOriginal As Variant) As Variant

    Dim x As Integer, y As Integer, i As Integer, j As Integer, TransponerTabel() As Variant
    x = UBound(arrayOriginal, 1)
    y = UBound(arrayOriginal, 2)
   
    ReDim TransponerTabel(y, x)
   
    For i = 0 To x
        For j = 0 To y
            TransponerTabel(j, i) = arrayOriginal(i, j)
        Next
    Next
    MinTransponer = TransponerTabel
   
End Function


Her er et kald til funktionen:
MinTransponer(rsProdukter.GetRows(rsProdukter.RecordCount))
Jeg kalder med antallet af poster ifm. at de er hentet via ADO

Torben
Avatar billede bak Forsker
12. oktober 2002 - 13:23 #8
Jss -> er spørgsmålet besvaret ??
Avatar billede tma_oksboel Nybegynder
12. oktober 2002 - 16:34 #9
Godt spørgsmål...
Avatar billede bak Forsker
12. oktober 2002 - 18:59 #10
Jaee Torben, men det giver jeg ikke point for :-)
Avatar billede jss Nybegynder
13. oktober 2002 - 07:19 #11
Hej Bak og Torben

Sorry - men jeg har været "sat ud af spillet" af personlige årsager de seneste uger, men er nu tilbage igen. Begge forslag er gode og jeg kan bruge begge, så derfor deler jeg points 50-50 imellem jer.

Venlig hilsen
Janus
Avatar billede jss Nybegynder
13. oktober 2002 - 07:32 #12
Men kan I ikke lige afgive et svar, så jeg kan tildele points. I har indtil videre kun afgivet kommentarer og dem kan jeg ikke tildele points :-)
Janus
Avatar billede bak Forsker
13. oktober 2002 - 09:48 #13
ok, godt du er tilbage igen ...:-)
Avatar billede tma_oksboel Nybegynder
13. oktober 2002 - 10:24 #14
Godt at høre, at du kunne bruge svarene.
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