Acest articol va arăta cum să utilizați VBA pentru a găsi o valoare într-o coloană.
Putem folosi Range.Find pentru a parcurge o coloană de valori în VBA pentru a găsi toate celulele din interval care corespund criteriilor specificate.
În buclă printr-o coloană cu Range.Find și Range.FindNext
În exemplul de mai jos, parcurgem datele din coloană și căutăm cuvântul „Încasat”. Când va găsi cuvântul, va marca celula schimbând culoarea textului celulei în roșu. Apoi ne va folosi metoda Range.FindNext pentru a trece la următoarea celulă și a continua să căutăm cuvântul, continuând bucla până la sfârșitul intervalului de celule specificat.
1234567891011121314151617 | Sub FindLoop ()Dim strFirstAddress As StringDim rngFindValue As RangeDim rng Căutați ca intervalDim rngGăsește ca intervalSetați rngFind = ActiveSheet.Range ("F1: F17")Setați rngSearch = rngFind.Cells (rngFind.Cells.Count)Setați rngFindValue = rngFind.Find ("Încet", rngSearch, xlValues)Dacă nu rngFindValue nu este nimic atuncistrFirstAddress = rngFindValue.AddressrngFindValue.Font.Color = vbRedDoSetați rngFindValue = rngFind.FindNext (rngFindValue)rngFindValue.Font.Color = vbRedBucla până la rngFindValue.Address = strFirstAddressEnd IfSfârșitul Sub |
Când rulează codul, acesta salvează adresa primei celule în care se găsesc datele în variabilă strFirstAddress și schimbă culoarea textului în roșu. Apoi se creează o buclă pentru a găsi următoarea celulă care conține datele necesare. Când se găsește valoarea, culoarea textului se schimbă în roșu și apoi adresa celulei în care se găsește valoarea este comparată cu șirul strFirstAddress. Dacă acestea nu sunt aceleași, bucla continuă, găsind fiecare instanță a cuvântului „Încet”. Odată ce bucla ajunge la sfârșitul intervalului de celule (adică F17), va începe înapoi la începutul intervalului (F1) și va continua să se bucle. Odată ce a ajuns la adresa celulei F3 pentru a doua oară, deoarece este la fel ca variabila stocată strFirstAddress, bucla se va opri.