• 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.

tekst naar datum

Status
Niet open voor verdere reacties.

lexcellern

Gebruiker
Lid geworden
15 okt 2015
Berichten
130
In een zeer grote sheet lees ik een groot csv bestand in, in een tabblad (excel 2016).
Dit doe ik via 'gegevens' - 'Uit tekst/csv'
Er is 1 kolom waarin de cellen worden weergegeven als volgt:

31102009
of
1112013

Dit zou een datum moeten worden in de vorm: dd-mm-jjjj.

Als ik de kolom via celeigenschappen omzet naar datum met de vorm dd-mm-jjjj dan krijg ik allemaal ##########
Wat gaat er fout en hoe krijg ik het juist?
 
En hoe weet je of 1112013 1 november 2013 is of 11 januari 2013?
 
Dat weet ik uit ervaring, maar ook omdat je in talloze andere cellen bijvoorbeeld dit ziet staan:

2092010

De voorloop nul wordt dus wel in de maand gegeven maar niet in de dag

Ik hoop dat er een eenvoudige oplossing is. Ik meen dat het in een oudere versie van excel wel gewoon met celeigenschappen aanpassen kon!
 
of
numberformat

"00\-00\-0000" ; maar nog steeds geen echte datum

of
PHP:
=DATE(RIGHT(A1;4);LEFT(RIGHT(A1;6);2);LEFT(A1;LEN(A1)-6))
 
Ik begrijp dus dat het niet eenvoudig mogelijk is om de gehele kolom naar datum om te zetten met het juiste format?
Het lijkt me zo onlogisch en mede ook aangezien dit in het verleden wel lukte met een oude excel versie!
 
Code:
=DATUMWAARDE(TEKST(A1;"00-00-0000"))
Lijkt ook goed te gaan.
 
Ik ben nu al een stuk verder met nieuwe methodes, maar:

* er is nog een probleem
* ik loop tegen een capaciteitsprobleem aan

In het csv bestand blijkt dat de voorloopnullen er gewoon in staan, alleen hij laat ze weg als ik het csv bestand inlees in excel.

Het eindresultaat moet dus een tabblad van een excel sheet vullen waarin de betreffende kolom datums bevat in de opmaak dd-mm-jjjj.

Wat doe ik nu om dit te bereiken:

Ik open een nieuw spreadsheet en lees daarin het CSV bestand mbv 'gegevens' - Uit tekst/CSV.
Ik laat de betreffende datum kolom eerst als 'tekst' inlezen, zodat de voorloopnullen behouden blijven.
Dan heb ik dus de datum kolom als volgt staan: ddmmjjj.
M.b.v. 'gegevens'- tekst naar kolommen (dat is de methode zoals dat bij de oudere versie van excel het altijd ging) zet ik de betreffende kolom om naar 'Datum'.
Ik heb dan de kolom juist staan als dd-mm-jjjj!
Vervolgens kopieer ik het gehele tabblad naar het tabblad van het spreadsheet waar hij terecht behoort te komen.
Ik heb dan na veel te veel stappen de gewenste situatie bereikt.
Voorheen, met een oudere versie van excel ging dat vele malen sneller (direct met het inlezen van een csv/tekst bestand waarbij de datum meteen geleecteerd kon worden).

De reden dat ik het csv bestand niet direct in de gewenste spreadsheet inlees, is omdat er dan telkens een capaciteitsprobleem komt, een oneindige zandloper.

Dus mijn resterende problemen:

hoe zit dat met het capaciteitsprobleem?
hoe kan dit inlezen veel efficiënter?
 
Je maakt me nieuwsgierig naar je CSV-bestand.
 
Je maakt me nieuwsgierig naar je CSV-bestand.

Helaas vertrouwelijke informatie!
Maar waarom is het CSV bestand interessant? Met het bestand is niets mis lijkt me! Alle benodigde info staat er in, inclusief de datums met voorloopnullen, alleen dan zonder streepjes!

Het is een procedure kwestie, ik doe iets fout, wat ook VenA al aangaf! Maar wat? Hoe kan dit veel simpeler?
En daarnaast: waarom heb ik ineens met een kennelijk capaciteit probleem te maken en dat heeft niets te maken met de grootte van het CSV bestand, maar misschien wel met het spreadsheet waarin het CSV bestand moet worden geplaatst!
Het spreadsheet is wel groot, bestaat uit diverse tabbladen met veel inhoud.
Het oorspronkelijke bestand is 145 mb groot en ik heb het ook al zonder succes geprobeerd met een gereduceerd bestand van 5,7 mb groot!
Het lukt alleen, zoal ik in een eerder bericht al aangaf, als ik de betreffende kolom met datums inlees in een leeg, nieuw spreadsheet!

Maar al die stappen, die ik nu telkens moet nemen, dat is veel te omslachtig. In een oudere versie van excel ging dat niet fout!
 
Daar kan ik niets mee; zodat je vraag niet beantwoord kan worden.

Dat is jammer! Ik kan helaas echt geen vertrouwelijke informatie vrijgeven! Ik denk overigens dat het csv bestand niet zo interessant is voor je, maar juist wel het excel sheet, maar ook dat mag ik niet vrijgeven helaas!

Misschien zit het probleem erin dat ik werk met een excel 97-2003 werkblad (bestand) met de software excel 2016? Voorheen met een oudere excel versie had ik het probleem niet!
Helaas ben ik verplicht om met .xls extensies te werken, dit i.v.m. de software waarin het bestand ingelezen moet worden.

Al met al lijk ik zelf min of meer een oplossing gevonden te hebben, echter werkt het niet omdat er een capaciteitsprobleem is; excel 2016 lijkt het niet aan te kunnen!
Met een eenvoudig leeg werkblad lukt het wel!
 
De omvang van het bestand wordt waarschijnlijk veroorzaakt door een overdosis aan onzichtbare afbeeldingen.
Die kun je beter verwijderen.

Code:
Sub M_snb()
  for each it in sheets
     c00=c00 & vblf & it.name & vbtab & it.shapes.count
  next
  
  msgbox c00
End Sub

NB. Klinkt slim: vraag stellen in een openbaar forum, waar je de gegevens om je vraag te beantwoorden niet wil/mag plaatsen.
Inhuren van een Excel-deskundige ?
 
Had ik blijkbaar gemist tussen alle niet vraag gerelateerde tekst.
Ik laat de betreffende datum kolom eerst als 'tekst' inlezen, zodat de voorloopnullen behouden blijven.

Dat doe je dus niet goed. Je moet de gegevens inladen als datum. Via de wizzard kan je per kolom aangeven welk datatype het het is. Bij het datatype datum heb je meerdere opties. Ook de optie 'dmy' staat er tussen en dan gaat het wel goed. Het lijkt mij niets met verschillende versies te maken te hebben.

Nb. Voorbeeldbestanden zijn altijd te reduceren en anonimiseren tot de kern van het het probleem.
 
Had ik blijkbaar gemist tussen alle niet vraag gerelateerde tekst.


Dat doe je dus niet goed. Je moet de gegevens inladen als datum. Via de wizzard kan je per kolom aangeven welk datatype het het is. Bij het datatype datum heb je meerdere opties. Ook de optie 'dmy' staat er tussen en dan gaat het wel goed. Het lijkt mij niets met verschillende versies te maken te hebben.

Nb. Voorbeeldbestanden zijn altijd te reduceren en anonimiseren tot de kern van het het probleem.

En daar rijst bij mij altijd een groot vraagteken.....de wizzard.
Hoe kom ik in die 'oude` wizzard met verie 2016?

Ik zal nog een keer mijn stappen melden:

ik open mijn spreadsheet waar het csv bestand ingeladen moet worden.
Ik kies voor Tab 'gegevens' en vervolgens voor 'Uit tekst/CSV'.
In een oudere versie kwam je dan in de wizzard waar je inderdaad de kolom de datum eigenschappen kon ingeven, maar met excel 2016 gaat het als volgt:
Als ik het csv bestand heb geselecteerd dan zie ik het bestand als een soort van popup over het spreadsheet staan. Ik kan dan kiezen voor 'Laden' of bewerken.
Als ik het zou Laden, dan krijg ik de betreffende kolom zonder voorloopnullen en ook niet als datum.
Vervolgens zou ik die kolom kunnen selecteren en dan kiezen voor 'gegevens' en dan 'tekst naar kolommen' en dan kom ik wat lijkt op de 'oude wizzard'.
Dan kan ik in die wizzard, zoals jij al aangaf, kiezen voor 'gegevenstype per kolom' en dus voor Datum dmj.
Helaas geeft dat niet het gewenste resultaat omdat dan de voorloopnullen wegvallen wanneer de datum bijvoorbeeld 1 oktober 2017 is: 1102017. Alle cellen gaan keurig naar datum notatie behalve daar waar de datum dagen beginnen met dag 1 t/m 9, dan gaat het dan mis.

