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

namen sorteren

Status
Niet open voor verdere reacties.

jelledasselaar

Gebruiker
Lid geworden
13 sep 2011
Berichten
120
In de sheet staan de achternamen in verschillende kolommen door elkaar. Dat wordt door de verschillende tussenvoegsels e.d. veroorzaakt.
Is het mogelijk om hieruit de 1e achternamen te sorteren (kolom J).
Nog mooier zou zijn, inclusief de tussenvoegsels e.d.(kolom J tm P), maar dat hoeft niet per sé.
Wie heeft er een goed idee?

Met vriendelijke groet,
Jelle

Bekijk bijlage namen sorteren.xlsx
 
Kort en bondig. Niet aan te beginnen.
Hoe ga je XL vertellen waar wat moet komen ?? Op welke criteria moet geselecteerd worden ?? Enzovoort, Enzovoort ....
 
Beste Warme Bakker,

Kun je iets mee met de Hoofdletter? De achternaam is de eerste cel die met een Hoofdletter begint.
 
Het is ook de laatste naam in de rij of de naam voor de cel met een streepje -

Maar dat is alleen nuttig voor het vinden van achternaam. Daarna wordt het wat complexer om alles erachter toe te voegen

Hoe kom je aan de oorspronkelijke lijst, kan je bij de bron niet zaken gelijk goed doen?

Ron
 
Laatst bewerkt:
Jelle,

Zoeken naar een hoofdletter, doe je met
Code:
ALS(EN(CODE(LINKS(A2;1))>=65;CODE(LINKS(A2;1))<=90);
 
Dag Haaren 101: de namen komen uit verschillende bronnen, dat is 't probleem. en ze moeten samengevoegd worden tot 1 bestand.
Robdgr: er volgt een foutmelding bij deze formule. Zoekt deze ook wel verschillende horizontale cellen?
 
Dag Haaren 101, je hebt gelijk: Het is ook de laatste naam in de rij of de naam voor de cel met een streepje -. Kun je daar niet wat mee en vervolgens de rest er achter laten zetten? Misschien domme vraag, maar er staat vaak dat domme vragen niet bestaan!
 
Verwijder de cellen in de kolommen J t/m P, en laat de code eens lopen.
In de bijlage heb ik het al voor je gedaan.
Code:
Sub hsv()
Dim i As Long, sn, j As Long, sn0 As String
For i = 2 To 11
On Error Resume Next
   sn0 = Join(Application.Index(Range(Cells(i, 1).Address & ":" & Cells(i, Columns.Count).End(xlToLeft).Address).Value, 1, 0), "|")
If Err.Number > 0 Then sn0 = ""
 sn = Split(sn0, "|")
     For j = 0 To UBound(sn)
If Left(sn(j), 1) = UCase(Left(sn(j), 1)) Then
  Cells(i, 1).Resize(, 8).ClearContents
  Cells(i, 1) = sn(j)
  Cells(i, 2).Resize(, UBound(sn)) = Split(Replace(sn0, sn(j) & "|", ""), "|")
     Exit For
   End If
     Next j
   Next i
 With Columns("A:H")
   .WrapText = False
   .AutoFit
 End With
End Sub
 

Bijlagen

Laatst bewerkt:
Beste HSV,

domme mensen bestaan wel, zoals ik!
als ik je bestand download krijg ik niks te zien. ook niet bij bewerken inschakelen.
wat je gestuurd hebt lijkt me heel knap, dit zal wel programmeren zijn, maar ik zou niet weten wat ik er mee aan moet!
moet ik dit knippen en plakken; geen idee!
 
Het zal net in een fase zijn geweest dat ik het bestand iets heb aangepast.
Probeer het nog eens.
Als het bestand is geopend druk je op Alt+F8 en drukt op uitvoeren.
 
Het begint iets lichter te worden!
't werkt inderdaad heel mooi op het voorbeeld.
Maar hoe bouw ik deze formule nu in of om in een bestand van zo'n 3600 namen en 50 (ook andere) kolommen?
 
Verander de regel als volgt.
Code:
For i = 2 To [COLOR=#FF0000]Cells(Rows.Count, 1).End(xlUp).Row[/COLOR]
 
Dag HSV,
dit is gelukt!
kunt u de sortering beperken tot de eerste 8 kolommen A:H ?
Nu worden de rechtse kolommen ook, ongewild, gehutseld!
 
Dag Jelle,

Hier de aangepaste code.

Code:
Sub hsv()
Dim i As Long, sn, j As Long, sn0 As String
For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
On Error Resume Next
     sn0 = Join(Application.Index(Range(Cells(i, 1), Cells(i, 8)).Value, 1, 0), "|")
If Err.Number > 0 Then sn0 = ""
       sn = Split(sn0, "|")
  For j = 0 To 7
If Left(sn(j), 1) = UCase(Left(sn(j), 1)) Then
         Cells(i, 1).Resize(, 8).ClearContents
         Cells(i, 1) = sn(j)
         Cells(i, 2).Resize(, 7) = Split(Replace(sn0, sn(j) & "|", ""), "|")
     Exit For
   End If
         Next j
       Next i
 With Columns("A:H")
   .WrapText = False
   .AutoFit
 End With
End Sub
 
Dag HSV,
alweer bedankt!
is het veel gevraagd dat je me dit in een blanco werkblad zet; dat lukt me niet.
 
Neuuuuuu,

Het bronblad heet "Blad1" en het doelblad is genaamd "Blad2".
Code:
Sub hsv()
Dim i As Long, sn, j As Long, sn0 As String
With Sheets("Blad1")
For i = 2 To .Cells(Rows.Count, 1).End(xlUp).Row
On Error Resume Next
      sn0 = Join(Application.Index(.Range(.Cells(i, 1), .Cells(i, 8)).Value, 1, 0), "|")
If Err.Number > 0 Then sn0 = ""
       sn = Split(sn0, "|")
  For j = 0 To 7
If Left(sn(j), 1) = UCase(Left(sn(j), 1)) Then
With Sheets("Blad2")
        .Cells(i, 1).Resize(, 8).ClearContents
        .Cells(i, 1) = sn(j)
        .Cells(i, 2).Resize(, 7) = Split(Replace(sn0, sn(j) & "|", ""), "|")
End With
     Exit For
   End If
         Next j
      Next i
 With Sheets("Blad2").Columns("A:H")
   .WrapText = False
   .AutoFit
       End With
    End With
End Sub
 
Dag HSV,
helaas, dit is me onduidelijk!
Zou je het in een lege map willen zetten, dat ik daarin de n.a.w.-lijst kopieer?
 
Het is eenvoudiger om in hetzelfde werkboek te werken.

Voer de code eens uit.
De gegevens worden naar Blad2 geschreven, als die tenminste de naam "Blad2" heeft.
Als je dit niet wil, dan moet ik het maar ergens aanpassen.
 
Sorry, maar ik weet niet hoe ik dat overzicht van vanmorgen in een werkblad of anders aan het werk krijg..
 
Volgens mij lopen we langs elkaar.

Je kan de gegevens toch naar het werkboek met de code kopiëren?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan