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

de eerste hoofdletter in een tekst vinden

Status
Niet open voor verdere reacties.

gershi

Gebruiker
Lid geworden
12 feb 2012
Berichten
53
Wie o wie heeft een goede formule om de eerste hoofdletter in een tekst te vinden ?
 
@,

Ik kwam zo iets op een site tegen, maar kreeg het niet werkend na vertaling. Ik las de vraag wat de positie van de eerste hoofdletter is en die vind je door jouw formule 'in te pakken':
Code:
=VIND.ALLES(DEEL(A1;VERGELIJKEN(WAAR;CODE(DEEL(A1;RIJ(INDIRECT("1:"&LENGTE(A1)));1))<91;0);1);A1;1)
Ook matrix.
 
@ Rob en WHER
Nadeel van jullie formules is wel dat het niet werkt bij strings met een spatie in :confused:

Als het mag met een stukje VBA
Code:
Function FirstCap(Cell As Range)
    For FirstCap = 1 To Len(Cell.Value)
       If Mid(Cell.Value, FirstCap, 1) Like "[A-Z]" Then Exit For
    Next FirstCap
End Function
 
Hartelijk dank voor alle suggesties, zoasl Rob en Wher al meldde, bij spatie's werkt dit niet. Mag ik mijn probleem even voorleggen:
Moet van de ledenadminitatie met zo'n 120.000 leden de NAW gegevens "uit elkaar trekken". De namen voorletters(zonder punten) en tussenvoegsels staan in 1 cel.
Ik zoek een oplossing om in 1 keer alle namen uit een cel naar drie cellen te kopieren. Dus:
"ASDF van der Groot" moet worden: "Groot" "A.S.D.F." "van der"
Voor iemand een uitdaging?
 
O ja, ik vergeet nog iets belangrijks, ik veel gevallen staan er WEL punten tussen de voorletters
 
Ik zoek een oplossing om in 1 keer alle namen uit een cel naar drie cellen te kopieren.
Laat ik dit vast zeggen: 1 oplossing voor alle mogelijkheden zul je niet vinden.
Je zult alle records 1 voor 1 altijd moeten nalopen.
Post even een bestandje met de diverse mogelijkheden die omgezet moeten worden.
dan kunne we je misschien met een aantal verschillende formules helpen.
 
Ok, hier enkele namen zoals die in 1 cel staan.

Gerard

KWH Peperkamp
GM Tijssen
O van Maurik Schaafsma
J.J. van Hattum
PJH van Hattum-Eldik
GB van den Hatert
A.S. van Lent
GT van Lent
F van Bekkum
H.L. van Eldik
C van Gelderen
 
Bekijk dit eens.
Maar zoals je ziet, en ik ook al voor gewaarschuwd had, is het niet 100% waterdicht.
 

Bijlagen

Willem,

Hartelijk dank, als er geen betere oplossing komt, zal ik het hier mee moeten doen.
Zou VBA hier een oplossing kunnen bieden, waarbij elke cel eerst beoordeeld gaat worden op zijn structuur?

Wie kan er degelijk script schrijven?

Gerard
 
Ervan uitgaande dat de gegevens in de A-kolom staan:

Code:
Sub Namen()
Dim lRij As Long
Dim lLRij As Long
Dim rB As Range
    lRij = 1
    lLRij = Range("A" & Rows.Count).End(xlUp).Row
    While lRij <= lLRij
        Set rB = Range("A" & lRij)
        bg = InStr(1, rB, " ")
        For l = bg To Len(Range("A" & lRij).Value)
            If Mid(rB, l, 1) Like "[A-Z]" Then
                Range("B" & lRij).Value = Mid(rB, l, Len(rB))
                Range("C" & lRij).Value = Left(rB, bg)
                Range("D" & lRij).Value = Mid(rB, bg, l - bg - 1)
                l = Len(rB)
            End If
            
        Next
        lRij = lRij + 1
        Application.StatusBar = "Rij " & lRij & " van " & lLRij
    Wend
    Application.StatusBar = False
End Sub
Links onderaan op de statusbalk verschijnt Rij ... van ... zodat je een indicatie hebt hoever de macro is.

Met vriendelijke groet,


Roncancio
 
Hallo Roncancio,

Hartelijk dank hiervoor, mijn vorige vraag was iets te vroeg gesteld.
Direct kwam jouw script maar,

ik heb geen ervaring met macro/VBA , kun je me aangeven waar ik dit script moet plaatsen,

Alvast hartelijk dank,

Gerard
 
Hallo Roncancio,

Het werkt! Bedankt, durf het bijna niet te vragen, maar heb je een iedee hoe er punten tussen de voorletters kunnen komen?

Nogmaals bedankt,

Gerard
 
Zoiets:

Code:
Sub Namen()
Dim lRij As Long
Dim lLRij As Long
Dim rB As Range
Dim iPos As Integer
Dim sVN As String
Dim iBG As Integer
Dim iLng As Integer

    lRij = 1
    lLRij = Range("A" & Rows.Count).End(xlUp).Row
    While lRij <= lLRij
        Set rB = Range("A" & lRij)
        iBG = InStr(1, rB, " ")
        For iLng = iBG To Len(Range("A" & lRij).Value)
            If Mid(rB, iLng, 1) Like "[A-Z]" Then
                Range("B" & lRij).Value = Mid(rB, iLng, Len(rB))
                If Mid(rB, 2, 1) <> "." Then
                    For iPos = 1 To iBG
                        sVN = sVN & Mid(rB, iPos, 1) & "."
                    Next
                    Range("C" & lRij).Value = Left(sVN, Len(sVN) - 1)
                    sVN = ""
                Else
                    Range("C" & lRij).Value = Left(rB, iBG)
                End If
                Range("D" & lRij).Value = Mid(rB, iBG, iLng - iBG - 1)
                iLng = Len(rB)
            End If
            
        Next
        lRij = lRij + 1
        Application.StatusBar = "Rij " & lRij & " van " & lLRij
    Wend
    Application.StatusBar = False
End Sub

Met vriendelijke groet,


Roncancio
 
Hallo Roncancio,

Hartelijk dank voor je script, deze "losgelaten" op het grote ledenbestand en dat gaf een heel goed resultaat.
Blijkt er nog 1 hiaatje in te zitten, nl.: sommige namen staan volledig met hoofdletters, zodat de tussenvoegsels niet meer in de aparte kolommen komen.
Voorbeeld:

J van der Berg Berg J. van der
C VAN DER DOELEN VAN DER DOELEN C.

Dan nog een vraag:

Als ik een mailing wil sturen naar de leden en deze komen op het zelfde adres voor als vader, moeder en kinderen met allen dezelfde (begin) achternaam
maar met exact dezelfde postcode en adres, moet er maar een mail gestuurd te worden naar "Fam." i.p.v. b.v. 5 verschiilende.

Voorbeeld.
JC Hartog, postcode 1234DA, Boslaan 12, Man,
A Hartog, postcode 1234DA, Boslaan 12, Man,
W Hartog-de Ridder, postcode 1234DA, Boslaan 12, Vrouw,
Z Hartog, postcode 1234DA, Boslaan 12, Vrouw,
E Hartog, postcode 1234DA, Boslaan 12, Man,

Moet 1 record worden met:
Hartog, postcode 1234DA, Boslaan 12, Fam.

overige 4 records moeten gewist worden

Zal dit kunnen lukken?

Met vriendelijke groet,

Gerard
 
Het omzetten van hoofdletters naar kleine letters zal wel grotendeels lukken dmv Replace maar de mailing wordt een ander verhaal.
Zeker als alle adresgegevens in 1 cel staan.

Met vriendelijke groet,


Roncancio
 
O.k. maar dat hoeft ook niet in dezelfde slag.
Stel me voor eerst het bestand op orde te maken zodat alles in zijn eigen cel staat (met kleine letters), en dan weer een mail script er op los te laten.

Met vriendelijke groet,

Gerard
 
Of het in 1 keer kan of niet is het probleem niet.
Hoe staan de adresgegevens en postcodes vermeld?
Staan de adresgegevens in 1 cel? Als dat zo is dan wordt het lastig om de unieke waardes te achterhalen.

Met vriendelijke groet,


Roncancio
 
Bekijk dit eens.
Sorteer op kolom H
en delete de rijen waarin een 'x' staat.
 

Bijlagen

Bedankt Willem,

Dit werkt zeker wel, maar ik merk dat als de kolommen met formules "gevuld" worden, daar een enorme tijd mee gemoeid gaat.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan