Excel / VBA - A Find søgning med flere afkast
- I nogle situationer er det nødvendigt at kende alle detaljer om forekomster fundet.
- Dette opnås med nedenstående funktion.
I et offentligt modul
'Returnerer til adresser, hvor du kan søge efter' WkbN = Du er klassificeret, og du har et navn til din fonction peut. Du kan også se et nyt navn: WksN = nom de la feuille 'Plage = les koordinater af la plage à parcourir. 'Retour dans le tableau donner en argument. Funktion RechFind (ByVal Cle As String, ByVal WkbN Som String, ByVal WksN Som String, ByVal Plage Som String, ByRef TBadress () Som Variant) Som Lang Dim Cherche, Ix Så Langt, PrAddress Med Workbooks (WkbN) .Sheets (WksN) .Range (Plage) Indstil Cherche = .Find (Cle) Hvis Ikke Cherche Er Intet Så PrAddress = Cherche.Address Gør ReDim Behold TBadress (Ix) TBadress (Ix) = Cherche.Address Set Cherche = .FindNæste (Cherche) Ix = Ix + 1 Loop While Not Cherche er Intet og Cherche.Address PrAddress End Hvis End med 'nombre d'occurence (s) trouvée (s), Retur 0 si aucune forekomst RechFind = Ix Set Cherche = Intet' Libére la mémoire occupée par l ' Objet. Slutfunktion
Tilføj til en Xla-projektmappe.
Brug af en makro
Sub RechMulti () Dim R Så længe, TB () Dim i som helhed R = RechFind ("12 *", ThisWorkbook.Name, "Feuil1", "B1: B500", TB ()) Hvis R> 0 Then For = 0 til R - 1 'ou ubound (TB)' exemple Sheets ("Feuil1"). Celler (i + 4, 5) = Range (TB (i)).
Brug en opkaldsknap
Private Sub CommandButton1_Click () Dim R så lang, TB () Dim i som Integer Range ("E4: E20"). ClearContents R = RechFind (Range ("E2"), ThisWorkbook.Name, ActiveSheet.Name, Range : B500 "). Adresse, TB ()) Hvis R> 0 Then For i = 0 til R - 1 'ou ubound (TB)' exemple Sheets (" Feuil1 "). Celler (i + 4, 5) = Range TB (i)). Row Næste slutter jeg hvis End Sub
Hent
Download testarbejdsbogen: her.