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

Meerdere Strings in Cel zoeken en aantal hits optellen

Status
Niet open voor verdere reacties.

lemonstreet25

Gebruiker
Lid geworden
27 sep 2016
Berichten
52
Excellisten,

Ik wil een teksten database opstellen. De teksten die ik wil zoeken staan in de vorm van een link (locatie) in een nog te maken worksheet. Deze teksten vormen het antwoord op vragen die ik tekstueel in kolom A ga zetten(per cel een vraag). De bedoeling is om middels een inputform een 5-tal (steek)woorden in kolom A te zoeken en als resultaat te krijgen de cel waar de meeste hits in zijn gevonden. Onderstaand waar ik toe gekomen ben. Ik krijg het niet voor elkaar dat het resultaat mij vertelt HOEVEEL hits er PER CEL zijn. Suggesties?
Bekijk bijlage Excel vraag tekstzoeken.xlsm
Code:
Private Sub CommandButton1_Click()


Dim zoekgebied As Range
Dim cell As Range
Dim i As Integer
Set zoekgebied = Range("A6:A10")
i = 0


Range("B6:C10").Clear
zoekgebied.Interior.ColorIndex = 0
For Each cell In zoekgebied
    If InStr(cell, "tekst1") <> 0 Then
        i = i + 1
    End If
    If InStr(cell, "iets") <> 0 Then
        i = i + 1
        cell.Offset(0, 1) = i
    End If
Next cell

End Sub
 
Code:
Sub M_snb()
   msgbox ubound(split("aa bb cc bb ee ff bb","bb"))
End sub
 
Hiervan dan?
Code:
Private Sub CommandButton1_Click()
Dim sv, i As Long
Range("b6:b10").ClearContents
sv = Range("a6:b10")
  For i = 1 To UBound(sv)
     sv(i, 2) = UBound(Split(sv(i, 1), "tekst1")) + UBound(Split(sv(i, 1), "iets"))
  Next i
Range("a6").Resize(UBound(sv), 2) = sv
End Sub
 
Je moet i aan het begin of voor het eind van de lus weer op 0 zetten.

Maak gebruik van kolomkoppen dan is de CurrentRegion eenvoudiger te bepalen/bewerken. Moet het zoeken hoofdlettergevoelig zijn? Met een Userform.
 

Bijlagen

VenA,

Dank. Dit is wel "over my head" kan ik je melden. Er worden heel veel mij onbekende methoden toegepast. Mag ik je vragen toe te lichten wat je in elke stap doet; ik leer graag weer wat nieuws. Nog een verduidelijking mijnerzijds:
De bedoeling was inderdaad om (uiteindelijk) met een UserForm te werken. Echter, i.p.v. Comboboxen zouden dan Textboxen moeten zijn. De keywoorden daarin moeten dan opgezocht in de cellen van de A kolom; waarin dan grote lappen tekst komen te staan(per cel). Het aantal "hits" moet dan terecht komen in kolom B; waarna door sortering de (potentieel) meest relevante tekst kan worden getraceerd (In kolom C komen verwijzingen (linkjes) naar locaties op schijven). Om nog even terug te komen op mijn eigen "primitieve" methode: hoe kan ik in onderstaande regel verwijzen naar de inhoud van een Textbox? Dus ipv "Tekst1"

Code:
If InStr(cell, "Tekst1") <> 0 Then i = i + 1

Mijn dank is hoe dan ook reeds groot,

Luc
 
Laatst bewerkt:
Onbekende methoden kan je vrij eenvoudig opzoeken. Als je van comboboxen textboxen wil maken dan pas je het toch even aan. Wat je verder allemaal wil is voor mij onbegrijpelijk.
 
Excuus VenA,

Ik probeer het echt te begrijpen; maar ik druk mezelf klaarblijkelijk niet goed uit. In bijgaand bestandje probeer ik het duidelijker te maken. Onderstaand mijn poging om het met de tekstvelden (in mijn eenvoudige oplossing) te bereiken:

Code:
Private Sub CommandButton2_Click()
Dim zoekgebied As range
Dim cell As range
Dim i As Integer
Set zoekgebied = range("A6:A10")


range("B6:C10").Clear
For Each cell In zoekgebied
i = 0
    If InStr(cell, TextBox1.Value) <> 0 Then i = i + 1
    If InStr(cell, TextBox2.Value) <> 0 Then i = i + 1
    If InStr(cell, TextBox3.Value) <> 0 Then i = i + 1
    cell.Offset(0, 1) = i
    Next cell

End Sub
Bekijk bijlage Excel vraag tekstzoeken3.xlsm
 
Zo moeilijk was het toch niet?
Code:
Private Sub CommandButton2_Click()
Dim sv, i As Long
With Range("a6").CurrentRegion.Resize(, 2)
  sv = .Value
    For i = 1 To UBound(sv)
     sv(i, 2) = ""
       sv(i, 2) = UBound(Split(sv(i, 1), TextBox1.Text)) + UBound(Split(sv(i, 1), TextBox2.Text)) + UBound(Split(sv(i, 1), TextBox3.Text))
    Next i
  .Value = sv
 End With
End Sub
 
Laatst bewerkt:
in je laatst toegevoegde bestand staat TextBoxi.value tussen dubbele aanhalingstekens, haal die weg, zoals in die code in diezelfde post.
Daarmee tel je dan het voorkomen van minstens 1 string in je cellen, als 1 keer.
Probleem is dat via die split zoals door anderen voorgesteld, het voorkomen van meerdere keren dezelfde tekst in een cel ook meerdere keren geteld wordt.
Wil je bv. als stom voorbeeld het voorkomen van zoektekst "t" in de string "tekstteksttekst" als resultaat 1 of 6.
Wat moet het zijn ?
 
Dag Cow18,

Welkom terug in de 'Excel' wei :thumb:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan