Lucrul cu Find and Replace

Caracteristicile Find and Replace (Găsire și înlocuire) din Excel pot fi utile pentru localizarea datelor în procedurile dvs. În Excel, Find and Replace sunt implementate prin metode, nu ca în Word, care folosește obiectul Find.

Atât obiectul Range, cât și obiectul WorksheetFunction au metode de găsire și de înlocuire (dar cu sintaxa diferită). Pentru majoritatea operațiunilor de găsire și înlocuire, veți dori să utilizați obiectul Range - de exemplu, pentru a înlocui conținutul anumitor celule dintr-o foaie de lucru.

Căutarea cu metoda Find

Sintaxa pentru metoda Find a obiectului Range este următoarea:

expression.Find(What, After, LookIn, LookAt, SearchOrder, SearchDirection, MatchCase, MatchByte, SearchFormat)

Iată componentele sintaxei:

  • expression este o expresie necesară care returnează un obiect Range.
  • What este un argument necesar de tip Variant care specifică datele de găsit. Aceste date pot fi un șir de text sau orice tip de date Excel.
  • After este un argument opțional de tip Variant pe care îl puteți utiliza pentru a specifica celula după care să începeți căutarea. Argumentul After trebuie să fie o celulă din zona care este căutată. Dacă omiteți After, Excel începe căutarea de la celula din stânga sus a intervalului.
  • LookIn este un argument opțional de tip Variant pe care îl puteți utiliza pentru a specifica dacă veți căuta în formule (xlFormulas), valori (xlValues) sau comentarii (xlComments).
  • LookAt este un argument opțional de tip Variant pe care îl puteți seta la xlWhole pentru a căuta întregul conținut al unei celule, sau la xlPart pentru a căuta o potrivire în conținutul celulelor.
  • SearchOrder este un argument opțional de tip Variant pe care îl puteți seta la xlByRows pentru a căuta pe rânduri sau la xlByColumns pentru a căuta pe coloane.
  • SearchDirection este un argument opțional de tip Variant pe care îl puteți seta la xlNext pentru a căuta în jos sau la xlPrevious pentru a căuta în sus.
  • MatchCase este un argument opțional de tip Variant pe care îl puteți seta la True pentru a utiliza căutarea sensibilă la litere mari și mici. Setarea implicită este False.
  • MatchByte este un argument opțional de tip Variant utilizat numai dacă ați instalat suportul double-language.
  • SearchFormat este un argument opțional de tip Variant care controlează dacă Excel caută formatarea specificată (True) sau nu (False).

CĂUTARE PRACTICĂ: FERIȚI-VĂ DE SETĂRILE PERSISTENTE

Argumentele LookIn, LookAt, SearchOrder și MatchByte ale metodei Find a obiectului Range persistă - Excel le păstrează de la o căutare la alta. Dacă nu sunteți sigur că setările utilizate în căutarea anterioară sunt potrivite pentru nevoile curente, trebuie să setați aceste argumente în mod explicit pentru fiecare căutare nouă pentru a evita obținerea de rezultate neașteptate.

Acordați o atenție deosebită setării LookAt. Această setare corespunde casetei de selectare Match Entire Cell Contents din caseta de dialog Find and Replace. Pentru a vedea această opțiune manual într-o fereastră Excel, faceți clic pe orice celulă, apoi faceți clic pe butonul Find and Replace din eticheta Home a panglicii. Alegeți Replace din meniul vertical, apoi faceți clic pe butonul Options din caseta de dialog Find and Replace, dacă este necesar, pentru a afișa toate opțiunile disponibile în caseta de dialog respectivă.

Rețineți că setările de format, cum ar fi fontul și scrierea la indice (subscript), persistă, de asemenea. Deci, ați putea dori să le specificați, de asemenea, dacă acestea au fi fost anterior folosite de dvs. sau de utilizator.

Și, în cele din urmă, amintiți-vă că este întotdeauna politicos pentru utilizatori să restabiliți setările lor. Unii utilizatori știu că setările din Find and Replace persistă, astfel încât se așteaptă ca acestea să rămână așa le-au lăsat, indiferent de ce ați putea face cu ele în timp ce se execută procedura. Deci, la începutul procedurii, stocați setările curente ale utilizatorului în variabile. Apoi, la sfârșitul procedurii, salvați aceste setări înapoi la opțiunile anterioare.

Excel nu are nicio comandă globală echivalentă cu instrucțiunea ClearFormatting din Word, descrisă în "Lucrul cu obiecte utilizate pe scară largă în Word".

Următorul exemplu de cod caută 2008 în formulele din celulele de după celula activă, fără a căuta și formatarea:

Cells.Find(What:="2008", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
True, SearchFormat:=False).Activate

Observați că în acest cod este folosit fiecare argument, cu excepția argumentului MatchByte. Rețineți că, dacă omiteți un argument dintr-o listă de argumente, trebuie fie să inserați o virgulă în acel loc, fie să utilizați argumente denumite. Având în vedere că argumentele de găsire Excel sunt persistente, este o idee bună ca să utilizați numele argumentelor, pentru a vă reaminti că acestea trebuie restaurate la setările anterioare ale utilizatorului.

Continuarea unei căutări cu metodele FindNext și FindPrevious

După ce ați executat o căutare utilizând metoda Find, utilizați metoda FindNext pentru a găsi următoarea instanță a elementului de căutare sau metoda FindPrevious pentru a găsi instanța anterioară. Sintaxa este următoarea:

expression.FindNext(After)
expression.FindPrevious(After)

Aici, expression este o expresie necesară care returnează un obiect Range, iar After este un argument opțional de tip Variant care specifică celula după care doriți să căutați (pentru metoda FindNext) sau înaintea căreia doriți să căutați (pentru metoda FindPrevious). After trebuie să fie o singură celulă.

De exemplu, următoarea instrucțiune găsește următoarea instanță a elementului de căutare:

Cells.FindNext

Înlocuirea cu metoda Replace

Pentru a înlocui folosind VBA, folosiți metoda Replace cu obiectul Range. Sintaxa este următoarea:

expression.Replace(What, Replacement, LookAt, SearchOrder, MatchCase, MatchByte, SearchFormat, ReplaceFormat)

Componentele sintaxei sunt aceleași ca pentru metoda de căutare, cu excepția următoarelor:

  • Replacement este un argument necesar de tip Variant care specifică șirul de înlocuire pentru căutare.
  • ReplaceFormat este un argument opțional de tip Variant care controlează dacă Excel înlocuiește formatarea în căutare (True) sau nu (False).

De exemplu, următoarea instrucțiune înlocuiește instanțele cuvântului Sales din coloana B a foii de lucru active cu cuvintele Sales & Marketing, folosind de potrivire sensibilă la litere mari și mici:

ActiveSheet.Columns("B").Replace What:="Sales", _
Replacement:="Sales & Marketing", SearchOrder:=xlByColumns, _
MatchCase:=True

Căutarea și înlocuirea formatării

Pentru a căuta formatarea, utilizați proprietatea FindFormat a obiectului Application pentru a defini formatarea, apoi setați argumentul SearchFormat a metodei Find la True. În mod similar, utilizați proprietatea ReplaceFormat a obiectului Application pentru a defini formatarea de înlocuire și apoi setați proprietatea ReplaceFormat a metodei Replace la True.

De exemplu, următoarele afirmații utilizează o structură With pentru a seta proprietățile Application.FindFormat.Font pe care le căutați, o structură With pentru a seta Application.ReplaceFormat.Font cu care să le înlocuiți și metoda Replace a colecției Cells pentru a efectua înlocuirea:

With Application.FindFormat.Font
  .Name = "Arial"
  .Size = "12"
  .Bold = True
End With
With Application.ReplaceFormat.Font
  .Name = "Arial Black"
  .Bold = False 
End With
Cells.Replace What:="5", Replacement:="5", LookAt:=xlPart, SearchOrder _
:=xlByColumns, MatchCase:=False, SearchFormat:=True, ReplaceFormat:=True