Geavanceerd zoeken

Status
Niet open voor verdere reacties.

conceal

Gebruiker
Lid geworden
29 mrt 2007
Berichten
73
Hi,

In Excel probeer ik geavanceerde zoekfunctie te maken. In principe ben ik op zoek naar een zoekfunctie die meervoudig werkt. Stel ik heb de volgende namen:

Jan Klaassen
Piet Jansen
Evert-jan Koekje

Ik ben op zoek naar een zoekfunctie waarbij ik in een bepaalde cel een zoekcriteria invul en dan alle gegevens uit die lijst krijg. Een aantal voorbeelden:

Stel ik vul 'Jan' in, dan wil ik alledrie de namen (dus ook Evert-jan)

Stel ik vul 'an' in, dan wil ik alledrie de namen

Stel ik vul 'aa' in, dan alleen Jan Klaassen.

Is zoiets mogelijk met behulp van VBA in Excel? Ik ben alleen bekend met notaties als:
Code:
if Workbooks(actbook).Sheets("Persoon").Cells(i, 4) = Workbooks(actbook).Sheets("Sheet1").Cells(10, 7) then 
bla bla bla
end if
Deze notatievorm heeft echter het nadeel dat het echt onderscheidt maakt tussen hoofdletters en beginletters en dat de cellen in z'n totaliteit overeen moeten komen.

Alvast bedankt voor jullie hulp!!!

Groet,
Maikel
 
Maikel

Niet zo gemakkelijk om te doorworstelen, maar de code bij FindAll op deze pagina is wat jij nodig hebt. Het geeft een Range object, met daarin alle cellen die de zoekterm bevatten.

Wigi
 
Hi Wigi,

Bedankt! Ik zal eens kijken of ik er iets van begrijp!

Groet,
Maikel
 
Deze notatievorm heeft echter het nadeel dat het echt onderscheidt maakt tussen hoofdletters en beginletters en dat de cellen in z'n totaliteit overeen moeten komen.

kan je omzeilen door
Option Compare Text
of
de invoer en te zoeken waarde naar een soort te verkleinen

Lcase(zoekwaarde) = Lcase(tezoekenwaarde)

gr eric cirkel
 
Hi,

De code zoals die op de pagina staat geeft de output in de 'immediate window' Als ik deze input gewoon in rijen en kolommen wil hebben, hoe komt die code er dan uit te zien? Ik heb nu

Code:
Debug.Print FoundCell.Address, FoundCell.Text
Sheets("Sheet1").Range("A25:A35") = FoundCell.Address

En dat geeft beide, maar de cellen worden allemaal gevuld met dezelfde verwijzingen. Van begint tot het eind. Ik heb echter liever dat ze voor elke output een nieuwe rij pakken. Is er een manier om een string weer op te spiltsen??? Alvast bedankt!!!

Groet,
Maikel
 
Zoiets?

Code:
Sub w()
    Dim c As Range, lAantal As Long
    
    lAantal = 0
    
    For Each c In FindAll(SearchRange, FindWhat, LookIn, LookAt, SearchOrder, MatchCase)
        
        lAantal = lAantal + 1
        Range("A25").Offset(lAantal).Value = c.Value
        
    Next
End Sub

In de functie wel nog invullen wat er voor jouw bestand geldt (dus de parameters in de functie opvullen met jouw gegevens).

Wigi
 
Bedankt voor de hulp, ik heb nu een zoekfunctie zoals ik die bedoeld had. Misschien dat ik deze functie nog uit wil breiden wat betreft spaties wel/niet meenemen in de zoekfunctie, maar ik zal hier zelf wel aan stoeien. Wat eric cirkel bedoelt snap ik nog niet helemaal, want de zoekfunctie let niet op hoofdletters of kleine letters. \

Groetjes,
Maikel
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan