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

Macro om tekst samen te voegen op 1 regel

Status
Niet open voor verdere reacties.

Excellies

Gebruiker
Lid geworden
22 dec 2021
Berichten
43
Hallo,

Eerder heeft iemand een macro gemaakt om tekst die overeenkomt samen te voegen op de regel daarnaast.
Nu krijg ik het zelf niet voor elkaar de macro zo aan te passen dat wanneer de tekst in kolom A overeenkomt, de tekst van kolom B wordt samengevoegd in kolom C.
(Zie voorbeeldfile ter verduidelijking, de macro die ik al had zit er ook nog bij)

Hoop dat jullie mij hierbij kunnen helpen!


Met vriendelijke groet,

Excellies
 

Bijlagen

Code:
Sub Samenvoegen()
    Dim rij As Long
    Dim rijFirst As Long
    Dim Tekst As String
    Dim Woord As String
    
    rij = 2
    rijFirst = rij
    Tekst = Cells(rij, 2)
    Do While Cells(rij, 1) <> vbNullString
        Woord = Cells(rij, 1)
        If Cells(rij + 1, 1) <> vbNullString Then
            If Woord = Cells(rij + 1, 1) Then
                Tekst = Tekst & ", " & Cells(rij + 1, 2)
            Else
                Cells(rijFirst, 3) = Tekst
                Tekst = Cells(rij + 1, 2)
                rijFirst = rij + 1
            End If
        End If
        rij = rij + 1
    Loop
    Cells(rijFirst, 3) = Tekst
End Sub
 
Een dictionary is hier heel geschikt

Code:
Sub jec()
 Dim ar, i As Long
 ar = Range("A2", Range("B" & Rows.Count).End(xlUp))
 
 With CreateObject("scripting.dictionary")
   For i = 1 To UBound(ar)
       If .exists(ar(i, 1)) Then .Item(i) = Empty
      .Item(ar(i, 1)) = .Item(ar(i, 1)) & IIf(Len(.Item(ar(i, 1))), ", ", "") & ar(i, 2)
   Next
   Range("C2").Resize(.Count) = Application.Transpose(.items)
 End With
End Sub
 
Laatst bewerkt:
Of (met vermijding van overbodige interakties met het werkblad):
Code:
Sub M_snb()
   sn = Blad1.Cells(1).CurrentRegion
   
   For j = 2 To UBound(sn)
     If sn(j, 1) <> sn(j - 1, 1) Then
        n = j
     Else
       sn(n, 2) = sn(n, 2) & ", " & sn(j, 2)
       sn(j, 2) = ""
     End If
   Next
   
   Cells(20, 1).Resize(UBound(sn), 2) = sn
End Sub
 
In C2 en doortrekken voor office 365

Code:
=LET(z;TEXTJOIN(", ";;IF($A$2:$A$12=A2;$B$2:$B$12;""));IF(COUNTIF($C$1:C1;z);"";z))
 
Iets andere Excel 365 optie voor C2:
Code:
=ALS(A2<>A1;TEKST.COMBINEREN(", ";WAAR;FILTER(B$2:B$12;A$2:A$12=A2;""));"")
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan