VBA-da InStr funksiyasidan qanday foydalanish (3 ta oson misol)

  • Buni Baham Ko'Ring
Hugh West

Excel VBA kodlari bilan ishlashda biz murakkab vazifani kichik bir qatorli kodga aylantiradigan bir nechta o'rnatilgan funksiyalarga duch kelamiz. InStr Excel VBA-da mavjud bo'lgan shunday funksiya bo'lib, u ma'lum bir satrni ma'lum bir pozitsiyadan boshlab boshqa berilgan satr ichida qidiradi. Bugun men VBA-da InStr funksiyasidan boshqa berilgan satr ichida ma'lum bir qatorni qidirish uchun qanday foydalanishingiz mumkinligini ko'rsataman.

Amaliy kitobni yuklab oling

InStr Function.xlsm

VBA InStr funksiyasiga kirish

  • Xulosa

Ma'lum bir satr ichida ma'lum bir satrni ma'lum pozitsiyadan boshlab qidiradi. Agar moslik topilsa, berilgan satrda moslik boshlangan joydan joyni qaytaradi.

  • Sintaksis

InStr([start ],string1,string2,[solishtiring])

  • Argumentlar
ARGUMENT TALAB TA'SFRI

[start] Ixtiyoriy Qidirishni boshlaydigan joy. Odatiy qiymat 1.
string1 Majburiy U berilgan qatorni qidiradigan satr.
string2 Majburiy U berilgan qator ichida qidiradigan satr.
[taqqoslash] Ixtiyoriy Taqqoslash turini belgilaydigan {-1,0,1,2} orasidagi raqamli qiymat. Thesukut bo'yicha -1 (vbUseCompareOption). Agar Option Compare bayonoti ko'rsatilmagan bo'lsa, Ikkilik solishtirishni bajaring.

Izoh:

  • Garchi [start] argumenti va [qiyoslash] argumenti ixtiyoriy, agar siz [qiyoslash] argumentini belgilasangiz, sizga [start] argumenti kerak boʻladi. Aks holda, u xatoni keltirib chiqaradi.
  • Agar [start] argumentidan biri yoki ikkalasi va [taqqoslash] argumenti Nul<2 bo'lsa>, siz xatoga duch kelasiz.
  • [qiyoslash] argumentidagi to'rtta belgilangan qiymat to'rt xil taqqoslashni amalga oshiradi. Ular quyida keltirilgan:
QIYMAT DOIMLI TASVIR

-1 vbUseCompareOption Bunda koʻrsatilgan taqqoslashni amalga oshiradi Option Compare bayonoti.
0 vbBinaryCompare Ikkilik taqqoslashni amalga oshiradi.
1 vbTextCompare Matnni taqqoslashni amalga oshiradi.
2 vbDatabaseCompare Ma'lumotlar bazasi asosida taqqoslashni amalga oshiradi .
  • Option Compare - bu asosiy VBA kodi boshlanishidan oldin berilgan bayonot. U kod zarur boʻlganda Ikkilik solishtirish yoki Matn solishtirishni qidiradimi yoki yoʻqligini belgilaydi.

Matnni solishtirish varianti

    • Oddiy so'zlar bilan , Ikkilik taqqoslash katta-kichik harflarga sezgir degan ma'noni anglataditaqqoslash.
    • Oddiy so'z bilan aytganda , Matnni taqqoslash katta-kichik harflarsiz taqqoslashni anglatadi.
  • Qaytish qiymati
    • string2 boshlangan string1 pozitsiyasini qaytaradi.
    • Agar string2 topilmasa string1 ichida start pozitsiyasidan boshlab 0 qaytaradi.
    • Agar string1 nol uzunlikda bo'lsa, 0 ni qaytaradi.
    • Agar string2 uzunligi nolga teng bo'lsa, start argumentini qaytaradi.
    • Va nihoyat, agar string1 yoki string2 Null , xato qaytaradi.

VBA InStr funksiyasidan foydalanish uchun 3 ta oson misol

In Ushbu bo'limda biz Excelda VBA InStr funksiyasini qo'llashning uchta oson misolini ko'rib chiqamiz. VBA kodlaridagi InStr funksiyasining birinchi misolini ko'rib chiqamiz.

1. Manzil elektron pochta manzili yoki yo'qligini hal qilish VBA InStr funksiyasidan foydalanish

Bu erda biz mijozlarning ba'zi aloqa manzillarini o'z ichiga olgan ma'lumotlar to'plamini oldik. Bizning maqsadimiz bu manzillar elektron pochta manzili yoki yo'qligini aniqlashdir.

