Help!

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

Hulp bij posten

Recente topics

Auteur Topic: verwijderen overtollige tekst  (gelezen 1790 keer)

0 leden en 1 gast bekijken dit topic.

Offline strop2

  • Lid
  • *
  • Berichten: 62
  • Geslacht: Man
  • Oplossing.be
verwijderen overtollige tekst
« Gepost op: 19 november 2021, 18:45:10 »
Beste oplossers,
 
Ik zou graag een tabel (lijst) opkuisen via een VBA maar zit een beetje vast.
In kolom K wens ik enkel straat en nummer te behouden en een nieuwe kolom creëren voor postnummer en stad.
De naam (kolomB) en al wat ervoor staat mag weg uit kolom K.
In bijlage een voorbeeldje van wat ik zou willen bereiken.


Dank

Strop2

Offline JEC

  • Excel-Expert
  • Ervaren lid
  • *****
  • Berichten: 422
Re: verwijderen overtollige tekst
« Reactie #1 Gepost op: 19 november 2021, 19:16:17 »
Het kan maar je zou toch even wat meer info(in de vorm van varianten van namen/straatnamen etc) moeten geven.
Is de opzet altijd hetzelfde?

Straatnamen hebben ook wel eens spaties waardoor splitten op spaties niet altijd zal werken.

Offline JEC

  • Excel-Expert
  • Ervaren lid
  • *****
  • Berichten: 422
Re: verwijderen overtollige tekst
« Reactie #2 Gepost op: 19 november 2021, 21:14:56 »
Hierbij een optie: (mogelijk werkt deze niet ivm oudere Excel versie). In de bijlage zit ook nog een sleepbare versie. Kijk maar even ;)
Keuze uit 2 UDF's dus.

Function jecx(cell As String, naam As String) As Variant
sq = Split(Split(Application.Trim(Replace(cell, naam, "@")), "@")(1))
x = LTrim(Join(Filter(Filter(sq, sq(UBound(sq)), False), sq(UBound(sq) - 1), False)))
y = Split(LTrim(Replace(Join(sq), x, "")))
jecx = Split(Join(Array(x, y(0), y(1)), "~"), "~")
End Function

Offline strop2

  • Lid
  • *
  • Berichten: 62
  • Geslacht: Man
  • Oplossing.be
Re: verwijderen overtollige tekst
« Reactie #3 Gepost op: 20 november 2021, 11:11:43 »
Dag Veerj,

Bedankt voor je reactie.
 De opzet is telkens dezelfde de namen vermeld in kolom B komen terug in Kolom K. Daarom dacht ik te zoeken op naam en alles te verwijderen wat voor de naam staat inclusief de naam. En zoeken van rechts tot op eerste vier cijfers zodat we postcode en stad kunnen uithalen en dus enkel straat en nummer overblijven in kolom K.
Ik denk dat je wel goed zit met je function maar het lukt mij niet dit toe te passen op mijn bestand.
Zoals je kan zien is er al een deel van de informatie verwijderd door er een vervolg aan te breien dacht ik er wel te komen.
Sorry voor mijn beperkte kennis.
Grt.
Strop2

Offline JEC

  • Excel-Expert
  • Ervaren lid
  • *****
  • Berichten: 422
Re: verwijderen overtollige tekst
« Reactie #4 Gepost op: 20 november 2021, 12:09:07 »
Als je een bestand plaatst met meer varianten kan ik je misschien beter helpen.

De aangereikte methode is wel de manier waarop je er zou moeten komen

Offline strop2

  • Lid
  • *
  • Berichten: 62
  • Geslacht: Man
  • Oplossing.be
Re: verwijderen overtollige tekst
« Reactie #5 Gepost op: 22 november 2021, 08:51:06 »
Dag Veerj,

Je aangereikte oplossing werkt inderdaad (heb er wel even moeten op zoeken, kende deze functie niet). Maar ik denk dat je niet mee bent in mijn verhaal dit gaat om een ledenlijst (+-300) dus is het de bedoeling om kolom K op te schonen en enkel adres te behouden. Zoals ik het nu zie (als ik het goed heb begrepen. :-[) moet er een extra kolom of lijn gemaakt te worden met de verwijzing naar de JEC.
Grt.
Strop2

Offline JEC

  • Excel-Expert
  • Ervaren lid
  • *****
  • Berichten: 422
Re: verwijderen overtollige tekst
« Reactie #6 Gepost op: 22 november 2021, 10:47:27 »
Hi strop,

De mededeling achter de plaatsnaam kan verschillen van lengte. Dat maakt het lastig om steeds het juiste uit de string te filteren.
Het zou kunnen met regular expression.



Offline JEC

  • Excel-Expert
  • Ervaren lid
  • *****
  • Berichten: 422
Re: verwijderen overtollige tekst
« Reactie #7 Gepost op: 22 november 2021, 11:11:09 »
BVB:

Function jec(cell As String, naam As String) As Variant
 sq = Split(Application.Trim(Replace(cell, naam, "@")), "@")(1)
  With CreateObject("VBScript.RegExp")
    .Global = True
    .Pattern = "\D.+\s\d+\s\D+\s"
     x = LTrim(.Execute(sq)(0))
    .Pattern = "\D+\d+\s"
     st = .Execute(x)(0)
     sp = Split(Trim(Replace(x, st, "")))
  End With
 jec = Array(st, sp(0), sp(1))
End Function

In de bijlage ook weer een sleepbare versie, voor het geval SPILL niet werkt in jouw Excel versie.

Offline MollyVH

  • Excel-Expert
  • Oplosser
  • *****
  • Berichten: 847
Re: verwijderen overtollige tekst
« Reactie #8 Gepost op: 22 november 2021, 11:30:23 »
Citaat
De mededeling achter de plaatsnaam kan verschillen van lengte. Dat maakt het lastig om steeds het juiste uit de string te filteren

Om niet te zeggen quasi(?) onmogelijk!
Er zijn ook plaatsnamen die een spatie bevatten. En zelfs als je dat zou opvangen door naar een 'getal' van 4 cijfers te zoeken, en dat wordt dan gevolgd door 2 letters, is dat dan deel 1 van een plaatsnaam of deel 2 van een postcode uit Nederland?

In elk geval een  :thumbsup: voor wie het aandurft dergelijke kwesties aan te pakken  ;)
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 JEC

  • Excel-Expert
  • Ervaren lid
  • *****
  • Berichten: 422
Re: verwijderen overtollige tekst
« Reactie #9 Gepost op: 22 november 2021, 11:33:27 »
Spaties in plaatsnamen worden ook opgevangen met deze functie :)
Verder weet ik niet hoe gevarieerd de dataset van TS is. We gaan het zien.

Offline MollyVH

  • Excel-Expert
  • Oplosser
  • *****
  • Berichten: 847
Re: verwijderen overtollige tekst
« Reactie #10 Gepost op: 22 november 2021, 11:43:24 »
@ Veerj,

Je jecx-functie kan ik wegens verouderde Office niet testen, maar de jec-functie geeft bij mij enkel het eerste stukje van de plaatsnaam...
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 JEC

  • Excel-Expert
  • Ervaren lid
  • *****
  • Berichten: 422
Re: verwijderen overtollige tekst
« Reactie #11 Gepost op: 22 november 2021, 11:46:28 »
Dat is vreemd, hier werkt het wel.
Ook verwacht ik eerder dat jec niet werkt in oudere versies en jecx wel.


Offline MollyVH

  • Excel-Expert
  • Oplosser
  • *****
  • Berichten: 847
Re: verwijderen overtollige tekst
« Reactie #12 Gepost op: 22 november 2021, 12:06:55 »
Vreemd, zeg dat wel  :D

Ik kan er niets aan veranderen, enkel jec werkt hier (2007  :-[).

Dat er in straatnamen spaties kunnen voorkomen zal uiteraard niemand verbazen, maar ik had het telkens over plaatsnamen. Ze zijn mogelijk op de vingers van één hand te tellen maar bestaan doen ze. Dat zal voor deze vraag niet het grootste struikelblok zijn (300 resultaten even overlopen), maar vba-technisch blijft het een uitdaging (die ik liever uit de weg ga  ???)
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 JEC

  • Excel-Expert
  • Ervaren lid
  • *****
  • Berichten: 422
Re: verwijderen overtollige tekst
« Reactie #13 Gepost op: 22 november 2021, 12:10:31 »
Inderdaad een taaie klus om alles te ondervangen. 100% waterdicht zal het nooit worden.

Voor deze situatie is de regex mogelijk voldoende. Even wachten op strop ;D

Offline strop2

  • Lid
  • *
  • Berichten: 62
  • Geslacht: Man
  • Oplossing.be
Re: verwijderen overtollige tekst
« Reactie #14 Gepost op: 23 november 2021, 08:18:49 »
Dag Veerj,

Nogmaals dank voor je reactie en knap staaltje programmeer werk. \o/
Het werkt goed hier en daar moet ik nog ingrijpen maar dat is geen ramp. Gelukkig woon ik België en zijn de postcodes iets eenvoudiger dan in Nederland. ::)


Grt.
Strop2

 


www.combell.com