Kuidas kasutada funktsiooni Otsi Exceli VBA makrodes

Õpid kasutama “Otsi” oma makrode jaoks, mis on kirjutatud programmis Excel Visual Basic for Applications (VBA).

1
Õppige järgmisi käsu FIND põhimõisteid: .Find süntaks on:expression.Find(What, After, LookIn, LookAt, SearchOrder, SearchDirection, MatchCase, MatchByte, SearchFormat)Avaldis (nõutav): on mis tahes kehtiv vahemiku objekt. Nii et kui võtame näite, oleks vahemik Range(“A1:A†& lastRow), kus lastRow on dimensioonitud tüübina long ja seal on lause: lastRow = oSht.Range(“A” & Rows.Count) .End(xlUp).Rida (või midagi sarnast), mis eelneb selle kasutamisele .Leia nõutud avaldises.Mis (valikuline variant): on “Search valueâ€After (Valikuline variant): lahter, mille järel soovite otsida begin.LookIn (valikuline variant): teabe tüüp. (xlValues ​​või xlFormulas)LookAt (valikuline variant): võib olla üks järgmistest XlLookAt konstantidest: xlWhole või xlPart.SearchOrder (valikuline variant): võib olla üks järgmistest #** XlSearchOrder konstantidest: xlByRows või xlByColumns.Can beSearchDirection: üks neist XlSearchDirectioni konstantidest. xlNext vaikimisi xlPreviousMatchCase (valikuline variant): Tõene, et muuta otsing tõstutundlikuks. Vaikeväärtus on False.MatchByte (valikuline variant): kasutatakse ainult siis, kui olete valinud või installinud kahebaidise keeletoe. Õige, et kahebaidised märgid vastavad ainult kahebaidistele tähemärkidele. Väär, kui kahebaidised märgid vastavad nende ühebaidistele ekvivalentidele.Otsinguvorming (valikuline variant): otsinguvorming.

2
Saate kohandada järgmise koodi enda kasutuseks, kopeerides selle täpsema redigeerimise funktsioonis (kuni kus on kirjas #** End Sub) ja kleepides selle tekstitöötlusprogrammi ning tehes “#**” jaoks käsu REPLACE ALL (ilma jutumärgid, kuid palun koos tühikuga). Seejärel määrake Exceli eelistustes lindi arendaja olekuks Märgitud või Sees, et saaksite makrodega töötada. Klõpsake lindil nuppu Arendaja ja seejärel ikooni Salvesta, klõpsake lihtsalt lahtris A1 ja seejärel käsku Peata (oma näivmakro) salvestamine. Klõpsake redaktoriikooni nuppu ja kopeerige oma tekstitöötlusprogrammist oma teksti REPLACE(d) ALL tekst siit otse makro kohale ja salvestage töövihik.

3
Avage uus Exceli töövihik. Salvestage töövihik kui “Üldine olek” ja leht1 kui “Artikli vaated ja muu”.

4
Minge oma brauseris aadressile https://www.Selgitatud.com/User:Chris-Garthwaite ja tehke jaotises Alustatud artiklid (Vaata rohkem) ja valige esimesest ülemisest vasakult paremale. alumises Vaated ja kopeerige see. Veenduge, et te ei saaks liigset teavet, vaid ainult artikleid ja vaatamiste arvu. Seejärel kleepige need andmed töölehele “Artikli vaated ja muu” lahtrisse C17. Seejärel minge oma brauseris aadressile https://www.Selgitatud.com/User:Xhohx ja kopeerige ka sealt kõik 100 laiendatud (vaata rohkem) artiklit ja vaadet ning kleepige need lahtrisse nende artiklite alla, mida tegite. enne.

5
Siis. valige oma tööriistaribal Makrod, Makrod ja selle testimiseks käivitage järgmine kleebitud makro REPLACE(d) ALL.Sub Macro2_FindArticle()’ Otsib artikli stringi, tagastab lahtri aadressi ja läheb artikli lahtrisse’ Macro2_FindArticle MacroDim oSht As WorksheetDim StrFinder As StringDim lastRow As RangeDim aCell As RangeSet oSht = Sheets(“Artikli vaated ja muu”)Määra lastRow = ActiveWorkbook.Sheets(“Artikli vaated ja muu”).Range(“C17:C217”)Application.ScreenUpdating = StrFindero <> “”StrFinder = Application.InputBox _(Prompt:=”Artikli nimi või string, mida otsida: “, _Title:=”Artikli otsing”, _Type:=2)Määrake aCell = lastRow.Find(What:=StrFinder, LookIn:=xlValues, _LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _MatchCase:=False)If Not aCell ei ole midagi, siisMsgBox “Väärtus leitud lahtrist ” & aCell.Address.UExeldApplication.SubScreen peaks olema artiklite loend umbes selline redigeeritud pilt, ilmselt ilma värvilise tagaküljeta maapinnale.

6
Pange tähele, et kui kasutaksite Exceli menüüpõhist Otsi käsku, tagastaks see vasakus ülanurgas (valemiriba vasakul) leitud lahtri viite (kui see on leitud) antud vahemikust otsitud stringi kohta. lahtritest, kuid peate vajutama parem- ja vasaknoolt (või mõnda sellist kombinatsiooni), et valida tegelik lahter ainsa ActiveCellina, ma usun. Vähemalt nii toimib Excel selle autori kogemuses – mitte ilmselgelt lahtrit minu jaoks esile tõstes või ilmselgelt valimas, nagu see tehti Exceli vanemates versioonides.

7
Pange tähele, et koodiridade parempoolses otsas kasutatav allakriipsu eesmärk on pikendada rida järgmisele reale allapoole, nii et järgmine rida on tegelikult osa kogu alamprotseduurist või avaldisest.

8
Saate seda koodi hõlpsalt kohandada, muutes lehe nime viidet ja lahtrivahemiku viidet, ja kui see pole otsitav artikkel, saate seda kindlasti igal pool muuta.

9
Siin on veel kaks makrot, mis töötavad koos, et värskendada Seotud Selgitatud:Sub Macro10()’ Macro10 Macro’ Klaviatuuri otsetee: Option+Cmd+nWindows(“OVERALL STATUS.xlsm”).ActivateSheets(“Seotud”).SelectApplication.Goto Reference: =”TopRow”Application.CutCopyMode = FalseSelection.Delete Shift:=xlUpActiveWorkbook.Names.Add Name:=”TopRow”, RefersToR1C1:=”=Seotud!R166″Range(“B166”).SelectSelection.CopyApplication:=Goto. “Otsija”‘ Otsija on määratletud nimemuutuja, mis koosneb artiklite nimedest ja vaadetest, mis on kleebitud 1. rea ridadelt VEERUdesse ÜLEKANDATUD.Macro3_FindRelatedEnd SubSub Macro3_FindRelated()’ Otsib seotud Selgitatud stringi ja läheb lahtrisse Kasutaja, seejärel artikli lahtrisse. Nooleklahvid alla ja sisestavad 1, mis näitab, et see veeruartikkel on seotud rea artikliga. Seal on nii ridade kogusummad kui ka veergude kogusummad, et jälgida kogu seotud / artiklit ja seda, kui paljude artiklitega on veeruline artikkel seotud. Kasutab nimega muutuja vahemikku “Otsija” töölehel “Related” vahemikuobjektina’ Macro3_FindRelated MacroDim oSht As WorksheetDim StrFinder As StringDim aCell As RangeDim rng As RangeSet oSht = Sheets”OSht = Sheets”OLLxs””R. “).ActivateSheets(“Seotud”).SelectSet rng = Töölehed(“Seotud”).Range(“Otsija”)Application.ScreenUpdating = TrueDo kuni StrFinder <> “”StrFinder = Application.InputBox _(Prompt:=”Artikli nimi või stringi otsimiseks: “, _Title:=”Artikliotsing”, _Type:=2)Set aCell = rng.Find(What:=StrFinder, LookIn:=xlValues, _LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection: =xlNext, _MatchCase:=False)aCell.SelectApplication.ScreenUpdating = FalseExit SubLoopEnd SubIn lahter H1 on xxxxxxxxxxxxxxxxxxx ja I1 on tühi. J1-st ET1-ni on artiklite pealkirjad ja EL1-s on muu – võrdlev konto, mida kasutatakse harva. Alates J4 kuni EW4 on artikli vaated ja nende kogusumma. J6-st ​​ET6-ni on artiklite nr 141-st 1-ni (kõige hiljutisem vasakul, vanim paremal). Kõik see kleebiti kui Transponeeritud lahtrivahemikust B10:G153. Lahtris A166 on [xxxxxxxxxxxxxxxxxxxx| ja see kopeeritakse allapoole, kuna jätkuval kasutamisel kustutatakse. Lahtris B166 on valem =IF(ISERR(MID(A166,D166+2,(E166-D166)-2)),””,MID( A166,D166+2,(E166-D166)-2)), mis tagastab väärtuse, xxxxxxxxxxxxxxxxxx. Lahtris D166 on valem =IF(ISERR(FIND(“[“,A166)),””,FIND(“[ “,A166)), mis tagastab 1 väärtuse. Lahtris E166 on valem =IF(ISERR(“|”,A166)),””,FIND(“|”,A166)), mis tagastab 21 Lahtris A9 on valem =”*[[“&B9&”|Kuidas “&B9&”]]”Kui A9 valem kopeeritakse lahtrisse A10 ja artikli nimi ruudu diagonaali leidmine selle pindala abil on lahtris B10 , A10 tagastab väärtuse, *[[Leia ruudu diagonaal selle pindala abil|Kuidas leida ruudu diagonaali selle pindala abil]]Kas kopeeritud töövihiku esimeselt lehelt, artiklite vaated ja muu või sellelt leht, Seotud, kleebitakse need veerus A olevad seotuks saama valmis vormindatud kirjed, kui need on värskendatava artikli jaoks asjakohased juhised, lahtrisse B167 ja allapoole enne folli owing makro käivitatakse ja sisestuskasti tehakse käsk v kleepimine, et leida artikkel ülemises otsija alas, et nooleklahvi alla laadida ja õiget rida (artikkel) värskendada 1 kuni.