• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Data verzetten

Status
Niet open voor verdere reacties.

corania17

Gebruiker
Lid geworden
1 okt 2012
Berichten
260
Tijdens het overzetten van data in een rij naar data in een kolom gebeuren er vreemde zaken.
De datum wordt veranderd. Normaal in Blad1 staat dd-mm-jjj en bij overzetten gaan enkele data veranderen in mm-dd-jjjj.(geel gemerkt in Blad2)
Zie bijgevoegd voorbeeld.
Weet iemand hoe dit kan en hoe dit te verhelpen?
Ik heb veel data die ik al heb omgezet en nu blijkt dat enkele data verkeerd worden weergegeven.
Bij voorbaat mijn hartelijke dank, Rubik.
 

Bijlagen

Zo te zien zijn alleen de datums als datum herkend waarbij het eerste getal 12 of kleiner is (gezien als maanden dus!) en zijn alle andere datums tekst gebleven. Hoe precies gaat dat kopieren en transponeren in zijn werk?
 
Je zal de datums even moeten omzetten omdat VBA met de Amerikaanse notatie werkt. De celeigenschappen in Blad2 even op datum zetten. De code heb ik een beetje aangepast.

Code:
Sub ckp()
    Dim Br
    Dim i As Long, j As Long
    
    Br = Sheets("Blad1").Cells(1).CurrentRegion
    With CreateObject("System.Collections.Arraylist")
        For i = 1 To UBound(Br)
            j = 6
            Do While Br(i, j) <> "" And j < 11
              If i = 1 Then 'koptekst
                .Add Array(Br(i, 1), Br(i, 2), Br(i, 3), Br(i, 4), Br(i, 5), Br(i, j), "", "", "", "", Br(i, j + 5), _
                    "", "", "", "", Br(i, j + 10), "", "", "", "", Br(i, 21))
               Else 'de rest
                .Add Array(Br(i, 1), Br(i, 2), Br(i, 3), Br(i, 4), Br(i, 5), Br(i, j), "", "", "", "", [COLOR="#FF0000"]CDbl([/COLOR]Br(i, j + 5)), _
                    "", "", "", "", [COLOR="#FF0000"]CDbl[/COLOR](Br(i, j + 10)), "", "", "", "", Br(i, 21))
              End If
              j = j + 1
            Loop
        Next
        Sheets("Blad2").Cells(1, 1).Resize(.Count, 21) = Application.Index(.ToArray, 0)
    End With
End Sub
 
Geachte heer/mevrouw jkpieterse,
Bedankt voor uw reactie. Ik denk dat er iets bijgeschreven moet worden in de macro zodat de cellen niet als tekst maar als datum moeten worden behandeld.
Hoe dat moet weet ik niet. Ik dacht dat alle data goed was overgezet want alles stond mooi op het blad alleen was het niet goed.
Het klopt inderdaad dat de dagen tot 12 gaan en alles boven 12 wel goed worden overgezet.
Maar wat is de oplossing?
Met vriendelijke groet, Rubik.
 
Geachte VenA, Ik heb de nieuwe macro geprobeerd en inderdaad als ik op Blad2 de kolommen op datum zet dan staat alles zo te zien goed.
Ga even nog wat experimenteren voordat ik de vraag op opgelost zet. Toch al vast mijn hartelijke dank. Rubik.
 
Geachte VenA

In het voorbeeld heb ik maar enkele kolommen gebruikt.
In het bestand gebruik ik 35 kolommen in totaal en bestaan de kolommen met de naam Namen, Datum1 en Datum2 uit 6 kolommen.
Ik heb de macro aangepast daaraan maar deze loopt vast na 18 regels te hebben omgezet.
Do While Br(i, j) <> "" And j < 11
If i = 1 Then 'koptekst
.Add Array(Br(i, 1), Br(i, 2), Br(i, 3), Br(i, 4), Br(i, 5), Br(i, j), "", "", "", "", "", Br(i, j + 6), _
"", "", "", "", "", Br(i, j + 12), "", "", "", "", "", Br(i, 24), Br(i, 25), Br(i, 26), Br(i, 27), _
Br(i, 28), Br(i, 29), Br(i, 30), Br(i, 31), Br(i, 32), Br(i, 33), Br(i, 34), Br(i, 35))
Else 'de rest
.Add Array(Br(i, 1), Br(i, 2), Br(i, 3), Br(i, 4), Br(i, 5), Br(i, j), "", "", "", "", "", CDbl(Br(i, j + 6)), _
"", "", "", "", "", CDbl(Br(i, j + 12)), "", "", "", "", "", Br(i, 24), Br(i, 25), Br(i, 26), Br(i, 27), _
Br(i, 28), Br(i, 29), Br(i, 30), Br(i, 31), Br(i, 32), Br(i, 33), Br(i, 34), Br(i, 35))
End If
j = j + 1
Loop
Next
Sheets("Blad2").Cells(1, 1).Resize(.Count, 35) = Application.Index(.ToArray, 0)
End With

Volgens mij staat alles goed, maar waarom stopt de macro dan na 18 keer inclusief koptekst?
Ik kan helaas het bestand niet sturen omdat er prive gegevens in staan.
Of heeft u misschien een andere oplossing om rijen met data om te zetten naar kolommen met data?
Wat betekend CDbl?
Bij voorbaat dank, Rubik.
 
De code stopt als de ubound van Br bereikt is. Als je lege rijen in het bereik hebt staan zal je de code aan moeten passen. Wat CDbl is of doet is overal te vinden. Code tussen codetags plaatsen is blijkbaar onbekend. Een bestand kan je altijd plaatsen. Even de gegevens anonimiseren en opslaan als. Kan toch ook niet zo heel moeilijk zijn?
 
Geachte VenA, ik heb een deel geanonimiseerd want ik kom er echt niet meer uit. In het vorige voorbeeld gaat het goed maar als ik er de originele data in zet gaat het fout.
Daarom toch maar een bestand gemaakt in de hoop dat u er wel uit kan komen. Een laatste redmiddel zou nog kunnen zijn door alleen de datakolommen om te zetten. De rest van de gegevens is allemaal goed gegaan. Er is inmiddels wel gemuteerd in het bestand dus dat wordt ook nog een klus voor mij om uit te zoeken. Hartelijk dank en ik hoop dat het lukt, Rubik.
 

Bijlagen

Het gaat fout omdat je datums van voor 01-01-1900 gebruikt dit ziet excel niet als getallen.
Een optie is om de celeigenschappen van kolom L en R in Blad2 op tekst te zetten en CDbl aan te passen in CStr.
 
Geachte VenA, bedankt voor de raad en de oplossing. Het is nog niet helemaal goed maar dat is maar op een regel waar er 6 mensen staan op Blad1 id19.
Deze 6e (JAN) met data wordt niet meegenomen naar Blad2. Dit is ook maar een regel de rest bestaat allemaal uit 5 mensen en data. Heel hartelijk dank want het was voor mij een hele klus. Rubik.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan