Excel VBA InStr funkcija - izskaidrota ar piemēriem

Satura rādītājs

Vakar es saņēmu e -pastu no viena mana lasītāja - jūnijs.

Viņa vēlējās uzzināt, kā šūnā noteiktai virknes daļai piemērot treknrakstu. Piemēram, treknrakstā izmantojiet tikai vārdu “Hello” no “Hello World”.

Un viņa gribēja to darīt simtiem šūnu uzreiz.

Tā kā programmā Excel nav iebūvētas funkcionalitātes, kas to var izdarīt, es izveidoju vienkāršu makro, kas izmanto Excel VBA InStr funkcija (kā to izdarīt, jūs redzēsiet šīs apmācības 4. piemērā).

Bet vispirms apskatīsim, kā darbojas Excel VBA InStr funkcija!

Excel VBA InStr funkcija

Šajā apmācībā es izskaidrošu InStr funkcijas izmantošanu programmā Excel VBA un apskatīšu dažus praktiskus piemērus, kur to var izmantot.

Excel VBA InStr funkcija - Ievads

Funkcija InStr atrod noteiktas apakšvirknes pozīciju virknē un atgriež tās rašanās pirmo pozīciju.

Piemēram, ja vēlaties atrast “x” pozīciju “Excel”, izmantojot funkciju Excel VBA InStr, tiks atgriezta 2.

Funkcijas InStr sintakse

InStr ([Sākt], String1, String2, [Salīdzināt])
  • [Sākt] - (neobligāts arguments) šī ir vesela skaitļa vērtība, kas funkcijai InStr norāda sākuma pozīciju, no kuras tai jāsāk meklēt. Piemēram, ja es vēlos, lai meklēšana sāktos no sākuma, es ievadīšu vērtību kā 1. Ja es vēlos, lai tā sākas ar trešo rakstzīmi, es izmantošu 3. Ja tā netiek izlaista, tiek izmantota noklusējuma vērtība 1.
  • String1 - Šī ir galvenā virkne (vai vecāku virkne), kurā vēlaties meklēt. Piemēram, ja programmā Excel meklējat x pozīciju, 1. virkne būtu “Excel”.
  • String2 - Šī ir apakšvirkne, kuru meklējat. Piemēram, ja programmā Excel meklējat x pozīciju, tad virkne2 būtu x.
  • [Salīdzināt] - (neobligāts arguments) Argumentu [salīdzināt] varat norādīt vienu no šīm trim vērtībām:
    • vbBinaryCompare - Tas ļautu salīdzināt raksturu pēc rakstura. Piemēram, ja programmā Excel meklējat “x”, tas atgriezīs 2, bet, ja meklēsiet “X” programmā “Excel”, tas atgriezīs 0, jo X ir lielie burti. VbBinaryCompare vietā varat izmantot arī 0. Ja arguments [Salīdzināt] tiek izlaists, tas tiek uzskatīts par noklusējumu.
    • vbTextCompare - Tas ļautu salīdzināt tekstu. Piemēram, ja programmā Excel meklējat “x” vai “X”, abos gadījumos tas atgriezīs 2. Šis arguments ignorē burtu gadījumu. VbTextCompare vietā varat izmantot arī 1.
    • vbDatabaseCompare - Tas tiek izmantots tikai Microsoft Access. Salīdzinājuma veikšanai tā izmanto datu bāzē esošo informāciju. VbDatabaseCompare vietā varat izmantot arī 2.

Papildu piezīmes par Excel VBA InStr funkciju:

  • InStr ir VBA funkcija, nevis darblapas funkcija. Tas nozīmē, ka to nevar izmantot darblapā.
  • Ja virkne2 (apakšvirkne, kuras pozīciju meklējat) ir tukša, funkcija atgriež argumenta [Sākt] vērtību.
  • Ja funkcija InStr nevar atrast apakšvirkni galvenajā virknē, tā atgriež 0.

Tagad apskatīsim dažus Excel VBA InStr funkcijas izmantošanas piemērus

1. piemērs - pozīcijas atrašana no sākuma

Šajā piemērā es izmantošu funkciju InStr, lai no sākuma atrastu “V” pozīciju “Excel VBA”.

Kods tam būtu šāds:

Sub FindFromBeginning () Dim pozīcija kā vesels skaitlis Pozīcija = InStr (1, "Excel VBA", "V", vbBinaryCompare) MsgBox pozīcijas beigu apakšdaļa

Palaižot šo kodu, tas parādīs ziņojumu lodziņu ar vērtību 7, kas ir “V” pozīcija virknē “Excel VBA”.

2. piemērs - pozīcijas atrašana no otrā vārda sākuma

Pieņemsim, ka teikumā vēlos atrast pozīciju “the” - “Ātrā brūnā lapsa lec pāri slinkajam sunim”

Tomēr es vēlos, lai meklēšana sāktos ar otro vārdu.

Šajā gadījumā mums ir jāmaina arguments [Sākt], lai pārliecinātos, ka tas norāda pozīciju, no kuras sākas otrais vārds.

Šeit ir kods, kas to darīs:

Sub FindFromSecondWord () Dim Position kā vesels skaitlis Position = InStr (4, "Ātrā brūnā lapsa lec pāri slinkajam sunim", "the", vbBinaryCompare) MsgBox Pozīcijas beigu apakšdaļa

Šis kods parādīs ziņojumu lodziņu ar vērtību 32, jo mēs esam norādījuši sākuma pozīciju kā 4. Tādējādi tas ignorē pirmo “The” un atrod otro “the” teikumā.

Ja vēlaties to padarīt dinamiskāku, varat uzlabot kodu, lai tas automātiski ignorētu pirmo vārdu.

Šeit ir uzlabotais kods, kas to darīs:

Sub FindFromSecondWord () Dim StartingPosition Kā vesels skaitlis Dim Position kā vesels skaitlis StartingPosition = InStr (1, "Ātrā brūnā lapsa lec pāri slinkajam sunim", "", vbBinaryCompare) Position = InStr (StartingPosition, "Ātrā brūnā lapsa lec pāri slinkajam" suns "," the ", vbBinaryCompare) MsgBox Pozīcijas beigu apakš

Šis kods vispirms atrod atstarpes rakstzīmes pozīciju un saglabā to mainīgajā StartingPosition.

Pēc tam tas izmanto šo mainīgo kā sākuma pozīciju, lai meklētu vārdu “the”.

Tādējādi tas atgriež 32 (kas ir “the” sākuma pozīcija pēc pirmā vārda).

3. piemērs - @ pozīcijas atrašana e -pasta adresē

Izmantojot Excel VBA InStr funkciju, varat viegli izveidot pielāgotu funkciju, lai atrastu @ pozīciju e -pasta adresē.

Šeit ir kods, lai izveidotu pielāgotu funkciju:

Funkcija FindPosition (atsauce kā diapazons) Kā vesels skaitlis Dim pozīcija kā vesels skaitlis Position = InStr (1, atsauce, "@") FindPosition = Pozīcijas beigu funkcija

Tagad jūs varat izmantot šo pielāgoto funkciju kā jebkuru citu darblapas funkciju. Tas ņems vērā šūnu atsauci un ievadīs @ pozīciju tajā.

Līdzīgi varat izveidot pielāgotu funkciju, lai atrastu jebkuras apakšvirknes pozīciju galvenajā virknē.

4. piemērs - virknes daļas izcelšana šūnās

Šis ir jautājums, kuru uzdeva jūnijs (mans lasītājs, kurš arī iedvesmoja mani uzrakstīt šo pamācību).

Šeit ir datu paraugi jūnija man nosūtītajā formātā:

Viņas vaicājums bija padarīt treknrakstā esošos skaitļus ārpus iekavas.

Šeit ir mans izveidotais kods, kas to dara:

Sub Bold () Dim rCell As Diapazons Dim Char kā vesels skaitlis Katram atlasītajam rCell CharCount = Len (rCell) Char = InStr (1, rCell, "(") rCell.Characters (1, Char - 1) .Font.Bold = True Next rCell End Sub

Iepriekš minētais kods izmanto cilpu Par katru, lai izietu cauri katrai atlasītās šūnas. Tas identificē sākuma kronšteina rakstzīmes stāvokli, izmantojot funkciju InStr. Pēc tam tiek mainīts teksta fonts pirms iekavas.

Lai izmantotu šo kodu, kopējiet un ielīmējiet modulī VB redaktorā.

Kad esat kopējis un ielīmējis kodu, atlasiet šūnas, kurās vēlaties veikt šo formatējumu, un palaidiet makro (kā parādīts zemāk).

Jums varētu patikt arī šādas Excel VBA apmācības:

  • Excel VBA SPLIT funkcija.
  • Funkcija VBA TRIM.
  • Galīgais Excel VBA cilpu ceļvedis.
  • Iesācēja ceļvedis, kā izmantot nākamo cilpu programmā Excel VBA.
  • Kā izveidot un lietot Excel pievienojumprogrammu.
  • Kā apvienot vairākas darbgrāmatas vienā Excel darbgrāmatā.
  • Kā saskaitīt krāsainās šūnas programmā Excel.
  • Noderīgi Excel VBA makro piemēri iesācējiem.
  • Kā kārtot datus programmā Excel, izmantojot VBA (Soli pa solim)

Jums palīdzēs attīstību vietā, daloties lapu ar draugiem

wave wave wave wave wave