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

gevonden woord plakken in aanliggende cel

Status
Niet open voor verdere reacties.

tobo100

Gebruiker
Lid geworden
14 okt 2013
Berichten
153
Allen,

Wie kan mij helpen aan een stukje vba code
die vanuit een opgegeven range woorden gaat zoeken in een andere kolom.
en indien gevonden dit woord gaat plakken in een aanliggende cel.
 

Bijlagen

  • woord vinden en plakken.xlsx
    9,8 KB · Weergaven: 13
Graag in VBA...
vergeten te vermelden
De woorden lijst heeft een variabele lengte
 
Laatst bewerkt:
Code:
Sub Zoek_en_plak()
    Dim rijTekst As Long
    Dim rijZoekwoord As Long
    Dim rijenTekst As Long
    Dim rijenZoekwoord As Long
    rijenTekst = Range("C1").End(xlDown).Row
    rijenZoekwoord = Range("E1").End(xlDown).Row
    Columns("B:B").ClearContents
    For rijZoekwoord = 2 To rijenZoekwoord
        For rijTekst = 2 To rijenTekst
            If InStr(1, Cells(rijTekst, 3), Cells(rijZoekwoord, 5), vbTextCompare) > 0 Then
                Cells(rijTekst, 2) = Cells(rijTekst, 2) & Cells(rijZoekwoord, 5)
            End If
        Next
    Next
End Sub
 
Of met een lusje minder.

Code:
Sub hsv()
Dim sv, i As Long
sv = Cells(1, 2).CurrentRegion.Columns(3).Offset(, -1).Resize(, 2)
With CreateObject("VBScript.RegExp")
   .Pattern = Join(Application.Transpose(Range("e2", Cells(Rows.Count, 5).End(xlUp))), "|")
   .Ignorecase = True
     For i = 2 To UBound(sv)
       If .test(sv(i, 2)) Then sv(i, 1) = .Execute(sv(i, 2)) (0)
     Next i
 End With
Cells(1, 2).CurrentRegion.Columns(3).Offset(, -1).Resize(, 2) = sv
End Sub
Of voor meerdere gevonden woorden in de zin..
Code:
Sub hsv()
Dim sv, i As Long, m, mm
sv = Cells(1, 2).CurrentRegion.Columns(3).Offset(, -1).Resize(, 2)
With CreateObject("VBScript.RegExp")
   .Pattern = Join(Application.Transpose(Range("e2", Cells(Rows.Count, 5).End(xlUp))), "|")
   .Ignorecase = True  'niet hoofdletter gevoelig.
   .Global = True  'meerdere woorden zoeken
     For i = 2 To UBound(sv)
       sv(i,1) = ""
       If .test(sv(i, 2)) Then  'indien gevonden
       Set m = .Execute(sv(i, 2))
        For Each mm In m
          sv(i, 1) = sv(i, 1) & IIf(sv(i, 1) = "", "", "; ") & mm.Value
        Next mm
       End If
     Next i
 End With
Cells(1, 2).CurrentRegion.Columns(3).Offset(, -1).Resize(, 2) = sv
End Sub
 
Laatst bewerkt:
Al vraag je er niet om, toch een formule optie

Code:
=LET(z;TRANSPOSE(E2:E6);BYROW(IF(ISNUMBER(SEARCH(z;C2:C11));z;"");LAMBDA(a;TEXTJOIN(", ";;a))))
 
Power Query kan ook nog

PHP:
let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    trf = Table.TransformColumns(Source,
         {
             {"Tekst", each 
                   List.Accumulate(tbl_woorden[Zoekwoorden],"",(s,c)=>  
                        if Text.PositionOf(Text.Upper(_),Text.Upper(c)) > -1 then s & (if s = "" then "" else ", ") & c 
                        else s
                   )
             }
        })
in
    trf
 

Bijlagen

  • woord vinden en plakken.xlsx
    19 KB · Weergaven: 15
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan