• 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 weergeven in cel vanuit diverse cellen.

  • Onderwerp starter Onderwerp starter Dwaze
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

Dwaze

Gebruiker
Lid geworden
5 okt 2013
Berichten
88
Geacht forum,


Kan u mij helpen met het volgende probleem waar ik niet uit kom.

Ieder getal dat ik invul in kolom H, waarvan het overeenkomt met de getallen in kolom E en de overeenkomstige namen in kolom D, die namen zou ik terug willen zien in dezelfde rij A

Ik hoop dat u mij kan helpen.

Met vriendelijke groet,

Evert
 

Bijlagen

Verwijder de samengevoegde cellen van kolom A en B en plaats daarna de formule in A2 en sluit af met Ctrl+Shift+Enter.

Code:
=ALS.FOUT(INDEX(D$2:D$31;KLEINSTE(ALS.FOUT(ALS(VERGELIJKEN(E$2:E$31;H$2:H$31;0);RIJ($1:$30);"");"");RIJ(A1)));"")
 
Trek de formule naar beneden tot A31.
 
Hallo Harry,

Alle namen komen nu per naam in een aparte cel. De bedoeling is juist om alle namen in die ene cel te laten verschijnen.
Kan dat ook?
Heb inderdaad rij gemeld maar bedoel dus in een cel in die rij. Sorry

met vriendelijke groet

Evert
 
Laatst bewerkt:
Wordt een grote cel bij veel namen.

Tik een getal in kolom H.

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
 If Target.Column = 8 Then
  Application.EnableEvents = False
    Cells(1, 4).CurrentRegion.Columns(2).Name = "br"
    Cells(1, 8).CurrentRegion.Columns(1).Name = "br_2"
    Cells(2, 1).ClearContents
    Cells(2, 1) = Join(Filter([transpose(if(countif(br_2,br),offset(br,,-1),"~"))], "~", 0), vbLf)
    Cells(2, 1).WrapText = True
    Rows(2).AutoFit
  Application.EnableEvents = True
 End If
End Sub
 
Hallo Harry,

Ga het morgen proberen want ik heb nl nog nooit met codes gewerkt, alleen met formules.
Ik laat het je zeker weten of het is gelukt.
Alvast dank voor de oplossing.

Met vriendelijke groet,

Evert
 
Er is ook een formule beschikbaar vanaf Excel 2016?

=Text.combineren(

=textjoin(

Ik heb geen idee of het werkt, ik heb het niet.
Code:
 =TEKST.COMBINEREN("; ";WAAR;ALS(H2:H32=E2:E32;D1:D32;""))
 
Niet slecht @emields, en waarschijnlijk zal het ook zo bedoeld zijn.

Ik zou wel gebruik maken van 'Application.enableevents' anders wordt de code een flipperkast.
De target.count niet in dezelfde regel als de intersect (niet bang zijn voor een regeltje meer).
Zo kan je in onderstaande code in een keer alle cellen in kolom H leeg maken in tegenstelling tot de jouwe.
De range anders geschreven.
Geen 'cell' maar 'cl' om overzicht te houden (cell lijkt teveel op cells).


Zo lijkt me beter om in de gedachte van jouw code te blijven.

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("h2:h20")) Is Nothing Then
Application.EnableEvents = False
Target.Offset(, -7).ClearContents
If Target.Count = 1 Then
    For Each cl In Range("d2", Range("d250").End(xlUp))
      If cl.Offset(, 1) = Target.Value Then
         If Target.Offset(, -7) = "" Then
            Target.Offset(, -7) = cl.Value
         Else
            Target.Offset(, -7) = Target.Offset(, -7).Value & ", " & cl.Value
         End If
       End If
     Next cl
 End If
Application.EnableEvents = True
End If
End Sub

Of in een keer wegschrijven i.p.v. naam voor naam in de cel.
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("h2:h20")) Is Nothing Then
Application.EnableEvents = False
Set c = Target
c.Offset(, -7).ClearContents
 If c.Count = 1 Then
   With Range("a1", Range("e250").End(xlUp))
    sv = .Value
      For i = 2 To UBound(sv)
        If sv(i, 5) = c.Value Then sv(c.Row, 1) = IIf(sv(c.Row, 1) = "", sv(i, 4), sv(c.Row, 1) & ", " & sv(i, 4))
      Next i
    .Value = sv
   End With
 End If
Application.EnableEvents = True
End If
End Sub

Of onderstaande.
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
 If Target.Column = 8 Then
  Application.EnableEvents = False
    Cells(1, 4).CurrentRegion.Columns(2).Name = "br"
    Target.Name = "br_2"
    Target.Offset(, -7).ClearContents
    Target.Offset(, -7) = Join(Filter([transpose(if(countif(br_2,br),offset(br,,-1),"~"))], "~", 0), ",")
   Columns(1).AutoFit
  Application.EnableEvents = True
 End If
End Sub

Ps: tweede code in het bestand.
 

Bijlagen

Laatst bewerkt:
Emields en Harry hartelijk bedankt voor deze perfecte oplossing. Precies zoals ik het voor me zag.
Heb weer wat geleerd hoe het ook kan en ga me meer verdiepen daarin.

Met vriendelijke groet,

Evert
 
Wat nou @VenA, wordt het te ingewikkeld voor je?

Kan ook met een simpele draaitabel.
 
Laatst bewerkt:
Met een simpele draaitabel kan het niet in 1 keer. En anders ben ik benieuwd.
 
Kan gewoon in een keer hoor. ;)
Even door oefenen of een paar dagen geduld, ben de hort op.
 
@HSV, Aangezien je weer terug bent, ik heb mij rot geoefend, maar kan de simpele draaitabeloplossing nog niet vinden.
 
Achter elkaar , gescheiden in 1 cel knap gedaan.:thumb:
 
Dank voor je compliment @VenA. :thumb:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan