Help!

PC-Problemen?
De vrijwilligers van Oplossing.be zoeken gratis met u mee!

Hulp bij posten

Recente topics

Auteur Topic: VBA : split en replace  (gelezen 2696 keer)

0 leden en 1 gast bekijken dit topic.

Offline BlackDevil

  • Ambassadeur
  • *****
  • Berichten: 1.029
  • Geslacht: Vrouw
  • veni vidi vici
VBA : split en replace
« Gepost op: 04 december 2022, 14:18:42 »
Goedenamiddag,

Ik heb vanuit mijn webapplicatie mbt mijn stamboom een lijst laten genereren van alle vermelde voorouders incl vermelding van de datums en plaatsen mbt geboorte, huwelijk en overlijden naar een excel-werkblad.
Nu is de weergave van al deze gegevens helemaal anders dan wat ik nodig heb dus gezien het grote aantal personen zou ik de omzetting naar de juiste weergave via VBA willen automatiseren naar een nieuw werkblad.
Ik weet dat ik voor de omzettingen van de persoonsnamen en de plaatsnamen de ‘split’ functie kan gebruiken en voor de weergave van de datums eventueel de ‘replace’ functies kan gebruiken maar heb daar zeer weinig ervaring mee en vooral ivm de persoonsnamen wordt het mij iets te ingewikkeld om dit zonder hulp tot een goed einde te brengen.

Volgende weergaven van de namen komen voor in de originele lijst in één kolom :

Voornaam Familienaam
Voornaam1 Voornaam2 Familienaam
Voornaam1 Voornaam2 Voornaam3 Familienaam
Voornaam Familienaam(deel1) Familmienaam(deel2)
Voornaam1 Voornaam2 Familienaam(deel1) Familmienaam(deel2)
Voornaam1 Voornaam2 Voornaam3 Familienaam(deel1) Familmienaam(deel2)
Voornaam Familienaam(deel1) Familmienaam(deel2) Familienaam(deel3)
Voornaam1 Voornaam2 Familienaam(deel1) Familmienaam(deel2) Familienaam(deel3)
Voornaam1 Voornaam2 Voornaam3 Familienaam(deel1) Familmienaam(deel2) Familienaam(deel3)

Gewenste weergave van bovenstaande voorbeelden verdeeld over 2 kolommen :

FAMILIENAAM Voornaam     |
FAMILIENAAM Voornaam1   |   Voornaam2
FAMILIENAAM Voornaam1   |   Voornaam2 Voornaam3
FAMILIENAAM(deel1) & (deel2) Voornaam   |   
FAMILIENAAM(deel1) & (deel2) Voornaam   |   Voornaam2
FAMILIENAAM(deel1) & (deel2) Voornaam   |   Voornaam2 Voornaam3
FAMILIENAAM(deel1) & (deel2) & (deel3) Voornaam   |   
FAMILIENAAM(deel1) & (deel2) & (deel3) Voornaam   |   Voornaam2
FAMILIENAAM(deel1) & (deel2) & (deel3) Voornaam   |   Voornaam2 Voornaam3

Soms is er ook een vermelding tussen haakjes die ik NIET nodig heb in de omgezette lijst.
Voorbeeld :

Petrus Andries (Van Steirthem) Van Sterthem

Dient dan te worden :

VAN STERTHEM Petrus   |   Andries


Ingeval de familienaam maar uit één woord bestaat dan is het vrij simpel om via de ‘split’-functie te werken en de string op te splitsen bij de spatie waarbij de laatste vermelding dan de familienaam is, de eerste vermelding de eerste voornaam is en de rest dan gewoon de andere voornamen zijn die in de tweede kolom dienen geplaatst te worden.
Maar het probleem waar ik niet uit kom zit hem dus bij familienamen uit meerdere woorden en/of als er een vermelding tussen haakjes aanwezig is.

Ik heb letterlijk zo duizenden namen om te zetten maar geen idee hoe ik dit tot een correct resultaat kan krijgen.

Alvast mijn oprechte dank voor elke bruikbare tip/hulp.

Groetjes,
BlackDevil
1) HP ProDesk (Windows 10 Pro Edu / Intel(R) Core(TM) i5-7500 CPU@ 3.40Ghz 3.41Ghz)
2) Laptop ASUS (Windows 10 Home / Intel(R) Core(TM) i3-3110M CPU@ 2.40GHz 2.40GHz)
Beide (RAM : 8,00 GB / 64-bits besturingssysteem, x64-processor)
Extern (Seagate Backup+ Hub 6TB / Seagate BUP Slim 2TB / Seagate Expansion Desk 5TB / HP ENVY 6030e)
Bullguard Premium Protection / Office Pro Plus 2016 NL

Offline MollyVH

  • Excel-Expert
  • Oplosser
  • *****
  • Berichten: 847
Re: VBA : split en replace
« Reactie #1 Gepost op: 04 december 2022, 16:46:38 »
Hallo BlackDevil,

Daar kom je ook niet uit, vrees ik. Je zou hoogstens elke 'De', 'Den', 'Van de', 'Van den', 'Vanden', enz. kunnen laten beschouwen als deel uitmakend van het erop volgend woord, maar als iemand Anna Maria Petrus De Waele Van den Berghe heet zit je in nesten, en trouwens ook bij simpeler namen als Marc Antoine Bogaert Smet.
De rest is wel met Excel- of vba-logica te regelen, maar globaal bezien blijft het probleem wel onopgelost, helaas.
Tenzij je op een andere manier een lijst van alle mogelijke familienamen kan te pakken krijgen(?)

Groetjes,
Molly
Windows 11 Home NLD 64bit
11th Gen Intel(R) Core(TM) i7-11700 @ 2.50GHz 2496
Aspire TC-1660
Intel(R) UHD Graphics 750 1024MB
476 GB SSD KINGSTON OM8PCP3512F-AA
1863 GB HD Seagate ST2000DM008-2FR102
Office 2021 Professional Plus NLD 64bit

Offline BlackDevil

  • Ambassadeur
  • *****
  • Berichten: 1.029
  • Geslacht: Vrouw
  • veni vidi vici
Re: VBA : split en replace
« Reactie #2 Gepost op: 04 december 2022, 20:24:58 »
Hey Molly,

Bedankt voor jouw reactie...

Gelukkig heb ik in mijn stamboom zo géén van die speciallekes met dubbele familienamen zoals jij aanhaalt....
Enkel maar 'De", 'Van', 'Vande', 'Van de', 'Vanden', 'Van den', enz...
Ik dacht dus ook iets in die trant om gewoon dergelijke vermeldingen te laten toevoegen aan die laatste vermelding in de string.

Om er de vermeldingen tussen haakjes () van tussen te halen heb ik ondertussen al een werkende code gevonden.

En nee, zo worden de namen nu eenmaal door die webapplicatie weergegeven, daar heb ik geen controle over.
In de applicatie zelf zijn er aparte velden voor het invoeren van de namen bij de aanmaak maar als er naderhand een lijst wordt
gegenereerd staan de namen in één veld zoals aangehaald in mijn startbericht.


groetjes,
BlackDevil
1) HP ProDesk (Windows 10 Pro Edu / Intel(R) Core(TM) i5-7500 CPU@ 3.40Ghz 3.41Ghz)
2) Laptop ASUS (Windows 10 Home / Intel(R) Core(TM) i3-3110M CPU@ 2.40GHz 2.40GHz)
Beide (RAM : 8,00 GB / 64-bits besturingssysteem, x64-processor)
Extern (Seagate Backup+ Hub 6TB / Seagate BUP Slim 2TB / Seagate Expansion Desk 5TB / HP ENVY 6030e)
Bullguard Premium Protection / Office Pro Plus 2016 NL

Offline BlackDevil

  • Ambassadeur
  • *****
  • Berichten: 1.029
  • Geslacht: Vrouw
  • veni vidi vici
Re: VBA : split en replace
« Reactie #3 Gepost op: 05 december 2022, 12:30:08 »
***UPDATE***

Na héél wat zoek- en puzzelwerk heb ik een goed werkend code-blokje opgebouwd gekregen.
Vermoedelijk heb ik wegens mijn beperkte kennis wel wat meer tussenstappen gebruikt dan nodig zou zijn maar al bij al
is de code-blok relatief kort en doet hij wat hij moet doen.

Er is maar één klein detail dat ik niet gecorrigeerd krijg maar daar zal ik vrees ik vrede moeten mee nemen omdat dit
volledig aan de opmaak van die webapplicatie te wijten is.

groetjes,
BlackDevil
1) HP ProDesk (Windows 10 Pro Edu / Intel(R) Core(TM) i5-7500 CPU@ 3.40Ghz 3.41Ghz)
2) Laptop ASUS (Windows 10 Home / Intel(R) Core(TM) i3-3110M CPU@ 2.40GHz 2.40GHz)
Beide (RAM : 8,00 GB / 64-bits besturingssysteem, x64-processor)
Extern (Seagate Backup+ Hub 6TB / Seagate BUP Slim 2TB / Seagate Expansion Desk 5TB / HP ENVY 6030e)
Bullguard Premium Protection / Office Pro Plus 2016 NL

Offline MollyVH

  • Excel-Expert
  • Oplosser
  • *****
  • Berichten: 847
Re: VBA : split en replace
« Reactie #4 Gepost op: 05 december 2022, 14:31:29 »
Hallo BlackDevil,

Citaat
zo worden de namen nu eenmaal door die webapplicatie weergegeven, daar heb ik geen controle over
Daar was ik al van overtuigd, en heb ook niets anders willen insinueren. Maar ooit zijn ze op die webapplicatie terechtgekomen, en het leek me erg onwaarschijnlijk dat de basisgegevens daarna vernield zouden zijn, dus waar die namen vandaan komen was dan totaal onbelangrijk.

Maar goed, ik ben heel tevreden dat je er zelf grotendeels uit bent geraakt :thumbsup:
Als je er zin in hebt mag je altijd eens tonen hoe je het hebt aangepakt, wie weet volgt er nog ergens een tip om de code in te korten en/of ook die laatste horde te nemen.

Groetjes,
Molly
Windows 11 Home NLD 64bit
11th Gen Intel(R) Core(TM) i7-11700 @ 2.50GHz 2496
Aspire TC-1660
Intel(R) UHD Graphics 750 1024MB
476 GB SSD KINGSTON OM8PCP3512F-AA
1863 GB HD Seagate ST2000DM008-2FR102
Office 2021 Professional Plus NLD 64bit

Offline BlackDevil

  • Ambassadeur
  • *****
  • Berichten: 1.029
  • Geslacht: Vrouw
  • veni vidi vici
Re: VBA : split en replace
« Reactie #5 Gepost op: 05 december 2022, 15:17:27 »
Hey molly,

Ja al die gegevens heb ik er zelf handmatig ingezet hé in de afgelopen 24 jaar ;-).

en ja, ik zal straks eventjes mijn codeblokje hier vermelden, weet zeker dat er tussenstappen zullen kunnen samengevoegd worden of misschien de hele opbouw anders en korter kan :-)

groetjes,
BlackDevil

1) HP ProDesk (Windows 10 Pro Edu / Intel(R) Core(TM) i5-7500 CPU@ 3.40Ghz 3.41Ghz)
2) Laptop ASUS (Windows 10 Home / Intel(R) Core(TM) i3-3110M CPU@ 2.40GHz 2.40GHz)
Beide (RAM : 8,00 GB / 64-bits besturingssysteem, x64-processor)
Extern (Seagate Backup+ Hub 6TB / Seagate BUP Slim 2TB / Seagate Expansion Desk 5TB / HP ENVY 6030e)
Bullguard Premium Protection / Office Pro Plus 2016 NL

Offline BlackDevil

  • Ambassadeur
  • *****
  • Berichten: 1.029
  • Geslacht: Vrouw
  • veni vidi vici
Re: VBA : split en replace
« Reactie #6 Gepost op: 05 december 2022, 16:06:47 »
bij deze mijn amateuristisch code-blokje  ;D

Sub namen()
'---------- eerste deel namen doorlopen en corrigeren
For a = 2 To 524288
'----- locatie van de bron-naam
  brnaam = Cells(a, 2)
'----- controle of bron-naam gekend is
  If brnaam = "" Or brnaam = "?" Then brnaam = "? ?"
'----- vermeldingen tussen haakjes verwijderen
  For i = 1 To 3
    iPos = InStr(brnaam, "(")
    iPos2 = InStr(brnaam, ")")
    If iPos > 0 Then
        brnaam = Left(brnaam, iPos - 2) & " " & Mid(brnaam, iPos2 + 2)
    End If
  Next i
'----- bron-naam (string) opsplitsen naar Array
  arr_s = Split(brnaam, " ")
'----- array maken met mogelijke onderdelen familienaam
  arr_delen = Array("De", "de", "Van", "van", "den", "Den", "der", "Der", "Vande", "Vanden", "Vander")
'----- familienamen uit meerdere delen verbinden met _ (underscore)
  For s = LBound(arr_s) To UBound(arr_s)
    For Each deel In arr_delen
      If arr_s(s) = deel Then
        zoek = s
        arr_s(s) = deel & "_"
      End If
    Next deel
  Next s
  tdlk = Join(arr_s, " ")
  brnaam = Replace(tdlk, "_ ", "_")
'----- gecorrigeerde string terug naar array splitten
  arr_doel = Split(brnaam, " ")
'----- familienaam en eerste voornaam vastleggen
  aantal = UBound(arr_doel)
  naam = UCase(Replace(arr_doel(aantal), "_", " ")) & " " & arr_doel(0)
'----- adhv aantal elementen in array eventuele extra voornamen vastleggen
  Select Case aantal
    Case 1
      xtrvrnm = ""
    Case 2
      xtrvrnm = arr_doel(1)
    Case 3
      xtrvrnm = arr_doel(1) & " " & arr_doel(2)
    Case 4
      xtrvrnm = arr_doel(1) & " " & arr_doel(2) & " " & arr_doel(3)
    Case 5
      xtrvrnm = arr_doel(1) & " " & arr_doel(2) & " " & arr_doel(3) & " " & arr_doel(4)
  End Select
  '---------- hier nog de wegschrijf-code
  '
  '
Next a
End Sub


Wat die laatste horde betreft (klein detail dat ik niet gecorrigeerd krijg) is dit het volgende :
In de originele lijst staat in de kolom van de namen in elke cel vlak voor de naam een kleine afbeelding van het geslacht.
Als ik deze cel inlees met VBA dan lijkt het in VBA alsof er een spatie voor de naam staat maar blijkbaar erkend VBA dit niet als
een spatie want als ik de Trim-functie gebruik wijzigt er niets aan die schijnbare spatie.
Dus vrees dat ik dit niet opgelost zal krijgen...


groetjes,
BlackDevil
1) HP ProDesk (Windows 10 Pro Edu / Intel(R) Core(TM) i5-7500 CPU@ 3.40Ghz 3.41Ghz)
2) Laptop ASUS (Windows 10 Home / Intel(R) Core(TM) i3-3110M CPU@ 2.40GHz 2.40GHz)
Beide (RAM : 8,00 GB / 64-bits besturingssysteem, x64-processor)
Extern (Seagate Backup+ Hub 6TB / Seagate BUP Slim 2TB / Seagate Expansion Desk 5TB / HP ENVY 6030e)
Bullguard Premium Protection / Office Pro Plus 2016 NL

Offline MollyVH

  • Excel-Expert
  • Oplosser
  • *****
  • Berichten: 847
Re: VBA : split en replace
« Reactie #7 Gepost op: 06 december 2022, 09:37:14 »
Hey BlackDevil,

Even afwijken van de gekozen richting: mijn gevoel zei me plotseling dat het ook met formules moet op te lossen zijn, dus ben ik dat maar eens gaan proberen, en ja hoor.
Er zitten, dat kan ook niet anders, dezelfde voorwaarden aan vast: er mag maar één familienaam inzitten, al dan niet bestaand uit meerdere woorden, en die familienaam moet achteraan staan, dus exact wat je hebt en exact wat ook vereist is voor de vba-oplossing. En natuurlijk ook een lijstje met mogelijke 'voorvoegsels'.
Feit is dat het met vba eenvoudiger is, en 't was ook maar als amusement, maar wou het voor de aardigheid toch even vermelden.

Als je met Trim een spatie niet weg krijgt, dan mag je er vrij zeker van zijn dat er geen spatie staat ;)
Kan je anders eens een mini-bestandje sturen met een paar namen zoals het rechtstreeks uit je webapplicatie komt, dan raakt dat mogelijk ook nog opgelost.

Ik zal vandaag ook je code proberen (agendakwestie :D) bekijken, daar kan ik zelf wel een paar fictieve namen voor verzinnen.

Tot schrijfs,
Molly
Windows 11 Home NLD 64bit
11th Gen Intel(R) Core(TM) i7-11700 @ 2.50GHz 2496
Aspire TC-1660
Intel(R) UHD Graphics 750 1024MB
476 GB SSD KINGSTON OM8PCP3512F-AA
1863 GB HD Seagate ST2000DM008-2FR102
Office 2021 Professional Plus NLD 64bit

Offline BlackDevil

  • Ambassadeur
  • *****
  • Berichten: 1.029
  • Geslacht: Vrouw
  • veni vidi vici
Re: VBA : split en replace
« Reactie #8 Gepost op: 06 december 2022, 10:16:10 »
Hey Molly,

Ik heb eventjes een kleine groep namen van enkele van mijn voorouders (die al enkele eeuwen geleden overleden zijn) zoals ik deze
uit de web-applicatie heb gehaald overgezet naar een nieuw bestandje dat ik hier even aanhang.

Het ding is, als ik rechtstreeks in de cel ga staan en dan dubbelklik of F2 druk om te bewerken dan kan ik met een simpele backspace of delete die eerste spatie wel verwijderen. Maar via de TRIM-functie lukt het dus niet... Maar omdat ik letterlijk honderdduizenden namen heb zie ik me dat nog niet handmatig bij elke naam corrigeren  ;D.

groetjes,
BlackDevil
1) HP ProDesk (Windows 10 Pro Edu / Intel(R) Core(TM) i5-7500 CPU@ 3.40Ghz 3.41Ghz)
2) Laptop ASUS (Windows 10 Home / Intel(R) Core(TM) i3-3110M CPU@ 2.40GHz 2.40GHz)
Beide (RAM : 8,00 GB / 64-bits besturingssysteem, x64-processor)
Extern (Seagate Backup+ Hub 6TB / Seagate BUP Slim 2TB / Seagate Expansion Desk 5TB / HP ENVY 6030e)
Bullguard Premium Protection / Office Pro Plus 2016 NL

Offline MollyVH

  • Excel-Expert
  • Oplosser
  • *****
  • Berichten: 847
Re: VBA : split en replace
« Reactie #9 Gepost op: 06 december 2022, 10:29:43 »
Hoi BlackDevil,

Nog net op tijd vooraleer te moeten vertrekken je bestandje gevonden.
Voer in dit testbestandje eens volgende code uit:
Sub horde()
For i = 2 To 9
    Cells(i, 9) = Replace(Cells(i, 2), Chr(160), "")
Next i
End Sub

Groetjes,
Molly
Windows 11 Home NLD 64bit
11th Gen Intel(R) Core(TM) i7-11700 @ 2.50GHz 2496
Aspire TC-1660
Intel(R) UHD Graphics 750 1024MB
476 GB SSD KINGSTON OM8PCP3512F-AA
1863 GB HD Seagate ST2000DM008-2FR102
Office 2021 Professional Plus NLD 64bit

Offline BlackDevil

  • Ambassadeur
  • *****
  • Berichten: 1.029
  • Geslacht: Vrouw
  • veni vidi vici
Re: VBA : split en replace
« Reactie #10 Gepost op: 06 december 2022, 10:43:00 »
Hey Molly,

Bedankt  _/-\o_ werkt perfect... die schijnbare spaties zijn volledig weg nu  :thumbsup:


groetjes,
BlackDevil












modbreak:bericht aanpassen
1) HP ProDesk (Windows 10 Pro Edu / Intel(R) Core(TM) i5-7500 CPU@ 3.40Ghz 3.41Ghz)
2) Laptop ASUS (Windows 10 Home / Intel(R) Core(TM) i3-3110M CPU@ 2.40GHz 2.40GHz)
Beide (RAM : 8,00 GB / 64-bits besturingssysteem, x64-processor)
Extern (Seagate Backup+ Hub 6TB / Seagate BUP Slim 2TB / Seagate Expansion Desk 5TB / HP ENVY 6030e)
Bullguard Premium Protection / Office Pro Plus 2016 NL

Offline MollyVH

  • Excel-Expert
  • Oplosser
  • *****
  • Berichten: 847
Re: VBA : split en replace
« Reactie #11 Gepost op: 06 december 2022, 16:36:18 »
Hoi BlackDevil,

Zoals ik al dacht: er waren géén spaties...

Het eerste wat me in je code opviel was dat je meer dan 520000 keer de array 'arr_delen' definieert. Die staat dus beter buiten je lus ;)
Het is daarin ook niet nodig zowel 'de' als 'De' op te nemen (ik weet het, 't is mijn schuld, ik had dat in reactie #1 zonder nadenken zo aangegeven :()

Onwaarschijnlijk veel korter kan je code niet, maar wel wat eenvoudiger. Ga er bv. eens met F8 door tot aan de eerste 'Next a', en daarna nogmaals met wat je in de bijlage vindt. O ja, ik had er voor de zekerheid nog iemand met meer dan 2 voornamen aan toegevoegd, maar ook bij jou geen problemen aangetroffen :thumbsup:

Wel enkel testen met een testbestandje, hé, want de resultaten worden al in kolommen C en D geschreven.
Laat maar weten als iets in de code niet duidelijk is!

Groetjes,
Molly
Windows 11 Home NLD 64bit
11th Gen Intel(R) Core(TM) i7-11700 @ 2.50GHz 2496
Aspire TC-1660
Intel(R) UHD Graphics 750 1024MB
476 GB SSD KINGSTON OM8PCP3512F-AA
1863 GB HD Seagate ST2000DM008-2FR102
Office 2021 Professional Plus NLD 64bit

Offline BlackDevil

  • Ambassadeur
  • *****
  • Berichten: 1.029
  • Geslacht: Vrouw
  • veni vidi vici
Re: VBA : split en replace
« Reactie #12 Gepost op: 06 december 2022, 19:24:29 »
Hey Molly,

Hartelijk dank alweer voor jouw hulp.

Ja, ik was er nog vergeten bij te zeggen dat ik mijn code-blok geschreven en getest had zonder de 'loop' en dus enkel getest had voor één specifieke rij.
Had voor het plaatsen op het forum gewoon ff de loop errond gezet om aan te tonen op hoeveel rijen het uiteindelijk moest toegepast worden
en er niet meteen bij stil gestaan dat ik bepaalde onderdelen buiten die loop moest houden ;-).

De enige reden dat ik zowel "De" als "de" enz... erin geplaatst heb was omdat ik vermoedde dat bepaalde functies misschien case-sensitive waren en wou da op die manier opvangen.

Ik ga zo meteen jouw versie eens uittesten en zien hoe ik dan de verdere opbouw van de macro kan aanpakken want ja, dit was nu nog maar enkel voor de namen
maar ook die datums en plaatsen moeten omgezet worden natuurlijk.

Ik laat spoedig mijn bevindingen weten.

groetjes,
BlackDevil

1) HP ProDesk (Windows 10 Pro Edu / Intel(R) Core(TM) i5-7500 CPU@ 3.40Ghz 3.41Ghz)
2) Laptop ASUS (Windows 10 Home / Intel(R) Core(TM) i3-3110M CPU@ 2.40GHz 2.40GHz)
Beide (RAM : 8,00 GB / 64-bits besturingssysteem, x64-processor)
Extern (Seagate Backup+ Hub 6TB / Seagate BUP Slim 2TB / Seagate Expansion Desk 5TB / HP ENVY 6030e)
Bullguard Premium Protection / Office Pro Plus 2016 NL

Offline BlackDevil

  • Ambassadeur
  • *****
  • Berichten: 1.029
  • Geslacht: Vrouw
  • veni vidi vici
Re: VBA : split en replace
« Reactie #13 Gepost op: 07 december 2022, 10:28:05 »
Hey Molly,

Zoals in één van mijn vorige berichten aangehaald, wist ik zeker dat in mijn codeblok overbodige tussenstappen waren  ;D.

Ik heb het testbestandje eens uitgebreid getest met jouw code en deze doet voor 99,9% exact van wat ik nodig had en van wat mijn codeblokje deed.
Er is maar één klein detail dat hij niet doet en waar je vermoedelijk overheen gekeken hebt, nl mijn codelijntje :
'----- controle of bron-naam gekend is
  If brnaam = "" Or brnaam = "?" Then brnaam = "? ?"

Wanneer er gewoon een "?" staat in de cel maakt jouw code er na de splitting wel "? ?" van, zoals gewenst, maar ingeval de cel leeg is wordt dit in jouw code nergens opgevangen en aangepast
en wordt er dus ook een foutmelding gegeven aangezien de array leeg is omdat er niets te "splitten" valt.
Vandaar dat ik dat lijntje code aan het begin, vóór de splitting, van mijn code had geplaatst. Dus daarvoor voeg ik dan nog een lijntje code toe aan jouw code-blokje.

Maar voor de rest is het natuurlijk wel weer een geweldig en proper stukje code  :thumbsup: _/-\o_ .

Ik ga nu nog wat puzzelen voor die datums want, ondanks ik dacht dat die het simpelste onderdeel waren, zijn deze ingewikkelder dan ik dacht.
De plaatsen omzetten daarentegen is wel vrij simpel.


groetjes,
BlackDevil
1) HP ProDesk (Windows 10 Pro Edu / Intel(R) Core(TM) i5-7500 CPU@ 3.40Ghz 3.41Ghz)
2) Laptop ASUS (Windows 10 Home / Intel(R) Core(TM) i3-3110M CPU@ 2.40GHz 2.40GHz)
Beide (RAM : 8,00 GB / 64-bits besturingssysteem, x64-processor)
Extern (Seagate Backup+ Hub 6TB / Seagate BUP Slim 2TB / Seagate Expansion Desk 5TB / HP ENVY 6030e)
Bullguard Premium Protection / Office Pro Plus 2016 NL

Offline MollyVH

  • Excel-Expert
  • Oplosser
  • *****
  • Berichten: 847
Re: VBA : split en replace
« Reactie #14 Gepost op: 07 december 2022, 10:38:22 »
Hallo BlackDevil,

Je vermoeden klopt helemaal: gewoon over gekeken :(
Dat de code '?' dan omzet naar '? ?' komt doordat er maar één 'woord' gevonden werd. Dat betekent ook dat als er bv. enkel een voornaam of enkel een familienaam staat die ook dubbel in het resultaat zal komen, maar misschien mogen we verwachten dat dit uitgesloten is? Anders moeten we de code nog lichtjes uitbreiden.

Zoals je weet kent Excel geen datums vóór 1900, dus hoe moeilijk dat zal zijn hangt helemaal af van wat je er precies mee wil. Als je er niet uitkomt weet je ons wel weer te vinden ;)

Groetjes,
Molly
Windows 11 Home NLD 64bit
11th Gen Intel(R) Core(TM) i7-11700 @ 2.50GHz 2496
Aspire TC-1660
Intel(R) UHD Graphics 750 1024MB
476 GB SSD KINGSTON OM8PCP3512F-AA
1863 GB HD Seagate ST2000DM008-2FR102
Office 2021 Professional Plus NLD 64bit

 


www.combell.com