Endi biz aniqlash uchun InStr funktsiyasidan foydalangan holda VBA kodini ishlab chiqamiz. bu elektron pochta manzili yoki yo'qmi. Buning uchun quyidagi amallarni bajaring.

Qadamlar:

  • Boshida Dasturchi yorlig'iga o'ting va Visual Basic ( Yoki VBA ni ochish uchun Alt+F11) tugmasini bosingoyna.

  • Keyin, VBA oynasida Insert > Modul .

  • Shundan so'ng modulga quyidagi kodni qo'ying:
9665

  • Bundan tashqari, biz QAROR deb nomlangan funktsiyani yaratdik. Bu manzil elektron pochta manzili yoki yo'qligini hal qiladi. Funktsiyani bizda mavjud bo'lgan ma'lumotlar to'plamiga qo'llaymiz.
  • C5 katakchaga quyidagi formulani yozing va keyin To'ldirish dastagi yordamida qolgan katakchalarni avtomatik to'ldiring.
=DECISION(B5)

  • Ko'rib turganimizdek, biz har bir manzilni elektron pochta manzili yoki yo'qligini aniqladik. yoki yo'q.

🎓 Kod qanday ishlaydi?

  • Funktsiya DECISION(string1 As String)

Birinchidan, bu DECISION deb nomlangan funktsiyani yaratadi. string1 nomli string argumenti.

  • Dim Position As Integer

U Position .

  • Position = InStr(1, string1, “@”, 0)

Bu qiymatini belgilaydi. Position o'zgaruvchisi InStr funktsiyasining chiqishi sifatida 1, string1, “@” va 0 argumentlari bilan. Xulosa qilib aytganda, bu “@” bo'lgan manzildagi pozitsiyani belgilaydi.

  • Agar Position = 0 bo'lsa, QAROR = “Email emas”

U QAROR funksiyasining chiqishini “E-pochta emas” sifatida belgilaydi, agar Position o'zgaruvchi 0 bo'lib, bu manzilda “@” yo'qligini bildiradi.

(Agar berilgan satr ichida biron bir qator topilmasa, eslang, InStr funktsiyasi 0 qaytaradi).

  • Boshqa QAROR = “Elektron pochta”

Bu Agar manzilda “@” belgisi mavjud boʻlsa, QAROR funksiyasining chiqishi “E-mail” sifatida. Shunday qilib, “@” boʻlgan manzillar E-pochta , qolganlari esa “E-pochta emas” deb tasniflanadi.

O'xshash o'qishlar

  • Excelda VBA UCASE funksiyasidan qanday foydalanish (4 ta misol)
  • Excel VBA-da MsgBox funksiyasidan foydalanish (To'liq yo'riqnoma)
  • Excelda VBA SPLIT funksiyasidan qanday foydalanish (5 ta misol)
  • Excelda VBA-da LCase funktsiyasidan foydalanish (bilan birga) 4 ta misol)
  • Excel VBA da Fix funksiyasidan qanday foydalanish kerak (4 ta misol)

2. VBA InStr funksiyasidan Ba'zi elektron pochta manzillarining kengaytmalarini chiqarib olish uchun foydalanish

Bu erda bizda ba'zi mijozlarning elektron pochta manzillari ro'yxati mavjud. Bu safar biz elektron pochta manzilining kengaytmasini ajratib olamiz, masalan, gmail.com yoki yahoo.com .

Buning uchun quyidagi amallarni bajaring.

Qadamlar:

  • Boshlash uchun oldingi usul kabi yangi VBA<2 oching> modulini o'rnating va oynaga quyidagi kodni joylashtiring.
6980

  • Bundan tashqari, biz nomli funksiya yaratdik. KENAYTISH . U har qanday elektron pochta manzilining kengaytmasini chiqaradi.
  • Bundan tashqari, keling, ushbu funksiyani bizda mavjud bo'lgan ma'lumotlar to'plamiga qo'llaylik. Avval ushbu formulani C5 katakka kiriting va keyin To'ldirish dastagi ustiga ikki marta bosing.
=EXTENSION(B5)

  • Nihoyat, biz barcha elektron pochta kengaytmalarini muvaffaqiyatli chiqarib olganimizni ko'rishimiz mumkin.

🎓 Kod qanday ishlaydi?

  • Funktsiya EXTENSION(Email as String)

Bu EXTENSION deb nomlangan yangi funktsiyani yaratadi. Email nomli string argumenti.

  • Xiralashgan joy butun son sifatida

Bu qism Position nomli butun son oʻzgaruvchini eʼlon qiladi. .

  • Position = InStr(1, Email, “@”, 0)

Bu <1 qiymatini belgilaydi>Position oʻzgaruvchisi InStr funksiyasining chiqishi sifatida 1, Email, “@” va 0 argumentlari bilan. Qisqasi, bu “@” boʻlgan E-pochta manzilini belgilaydi.

  • KENAYIT = Oʻng(E-pochta, (Len) (Email) – Position))

Ushbu qism EXTENSION funksiyasining chiqishini “@” belgisidan keyingi belgilar sifatida belgilaydi. Bu E-pochta ning kerakli kengaytmasi.

3. Ism yoki familiyani VBA InStr funksiyasidan foydalanib chiqarib olish

Nihoyat, biz noyob boshqa vazifani bajaramiz. Bu safar bizda ba'zi xodimlarning ismlari borkompaniya. Va biz xodimlarning ismi yoki familiyasini ajratib olish funksiyasini yaratishga harakat qilamiz.

Buni amalga oshirish uchun quyidagi amallarni bajaring.

Qadamlar:

  • Birinchidan, 1-usul ga o'xshash, quyidagi kodni VBA  oynasidagi yangi modulga joylashtiring.
7132

  • Bu yerda biz ismdan ism yoki familiyani ajratib oladigan QISQA NAME funksiyasini yaratdik. Keling, ushbu formulani ma'lumotlar to'plamimizga qo'llaymiz.
  • Avval ismni chiqarish uchun quyidagi formulani C5 katakka yozing.
=SHORTNAME(B5,-1)

  • Nihoyat, familiyalarni chiqarish uchun D5 ga quyidagi formulani yozamiz:
=SHORTNAME(B5,1)

  • Keyin, agar qolgan katakchalarni avtomatik ravishda Toʻldirish ishlov beruvchisi<2 bilan toʻldirsak>, biz xohlagan natijani ko'ramiz.

🎓 Kod qanday ishlaydi?

  • Funktsiya SHORTNAME(Nomi satr sifatida, birinchi_yoki_oxirgi butun son)

U SHORTNAME<2 deb nomlangan yangi funksiya yaratadi> Ism nomli bitta String argumenti va Birinchi_yoki_Oxirgi nomli bitta Butun son argumenti bilan.

  • Bitta son sifatida xira ajratish

Ushbu qism Break nomli yangi butun o'zgaruvchini e'lon qiladi.

  • Break = InStr(1, Name, ” “, 0)

U Break oʻzgaruvchining qiymatini argumentlar bilan InStr funksiyasining chiqishi sifatida belgilaydi. 1, Ism, “ ” va 0 . Qisqasi, bu bo'shliq (“ ”) bo'lgan Ism o'rnini belgilaydi.

  • Agar Birinchi_yoki_Oxirgi bo'lsa = -1 Keyin SHORTNAME = Chap(Ism, Break – 1)

Ushbu qator QISQA NAME funksiyasining chiqishini boʻsh joy oldidagi belgilar sifatida belgilaydi, agar Birinchi_yoki_Oxirgi argumenti -1 bo'lsa. Bu birinchi ism.

  • QISQA NAME = O'ng(Ism, Len(Ism) – Break)

Ushbu qism chiqishni tayinlaydi. QISQA NAME , agar Birinchi_yoki_Oxirgi argumenti 1 bo'lsa, bo'sh joy dan keyingi belgilar sifatida ishlaydi. Bu familiya.

Xulosa

Shunday qilib, VBA kodlarini InStr funksiyasi bilan yozishingiz mumkin, bu boshqa berilgan ichidagi ma'lum bir qatorning o'rnini aniqlaydi. string va keyin siz turli xil foydalanish uchun o'z funktsiyalaringizni yaratishingiz mumkin. Bundan tashqari, agar sizda biron bir savol bo'lsa, bizga bemalol so'rang.

Hugh West - bu sohada 10 yildan ortiq tajribaga ega bo'lgan yuqori tajribali Excel treneri va tahlilchisi. Buxgalteriya hisobi va moliya yo‘nalishi bo‘yicha bakalavr va biznes boshqaruvi bo‘yicha magistr darajasiga ega. Xyu o'qitishga ishtiyoqi bor va unga amal qilish va tushunish oson bo'lgan o'ziga xos o'qitish usulini ishlab chiqdi. Uning Excel bo'yicha ekspert bilimlari butun dunyo bo'ylab minglab talabalar va mutaxassislarga o'z malakalarini oshirishga va o'z martabalarida muvaffaqiyat qozonishlariga yordam berdi. Xyu o'z blogi orqali o'z bilimlarini dunyo bilan baham ko'radi, jismoniy shaxslar va korxonalarga o'z salohiyatini to'liq ro'yobga chiqarishga yordam berish uchun bepul Excel darsliklari va onlayn treninglarni taklif qiladi.