De VindAlle functie is een geavanceerde zoektool voor Excel, speciaal ontwikkeld om alle instanties van een bepaalde waarde binnen een opgegeven bereik te lokaliseren. In tegenstelling tot de standaard ‘Zoeken’ functie van Excel, die alleen de eerste overeenkomst retourneert, zal VindAlle elk afzonderlijk geval identificeren en deze als een bereik retourneren.
Hoe het werkt:
- De functie accepteert twee argumenten: het doelbereik waarin je wilt zoeken en de waarde die je wilt vinden.
- Vervolgens maakt de functie gebruik van de ingebouwde
Findmethode van Excel om het eerste geval van de opgegeven waarde te vinden. - Door een combinatie van een loop en de
FindNextmethode, blijft de functie zoeken naar verdere instanties van de waarde in het bereik. - Alle gevonden cellen worden gecombineerd tot één continu bereik dat als resultaat wordt geretourneerd.
Praktische toepassing:
Stel dat je een groot werkblad hebt met verkoopgegevens en je wilt alle transacties lokaliseren waarbij een specifiek product is verkocht. Met de VindAlle functie kun je snel alle cellen identificeren die dat specifieke product bevatten. Het geretourneerde bereik kan vervolgens worden gebruikt voor verdere analyse, markering, of om te koppelen aan andere functies voor geautomatiseerde taken.
Een andere veelvoorkomende toepassing kan zijn bij de beoordeling van enquêteresultaten. Als je bijvoorbeeld alle antwoorden wilt vinden waar respondenten “Niet tevreden” hebben geselecteerd, kan VindAlle je snel naar die specifieke antwoorden leiden, waardoor je direct inzicht krijgt in kritieke feedback.
Function VindAlle(Target As Range, Waarde As Variant) As Range
Dim ResultaatRange As Range
Dim VindEerste As Range
Dim VindLaatste As Range
Set VindEerste = Target.Find(Waarde)
If Not VindEerste Is Nothing Then
Set VindLaatste = VindEerste
Do
If ResultaatRange Is Nothing Then
Set ResultaatRange = VindEerste
Else
Set ResultaatRange = Union(ResultaatRange, VindEerste)
End If
Set VindEerste = Target.FindNext(VindEerste)
Loop While Not VindEerste Is Nothing And VindEerste.Address <> VindLaatste.Address
End If
Set VindAlle = ResultaatRange
End Function