Avatar billede puller Nybegynder
30. maj 2002 - 13:22 Der er 23 kommentarer og
1 løsning

Excel / VBA flytte data fra horisontalt til vertikalt automatisk

Hejsa,

Vi vil gern have lagt nogle data som ser således ud:

29-05-01    12:55
29-05-01    12:55
29-05-01    12:56
29-05-01    12:56
29-05-01    12:56
29-05-01    12:57
29-05-01    12:57
29-05-01    12:58
29-05-01    12:58
29-05-01    12:59
29-05-01    12:59
29-05-01    12:59
29-05-01    13:00
29-05-01    13:01
29-05-01    13:02
29-05-01    13:04
29-05-01    13:04
29-05-01    13:05
29-05-01    13:08
29-05-01    13:09
29-05-01    13:10
29-05-01    13:10
29-05-01    13:11

Det skulle gerne ende op med at se således ud:

29-05-01    12:55    12:55    12:56    12:56    12:56    12:57    12:57    12:58    12:58    12:59    12:59    12:59    13:00    13:01    13:02    13:04    13:04    13:05    13:08    13:09    13:10    13:10    13:11

Skulle vises i en række.


Over så de kommer til at se således ud, hvordan gør vi det lettest, der er nemlig 98000 poster/rækker.


Mvh

Puller
Avatar billede benson Nybegynder
30. maj 2002 - 13:24 #1
MArker teksten og vælg kopier

derefter vælges indsæt speciel og transponer

Så får du det vendt om !
Avatar billede puller Nybegynder
30. maj 2002 - 13:27 #2
Det gør det ikke automatisk, og der 98000 poster.
Avatar billede puller Nybegynder
30. maj 2002 - 13:28 #3
Jeg tænkte om der var en der kunne lave et eller andet hurtigt/let i VBA.
Avatar billede benson Nybegynder
30. maj 2002 - 13:28 #4
Hmm ! er det ikke nemmere bare at oprette dem påny ?

HVis det hele kommer i rækkefølge, så er det bare at oprette de to første forkomster, marker og trække i nederste højre hjørne til det passer. Skal formentlig gøres et par gange !
Avatar billede puller Nybegynder
30. maj 2002 - 13:31 #5
Det er ikke kronologisk rækkefølge, det er data.
Avatar billede benson Nybegynder
30. maj 2002 - 13:40 #6
Hmm ! du skriver du har dem i regneark. Men der er kun plads til 65XXX poster. Hvordan er de listet ?

Hvis du er interesseret er du velkommen til at sende en kopi til news@hojholt.dk
Avatar billede jkrons Professor
30. maj 2002 - 13:41 #7
Jeg forstår ikke helt hvad du mener. Er alle 98000 poster fra samme dato, eller ønsker du at der skal være en række pr. dato?
Hvis det sidste er tilfældet, hvor mange tidspunkter kan der så forekomme pr.- dato (husk, Excel har kun 256 kolonner).

Hvor mange ark må de 98000 poster fordeles over, og hvordan skal de fordeles. Husk, at Excel kun har 65000+ rækker pr ark.
Avatar billede puller Nybegynder
30. maj 2002 - 13:53 #8
Det er OK med flere ark.

Nej posterne er ikke alle fra samme dato. Det er mange poster fra samme dato med forksellige tidspunkter.
Avatar billede benson Nybegynder
30. maj 2002 - 14:05 #9
puller > Har du lige sendt noget til mig ? (virus tjek !)
Avatar billede puller Nybegynder
30. maj 2002 - 14:07 #10
Ja, er der virus i?
Avatar billede benson Nybegynder
30. maj 2002 - 14:07 #11
nej Men det var bare for at tjekke ! Den er jo ikke fra "puller "
Avatar billede puller Nybegynder
30. maj 2002 - 14:13 #12
OK, den er sendt fra mm@vega-affald.dk

Der var du lige ved at få mig til at skide i bukserne.
Avatar billede benson Nybegynder
30. maj 2002 - 14:14 #13
JEps ! er i gang !

ER det kun data i ARK1 der skal flyttes over ?
Avatar billede puller Nybegynder
30. maj 2002 - 14:17 #14
Nej også fra ark 2, og hvordan gør du?
Avatar billede benson Nybegynder
30. maj 2002 - 15:15 #15
Jeg gør det med VBA.
En løsning nærmer sig :-)
Avatar billede puller Nybegynder
30. maj 2002 - 15:20 #16
Jeg glæder mig allerede
Avatar billede benson Nybegynder
30. maj 2002 - 15:23 #17
PS ! Hvordan er data i det hele taget kommet ind i regnearket ?
Avatar billede puller Nybegynder
30. maj 2002 - 15:25 #18
access
Avatar billede bak Forsker
30. maj 2002 - 15:43 #19
Hvis data er i kol A og B
og starter i række 2.


Option Base 1
Sub test()
Dim i, kol, ro, rækker As Integer
Dim ta As Variant
rækker = Range("A65536").End(xlUp).Row
ta = Sheets("Ark1").Range("A2:B" & rækker)
kol = 1
ro = 1
With sheets("Ark2")
.Cells(ro, kol) = ta(1, 1)
kol = kol + 1
.Cells(ro, kol) = ta(1, 2)
For i = 2 To rækker - 1
  If ta(i, 1) <> ta(i - 1, 1) Then
    kol = 1
    ro = ro + 1
    .Cells(ro, kol) = ta(i, 1)
    kol = kol + 1
    .Cells(ro, kol) = ta(i, 2)
  Else
    kol = kol + 1
    .Cells(ro, kol) = ta(i, 2)
  End If
Next
End Sub
Avatar billede bak Forsker
30. maj 2002 - 15:49 #20
Der mangler lige en linie.
End With lige før End Sub
Makroen forudsætter at arket er sorteret efter kolonne A.
Avatar billede benson Nybegynder
30. maj 2002 - 17:29 #21
Jep så er den her !!

Denne gennemløber alle ark og tilføjer data i et nyt ark

Indsæt denne kode :
Sub trans()
Dim x As Range
Dim rc
Dim F As Worksheet

numark = ActiveWorkbook.Worksheets.Count
Sheets.Add
gemsheet = ActiveSheet.Name
aktrow = 0
For Each F In ActiveWorkbook.Worksheets
    If F.Name <> gemsheet Then
        aktkol = 1
        aktrow = aktrow + 1
        F.Activate
        F.Range("A2").Select
        Selection.CurrentRegion.Select
        rc = Selection.Rows.Count
        If rc > 1 Then
            gemdato = DateValue((F.Range("a2")))
            Worksheets(gemsheet).Cells(aktrow, aktkol).Value = F.Range("a2")
            Worksheets(gemsheet).Cells(aktrow, aktkol).NumberFormat = "m/d/yy"
            aktkol = 2
            For i = 1 To rc
              If IsDate(F.Range("a" & i + 1)) Then
                    If (DateValue(F.Range("a" & i + 1)) = gemdato) And (aktkol < 255) Then
                    Sheets(gemsheet).Cells(aktrow, aktkol).Value = TimeValue(F.Range("a" & i + 1))
                    Worksheets(gemsheet).Cells(aktrow, aktkol).NumberFormat = "hh:mm"
                    aktkol = aktkol + 1
                    Else
                    gemdato = DateValue(F.Range("a" & i + 1))
                    aktrow = aktrow + 1
                    aktkol = 2
                    Sheets(gemsheet).Cells(aktrow, 1).Value = F.Range("a" & i + 1)
                    Worksheets(gemsheet).Cells(aktrow, 1).NumberFormat = "m/d/yy"
                    Sheets(gemsheet).Cells(aktrow, aktkol).Value = TimeValue(F.Range("a" & i + 1))
                    Worksheets(gemsheet).Cells(aktrow, aktkol).NumberFormat = "hh:mm"
                    aktkol = aktkol + 1
                    End If
                End If
            Next
        End If
    End If
Next

End Sub
Avatar billede benson Nybegynder
30. maj 2002 - 17:35 #22
numark = ActiveWorkbook.Worksheets.Count

Denne linie bruges ikke mere ! Den er fra første forsøg !

Dine data er ikke helt ens hele vejen igennem, der er nogle gange der ikke er et tidspunkt til datoen ! Så i det tilfælde bliver datoen bare ført med alene !

Desuden indeholder kolonne A jo alle data (dato og tid) så jeg har valgt kun at benytte kolonne A (da ARK2 desuden kun har en kolonne) !!
Avatar billede martin_moth Mester
04. juni 2002 - 12:57 #23
Bare lige en generel kommentar - ved ikke om det er nævnt ovenfor, men Excel kan kun håndtere 65536 rækker og kun(!!!!) 256 kolonner (=IV) - det kan give problemer med at transponere kolonner til rækker... /Martin
Avatar billede benson Nybegynder
04. juni 2002 - 13:14 #24
marting_moth> Jep I know !

Men der er plads til 65536*256 = 16.777.216 data i et ark ! Så det holder da til et par datamængder gange 98000 poster.

puller> tak for points ;-)
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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