Als ik in de 1e stap i.p.v. laden zou kiezen voor 'Bewerken' (hetgeen de logische keuze zou moeten zijn, ik wil immers de kolom op datum eigenschappen zetten) dan kom ik in een zogenaamde Query editor.
De vraag is wat ik hier zou moeten kiezen. Het is in ieder geval totaal anders als de 'oude wizzard'.
Ik zie een mogelijkheid 'Type wijzigen'. Hij staat dan op type 'geheel getal' en kan dan kiezen voor 'datum'. Ik kan echter niet zoals de oude wizzard aangeven dat het dmj moet zijn ofzo.
Kies ik voor 'datum' dan moet ik dit bevestigen met 'huidige vervangen' en komen er allemaal errors (letterlijk het woord error in elke cel van die kolom). Als ik vervolgens zou kiezen om het bestand te laden naar het spreadsheet dan blijven de cellen in de kolom geheel leeg.
Dit kan dus niet de juiste wijze zijn.

Ik had elders al eens begrepen dat ik daarom eerst moet kiezen voor Als Tekst i.p.v. als datum.
Dat werkt dus wel, maar veel omslachtiger dan in een vorige versie van excel.

Volgens mij is het een foutje in het huidige excel.

Naast de efficiency slag zit ik dus ook met een capaciteits probleem. Het loopt telkens vast!
 
Wat een waardeloos csv-bestand.
Eerst de dag, dan de maand, dan het jaar, je krijgt dan geheid problemen met nullen.
Je moet exporteren volgens de iso8601 regels, zie https://en.wikipedia.org/wiki/ISO_8601
 
Wat een waardeloos csv-bestand.
Eerst de dag, dan de maand, dan het jaar, je krijgt dan geheid problemen met nullen.
Je moet exporteren volgens de iso8601 regels, zie https://en.wikipedia.org/wiki/ISO_8601

We kunnen het een waardeloos csv bestand vinden echter het wordt toch al sinds jaar en dag door een grote organisatie breed verspreid en was in vorige excel versies prima hanteerbaar, maar kennelijk nu niet meer!

Inmiddels is er door het microsoft office forum geconstateerd dat er een gebrek is in het huidige excel waardoor het probleem speelt. Dit schijnt niet eenvoudig op te lossen te zijn!

Tenzij anderen een beter inzicht hebben, ben ik veroordeeld tot een heel omslachtige methode om het csv bestand juist in te lezen!
 
In het csv bestand blijkt dat de voorloopnullen er gewoon in staan
Hoe je het dan toch voor elkaar krijgt om deze te laten verdwijnen als je de de gegevens als tekst inleest begrijp ik niet. Heb je de code van snb geprobeerd om te zien of er veel afbeeldingen in staan? Met een macro is het ook eenvoudig op te lossen. Maar dan zal je toch met een voorbeeldbestand moeten komen of deze zelf even aanpassen naar het juiste bereik.

Een vb van een macro.
Code:
Sub VenA()
  For Each cl In Columns(1).SpecialCells(2)
    cl.Value = DateValue(Format(cl, "00-00-0000"))
  Next cl
End Sub
 
Hoe je het dan toch voor elkaar krijgt om deze te laten verdwijnen als je de de gegevens als tekst inleest begrijp ik niet. Heb je de code van snb geprobeerd om te zien of er veel afbeeldingen in staan? Met een macro is het ook eenvoudig op te lossen.

Ik heb bij mijn weten nooit gemeld dat de voorloopnullen verdwijnen als ik het als tekst inlees.
Die extra stap is juist noodzakelijk om de voorloopnullen erin te houden.
Dus eerst als tekst inlezen (tbv behoud voorloopnullen) en vervolgens via de wizzard 'tekst naar kolommen die betreffende kolom omzetten naar datum dmj.
Op deze manier kan het dus wel, maar kost dus een extra stap, dat voorheen niet hoefde.

Dan het capaciteits probleem: ja, er staat 1 kolom met alleen maar links naar afbeeldingen in! Ik heb deze al eens verwijderd, maar dan blijft het probleem.

Het werkt alleen als ik als volgt te werk ga:

De csv inlezen in een leeg spreadsheet, vervolgens de handelingen uitvoeren om de datum in de kolom te krijgen en vervolgens het gehele tabblad kopiëren en plakken in het spreadsheet.
Ook weer een stap teveel dus, dat in de oude excel niet nodig was!
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan