[VBA] Excel Telefoon nummers aanpassen

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • Plainside
  • Registratie: September 2014
  • Laatst online: 16:08

Plainside

I browse when I'm at work

Topicstarter
Mijn vraag
Op het moment zit ik een beetje vast met het maken van een Excel Macro die mij enorm kan helpen voor mijn werk.
Wat ik probeer te doen is het volgende, in Kolom A heb ik een lijst met telefoon nummers beginnend met 00.
Hoewel deze notitie goed is (0 voor de buitenlijn) wordt de naam niet goed mee gekoppeld wanneer het nummer naar binnen belt.
Hiervoor moet die notatie 0~0 worden, ik heb dit al geprobeerd met Find and Replace maar helaas geen geluk(sommige nummers hebben 00 in het midden, aan het einde, etc.) waardoor dit ook wordt veranderd.


Wat ik al gevonden of geprobeerd heb
Ik heb al verschillende sites bezocht voor het vinden van een code die misschien kan werken, tot nu geen geluk.
Hoewel ik dichtbij ben gekomen in het geval waar ik zelf wat aan het proberen was.
code:
1
2
3
4
5
6
7
8
9
10
Sub Replacing()
        
    Dim OgText As String
    Dim cortext As String
    
    OgText = Range("A1").Value
    corrtext = Replace(OgText, "006", "0~06")
    
    Range("A1").Offset(, 1).Value = corrtext
End Sub


Ook moet heb ik moeite met het vinden hoe ik de range kan aanpassen.
In dit voorbeeld veranderd die alleen Kolom A Rij 1, er zijn 1000+ Entries waarvan 200-300 06 nummers.
Het stuk code dat ik mis is dat die alleen naar de eerste paar cijfers kijk.
Is er iemand die mij hierbij kan helpen om eventueel de code zo aan te passen of mij in de juiste richting kan sturen.

P.s. Ik weet dat het VBA is maar ben geen programeurtje en heb geen zin om 1000+ entries met de hand na te lopen.
En dit kan nog vaker voor komen dus dan ben ik voortaan lekker voorbereid :+ .

Beste antwoord (via Plainside op 16-08-2017 20:10)


  • Mijzelf
  • Registratie: September 2004
  • Niet online
Volgens mij
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Sub Replacing()
{
   <....>
  With regEx
            .Global = True
            .MultiLine = False
            .IgnoreCase = False
            .Pattern = "^00"
   End With
   corrText = regEx.Replace(OgText, "0~0")
   Set regEx = Nothing
   
   <....>
End Sub

Alle reacties


Acties:
  • 0 Henk 'm!

  • Switchie
  • Registratie: April 2009
  • Niet online

Switchie

Mr. Evil Genius

Met deze oplossing ga je toch tegen hetzelfde probleem oplopen als find en replace? Je doet hiermee exact hetzelfde

'Future proof' (de; v) Verschijnsel waarbij men een dure aankoop rechtvaardigt door innovatie te negeren


Acties:
  • Beste antwoord
  • 0 Henk 'm!

  • Mijzelf
  • Registratie: September 2004
  • Niet online
Volgens mij
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Sub Replacing()
{
   <....>
  With regEx
            .Global = True
            .MultiLine = False
            .IgnoreCase = False
            .Pattern = "^00"
   End With
   corrText = regEx.Replace(OgText, "0~0")
   Set regEx = Nothing
   
   <....>
End Sub

Acties:
  • 0 Henk 'm!

  • TheFes
  • Registratie: Juni 2001
  • Laatst online: 16:33
Waarom niet met een simpele formule?
stel dat de nummers in kolom A staan, met in A2 de eerste
Zet in B2 de volgende formule ="0~0"&MID(A2,3,99)

Deze formule zet eerst 0~0 neer en dan de rest van je nummer vanaf karakter 3 (tot max 99 karakters, maar ik neem aan dat je nummers niet zo lang zijn)

Home Assistant configuratie


Acties:
  • 0 Henk 'm!

  • Plainside
  • Registratie: September 2014
  • Laatst online: 16:08

Plainside

I browse when I'm at work

Topicstarter
Switchie schreef op woensdag 16 augustus 2017 @ 15:58:
Met deze oplossing ga je toch tegen hetzelfde probleem oplopen als find en replace? Je doet hiermee exact hetzelfde
Als ik mij niet vergis kan je de selectie limiteren tot de eerste paar karakters.
Daarnaast zijn er nog een paar nummers met 0057, 00049(buitelands en nog wel meer anderen), dus misschien iets van een array/string(minimale ervaring met programmeren hier) of iets?

Acties:
  • +1 Henk 'm!

  • Case
  • Registratie: Oktober 2000
  • Laatst online: 07-10 13:27
Ik zou het ook met een formule gewoon oplossen. Er vanuitgaande dat in kolom A je telefoonnummers staan, zou je de volgende formule kunnen gebruiken.

=IF(IF(LEFT(A1;2)="00";TRUE;FALSE);(REPLACE(A1;1;2;"0~0"));A1)

edit: dit zou je nog uit kunnen breiden dat hij het alleen bij tiencijferige nummers doet, zodat je ook geen problemen krijgt met internationale nummers.

edit 2:
Zo dus:
IF(AND(IF(LEFT(A2;2)="00";TRUE;FALSE);IF(LEN(A2)=10;TRUE;FALSE));REPLACE(A2;1;2;"0~0");A2)

excel file voorbeeld:
https://www.dropbox.com/s.../excelvoorbeeld.xlsx?dl=1

[ Voor 47% gewijzigd door Case op 16-08-2017 16:14 ]

Mijn Firewizzie


Acties:
  • 0 Henk 'm!

  • Plainside
  • Registratie: September 2014
  • Laatst online: 16:08

Plainside

I browse when I'm at work

Topicstarter
TheFes schreef op woensdag 16 augustus 2017 @ 15:59:
Waarom niet met een simpele formule?
stel dat de nummers in kolom A staan, met in A2 de eerste
Zet in B2 de volgende formule ="0~0"&MID(A2,3,99)

Deze formule zet eerst 0~0 neer en dan de rest van je nummer vanaf karakter 3 (tot max 99 karakters, maar ik neem aan dat je nummers niet zo lang zijn)
Uhh, of ik doe wat fout maar ik krijg dit niet werkend.
Geeft een aan dat er een probleem is gevonden met de Formule en wil deze niet uitvoeren.
Mijzelf schreef op woensdag 16 augustus 2017 @ 15:59:
Volgens mij
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Sub Replacing()
{
   <....>
  With regEx
            .Global = True
            .MultiLine = False
            .IgnoreCase = False
            .Pattern = "^00"
   End With
   corrText = regEx.Replace(OgText, "0~0")
   Set regEx = Nothing
   
   <....>
End Sub
Ik krijg hierbij een Syntax fout.

[ Voor 28% gewijzigd door Plainside op 16-08-2017 16:10 ]


Acties:
  • 0 Henk 'm!

  • TheFes
  • Registratie: Juni 2001
  • Laatst online: 16:33
Plainside schreef op woensdag 16 augustus 2017 @ 16:09:
[...]


Uhh, of ik doe wat fout maar ik krijg dit niet werkend.
Geeft een aan dat er een probleem is gevonden met de Formule en wil deze niet uitvoeren.
Mijn formule gaat uit van Excel in het Engels, met . (punt) als decimalen teken en , (komma) voor gebruik in de formules

Bij NL Excel heet de formule wellicht anders, en moet je vaak ; (puntkomma) gebruiken in de formule

Kan dat het zijn?

Home Assistant configuratie


Acties:
  • 0 Henk 'm!

  • Plainside
  • Registratie: September 2014
  • Laatst online: 16:08

Plainside

I browse when I'm at work

Topicstarter
TheFes schreef op woensdag 16 augustus 2017 @ 16:16:
[...]


Mijn formule gaat uit van Excel in het Engels, met . (punt) als decimalen teken en , (komma) voor gebruik in de formules

Bij NL Excel heet de formule wellicht anders, en moet je vaak ; (puntkomma) gebruiken in de formule

Kan dat het zijn?
Zojuist geprobeerd helaas geen resultaat dan foutcodes weer.
Ik ga nu kijken of ik iets met de code kan doen door veel te googlen en shit..
Mijzelf schreef op woensdag 16 augustus 2017 @ 15:59:
Volgens mij
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Sub Replacing()
{
   <....>
  With regEx
            .Global = True
            .MultiLine = False
            .IgnoreCase = False
            .Pattern = "^00"
   End With
   corrText = regEx.Replace(OgText, "0~0")
   Set regEx = Nothing
   
   <....>
End Sub
Hoewel ik niet precies the RegEx hier heb gebruikt was het toch de oplossing.
code:
1
2
3
^00(.*)$

0~0$1

Heb ik uiteindelijk gebruikt door de lijst naar notepad++ te kopiëren en daar find and replace gedaan :D
Allen bedankt voor de hulp _/-\o_ _/-\o_

[ Voor 39% gewijzigd door Plainside op 16-08-2017 20:11 ]

Pagina: 1