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

Wederom tekst2datum

Status
Niet open voor verdere reacties.

jansm

Gebruiker
Lid geworden
2 apr 2014
Berichten
421
Heren,
ik heb een serie datums in waarschijnlijk tekst-format. Het laatste teken is een spatie. Deze rij met datums is niet goed te sorteren. Daarom heb ik een poging gedaan om 2 marco-tjes te maken. Een die spaties weghaalt en een die daarna de tekst in datum-formaat zou moeten zetten.
De eerste "loopt helemaal af", zonder fouten maar doet niet wat hij moet doen. De ander heeft een fout die ik niet kan ontdekken.
Wie wil helpen?
Bekijk bijlage Tekst2Datum_1.xlsm
 
jansm,

Zou dit kunnen zijn dat er lege cellen tussen zitten?
Test het eens als de lege cellen verwijderd zijn.
 
De eerste is geen spatie, maar chr(160).
Code:
Sub hsv()
Columns(4).Replace Chr(160), ""
Columns(4).Replace " ", ""      'kolom 4 bevat ook (meerdere) spaties cel D31 bv.
End Sub

tweede.
Excel kan niet omgaan met data < 1-1-1900.
Het blijft dus tekst.
 
Laatst bewerkt:
Om het leven wat makkelijker te maken zou ik met een gestructureerde dataset beginnen. Dit geldt ook voor jouw andere draadjes. De opmaak kan je altijd later nog regelen. Excel kan niet omgaan met datums voor 1900 en deze kan je dus ook niet als datumveld instellen.

Zet in kolom A de celeigenschappen op standaard en draai dan deze macro.

Code:
Sub VenA()
For Each cl In Range("D4:D" & Cells(Rows.Count, 4).End(xlUp).Row).SpecialCells(2)
    cl.Offset(, -3) = Left(Split(cl, "-")(2), 4) & Format(Split(cl, "-")(1), "00") & Format(Split(cl, "-")(0), "00")
Next cl
End Sub

Ik heb Left gebruikt omdat trim niet het goede resultaat gaf. Er staat dus waarschijnlijk een ander teken dan een spatie achter de jaartallen.

Edit zoals door HSV ook opgemerkt.
 
Laatst bewerkt:
bedankt heren.
probleem is dat ik data ergens vandaan gekopieerd krijg aangeleverd. Ik heb nog 2 vragen.
VenA:
1. jouw resultaat is gelukkig wel te sorteren. Kan jij voor mij van [A] een macro maken om hiervan in een "tekstdatum -kolom" dd-mm-jjjj te maken (zonder spaties en andere tekens).
2. waarom loopt mijn macro om tekst naar datum om te zetten vast?
 
Lijkt me niet echt een handige sortering als je (###########) als resultaat krijgt in sommige cellen.
Code:
Sub hsv()
     Columns(4).Replace Chr(160), ""
     Columns(4).Replace " ", ""
  Set c = Range("d5", Cells(Rows.Count, 4).End(xlUp).Address)
  c.Offset(, -3) = c.Value
     Columns(1).Replace "-", "."
     Columns(1).NumberFormat = "dd.mm.yyyy"
  c.Offset(, -3).Sort [a5], 2
     Columns(1).Replace ".", "-"
     Columns(1).NumberFormat = "dd-mm-yyyy"
End Sub
 
dank Har.
#### krijg je niet als het format van de kolom [A] op standaard staat zoals VenA zegt.

Met jouw code dan graag [A] en sorteren op [A]. Ik kan namelijk niet vinden waar de -3 en de 2 in de regel
{c.Offset(, -3).Sort [a5], 2 } betrekking op hebben.

Bekijk bijlage Tekst2Datum_2.xlsm
 
De eigenschappen aanpassen had ik gemist.
Dit bestand wijkt af van je vorige.
Desalniettemin is het niet eenvoudig met die lege regels er tussen, vandaar dat mijn code ook aaneengesloten sorteert.
De geboortejaargetallen zijn namelijk niet uniek, zoals de nummering dat wel is.

Ik weet waar je naar toe wilt, vandaar dat ik ook niet meer gereageerd heb in je vervolgvraag van je vorige vraag.
 
Even een andere gok

Code:
Sub VenA()
Dim cl As Range
With Range("A4:D" & Cells(Rows.Count, 4).End(xlUp).Row)
    For Each cl In .Columns(4).SpecialCells(2)
        cl.Offset(, -3) = Left(Split(cl, "-")(2), 4) & "-" & Format(Split(cl, "-")(1), "00") & "-" & Format(Split(cl, "-")(0), "00")
    Next cl
    .Sort [A4], 2, [B4]
    For Each cl In .Columns(1).SpecialCells(2)
        cl = Split(cl, "-")(2) & "-" & Split(cl, "-")(1) & "-" & Split(cl, "-")(0)
    Next cl
End With
End Sub

@HSV, volgens mij is het woordje 'niet' weggevallen in de laatste zin in #8;)
 
Het woordje 'niet' is niet weggevallen.
Zie vorige vraag van Ts.

Het was gesorteerd op nummer (die uniek is), maar een geboortejaar is niet uniek van getrouwde stellen, en die moeten bij elkaar blijven incl. de lege regels.

nb. Dit is dus eigenlijk een indirecte vraag van de vervolgvraag uit de vorige topic van Ts.
Met andere woorden: met deze vraag ben je er nog niet.
 
Laatst bewerkt:
Hallo VenA en Harry,
Ik probeer ff beide draadjes in deze reactie te combineren.
Dit draadje is idd de vervolgvraag van mijn vorige draadje. Die vraag ging over het uitbreiden van de code van Harry.

De uitbreiding betrof het sorteren op geb. datum. Er werd niet meer gereageerd dus dacht ik dan ga ik het nogmaals zelf proberen maar toen liep ik tegen het verschijnsel aan dat de geb.datum een tekst-format heeft en ook nog eens vreemde tekens bevat. Daar is dit draadje voor gestart!

Toegevoegd bestand is dus het bestand waar het om gaat (uiteraard een fake bestand). Uit mijn vorige draadje heb ik een code van Harry die alle namen voorziet van de bijbehorende nr (unieke code), de dubbelen verwijderd en sorteert op nr.
De lege regels tussen singles/koppels zijn eigenlijk zeer gewenst voor dit bestand.
Mijn wens is dus om het resultaat van HSV () ook te kunnen sorteren op geb. datum.
Ik hoor van jullie wel of je het nog begrijpt!
PS de opmaak van de datums komt voort uit de bron (website). VenA heeft al een code (#9) om "zuivere" datumtekst te maken.

Bekijk bijlage Sorteer_Module_7.xlsm
 
Zet in het voorbeeldje eens de verwachte uitkomst.

De noodzaak van lege regels ontgaat mij totaal en maakt elke code nodeloos ingewikkeld. Zonder het gebruik hiervan kan je zeer eenvoudig removeduplicates gebruiken, ontbrekende gegevens aanvullen en de handel sorteren op wat jij wilt.
 
Dag VenA,
voorbeeld van gewenste resultaat: zie toch de laatste bijlage en draai een van codes in Module 7. Dat resultaat, maar dan gesorteerd op kolom [D], geb. datum. Op deze kolom is dus niet zomaar te sorteren omdat
1. data < 1-1-1900 bevat
2. bestaat uit tekst met spatie of andere tekens.

Ik moet van je aannemen dat de lege regels een probleem vormen en zal de wens van deze regels moeten laten vallen. MET deze regels wordt het in een oogopslag duidelijk of de betreffende persoon single was of een partner had. Kan/wil je hiermee verder?
 
Zet het sorteren op datums maar uit je hoofd.

vb.
Piet is van 1904
Piet's partner is van 1906.
Piet's neef is ook van 1904.

De koppels zijn niet meer bij elkaar na sortering.
Piet is nu bij Piet's neef.

Maak er iets unieks van.
 
... daar heb je helemaal gelijk in. Daar ga ik helemaal de mist in met mijn denkwijze (ashamed). Ik kom er zo dadelijk nog even op terug.
 
Finale!!
In toegevoegde tabel:
1e actie SORTEER nr. , resultaat: ontbrekende nr worden toegevoegd en tabel wordt gesorteerd op nr.
2e actie Sorteer Gb datum, beoogt resultaat:tabel na 1 maar dan gesorteerd op Gb datum, zonder lege regels.
Code voor actie 2 is dus niet af. Format kolom A moet eerst nog op STANDAARD gezet worden. Daarna moet gehele tabel gesorteerd worden op kolom A.

Sorry voor alle onduidelijkheid.
Bekijk bijlage Sorteer_Module_7-5.xlsm
 
heren, ik ben zelf een stapje verder gekomen. Wacht even met reageren, ik kom terug!
 
3 macro's: sorteren op nr, en sorteren op geb datum (en de oorspronkelijke data terugzetten). Maar wat gebeurt er met kolom B? Die wordt helemaal door elkaar gegooid?Wat is er fout aan die code?
Bekijk bijlage Sorteer_Module_7-6.xlsm

PS ook nadat ik de lege regels voor het sorteren weg haal geeft dat dezelfde foutieve sortering vwb kolom B
 
Laatst bewerkt:
Als je op de eerste knop drukt verlies je ineens een paar records... Lijkt me óók iet de bedoeling toch?
En wáárom in vredesnaam die witregels? Hou gegevensinvoer en rapportages gescheiden. Dit is vragen om problemen die er absoluut niet hoeven te zijn.
 
...records verliezen in dit geval WEL de bedoeling, zijn namelijk dubbelen. Lege regels is al vaak ter sprake geweest in dit draadje. Vraag is eigenlijk gericht aan HSV en VenA die vaak gereageerd.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan