Mündəricat
Excel VBA kodları ilə işləyərkən biz mürəkkəb tapşırığı kiçik bir sətirli koda çevirən bir neçə daxili funksiyaya rast gəlirik. InStr Excel VBA-da mövcud olan belə bir funksiyadır ki, verilmiş mövqedən başlayaraq başqa verilmiş sətir daxilində xüsusi sətir axtarır. Bu gün mən VBA-da InStr funksiyasından başqa verilmiş sətirdə xüsusi sətri axtarmaq üçün necə istifadə edə biləcəyinizi göstərəcəyəm.
Təcrübə İş Kitabını endirin
InStr Function.xlsm
VBA InStr Funksiyasına Giriş
- Xülasə
Verilmiş mövqedən başlayaraq verilmiş sətir daxilində xüsusi sətir axtarır. Uyğunluq taparsa, uyğunluğun başladığı yerdən verilmiş sətirdəki mövqeyi qaytarır.
- Sintaksis
InStr([start ],string1,string2,[müqayisə et])
- Arqumentlər
ARQUMENT | TƏLƏB | TƏSVİRİ
|
---|---|---|
[start] | Könüllü | Axtarmağa başlayacağı mövqe. Defolt 1-dir. |
string1 | Tələb olunur | Verilmiş sətri axtardığı sətir. |
string2 | Tələb olunur | Onun verilmiş sətir daxilində axtardığı sətir. |
[müqayisə et] | Könüllü | Müqayisə növünü təyin edən {-1,0,1,2} arasında rəqəmsal dəyər. Thedefault -1-dir (vbUseCompareOption). Variantların müqayisəsi ifadəsi göstərilməyibsə, İkili Müqayisə edin. |
Qeyd:
- Baxmayaraq ki, [start] arqumenti və [müqayisə et] arqumenti isteğe bağlıdır, [müqayisə et] arqumentini təyin etsəniz, sizə [start] arqumenti lazımdır. Əks halda, xəta yaradacaq.
- Əgər [start] arqumentindən biri və ya hər ikisi və [müqayisə et] arqumenti Null<2 olarsa>, xəta ilə qarşılaşacaqsınız.
- [müqayisə et] arqumentində göstərilən dörd dəyər dörd fərqli müqayisə növü həyata keçirir. Onlar aşağıda qeyd olunur:
DƏYƏR | DAİMİ | TƏSVİRİ
|
---|---|---|
-1 | vbUseCompareOption | Burada göstərilən müqayisəni yerinə yetirir Seçim Müqayisə ifadəsi. |
0 | vbBinaryCompare | İkili müqayisəni həyata keçirir. |
1 | vbTextCompare | Mətn müqayisəsini həyata keçirir. |
2 | vbDatabaseCompare | Verilənlər bazanız əsasında müqayisə aparır . |
- Seçimləri Müqayisə ifadəsi əsas VBA kodu başlamazdan əvvəl təqdim edilən bəyanatdır. O, kodun tələb olunduqda İkili Müqayisə və ya Mətn Müqayisəsini axtarıb-axtarmayacağını müəyyən edir.
Seçim Müqayisə Mətni
-
- Sadə dillə desək , Binary Comparison həssas hərf deməkdirmüqayisə.
- Sadə dillə desək , Mətn Müqayisəsi hərfsiz müqayisə deməkdir.
- Qayda Dəyər
- string1 -də string2 -nin başladığı mövqeyi qaytarır.
- string2 tapılmadıqda string1 daxilində start mövqeyindən başlayaraq 0 qaytarır.
- Əgər string1 sıfır uzunluqdadırsa, 0 qaytarır.
- Əgər string2 sıfır uzunluqdadırsa, start arqumentini qaytarır.
- Və nəhayət, string1 və ya string2 Null -dir, xəta qaytarır.
VBA InStr funksiyasından istifadə etmək üçün 3 asan nümunə
In bu bölmədə Excel-də VBA InStr funksiyasının tətbiqinin üç asan nümunəsini görəcəyik. Gəlin VBA kodlarında InStr funksiyasının ilk nümunəsinə baxaq.
1. VBA InStr Funksiyasından İstifadə etməklə Ünvanın E-poçt ünvanı olub-olmamasına qərar vermək
Burada müştərilərin bəzi əlaqə ünvanlarını ehtiva edən məlumat dəstini götürdük. Burada məqsədimiz ünvanların e-poçt ünvanları olub-olmadığını müəyyən etmək olacaq.
İndi biz müəyyən etmək üçün InStr funksiyasından istifadə edərək VBA kodu hazırlayacağıq. e-poçt ünvanı olub-olmaması. Bunu etmək üçün aşağıdakı addımları yerinə yetirin.
Addımlar:
- Əvvəlcə Developer tabına keçin və
Visual Basic ( Və ya VBA açmaq üçün Alt+F11) düyməsini basınpəncərə.
- Sonra VBA pəncərəsində Insert > Modul .
- Bundan sonra modula aşağıdakı kodu yapışdırın:
3172
- Bundan başqa biz QƏRAR adlı funksiya yaratmışıq. Bir ünvanın e-poçt ünvanı olub-olmamasına qərar verir. Funksiyanı əlimizdə olan verilənlər toplusuna tətbiq edək.
- C5 xanasına aşağıdakı düsturu yazın və sonra Doluma Dəstəyi istifadə edərək qalan xanaları avtomatik doldurun.
=DECISION(B5)
- Gördüyümüz kimi, hər bir ünvanın e-poçt ünvanı olub-olmadığını müəyyən etdik. yoxsa yox.
🎓 Kod Necə İşləyir?
- Funksiya DECISION(string1 As String)
İlk olaraq bu, DECISION adlı bir funksiya yaradır. string1 adlı sətir arqumenti.
- Dim Mövqe Tam Ədədi
O, Mövqe
- Mövqe = InStr(1, string1, “@”, 0)
Bu, dəyərini təyin edir. Mövqe dəyişəni 1, sətir1, “@” və 0 arqumentləri ilə InStr funksiyasının çıxışı kimi. Qısacası, bu, “@” işarəsinin olduğu ünvanda mövqeyi təyin edir.
- Əgər Mövqe = 0 olarsa, QƏRAR = “E-poçt deyil”
O, QƏRAR funksiyasının çıxışını “E-poçt deyil” kimi təyin edir, əgər Mövqe dəyişən 0 -dir, yəni ünvanda heç bir “@” yox idi.
(Verilmiş sətirdə hər hansı sətir tapılmazsa, xatırlayın, InStr funksiyası 0 qaytarır).
- Else QƏRAR = “E-poçt”
Bu, ünvanda “@” işarəsi varsa, QƏRAR funksiyasının “E-poçt” kimi çıxışı. Beləliklə, “@” olan ünvanlar E-poçt , qalanları isə “E-poçt deyil” kimi təsnif edilir.
Oxşar Oxumalar
- Excel-də VBA UCASE funksiyasından necə istifadə etməli (4 Nümunə)
- Excel VBA-da MsgBox funksiyasından istifadə edin (Tam Təlimat)
- Excel-də VBA SPLIT funksiyasından necə istifadə etməli (5 Nümunə)
- Excel-də VBA-da LCase funksiyasından istifadə edin (İlə birlikdə) 4 Nümunə)
- Excel VBA-da Fix Funksiyasından Necə İstifadə Edilir (4 Nümunə)
2. VBA InStr funksiyasından Bəzi E-poçt Ünvanlarının Genişləndirilməsinin Çıxarılması
Burada bəzi müştərilərin bəzi E-poçt ünvanlarının siyahısı var. Bu dəfə e-poçt ünvanının gmail.com və ya yahoo.com olub-olmaması kimi genişlənməsini çıxaracağıq.
Bunu etmək üçün aşağıdakı addımları yerinə yetirin.
Addımlar:
- Başlamaq üçün, əvvəlki üsul kimi, yeni VBA<2 açın> modulunu seçin və aşağıdakı kodu pəncərəyə yapışdırın.
7299
- Bundan əlavə, adlı funksiya yaratdıq. UZATMA . O, istənilən e-poçt ünvanının genişləndirilməsini çıxarır.
- Bundan əlavə, bu funksiyanı əlimizdə olan məlumat dəstinə tətbiq edək. Əvvəlcə bu düsturu C5 xanasına daxil edin və sonra Doldurma Dəstəyi üzərinə iki dəfə klikləyin.
=EXTENSION(B5)
- Nəhayət, biz bütün E-poçtların Genişləndirilməsini uğurla çıxardığımızı görə bilərik.
🎓 Kod Necə İşləyir?
- Funksiya EXTENSION(String olaraq E-poçt)
Bu, EXTENSION adlı yeni funksiya yaradır. E-poçt adlı sətir arqumenti.
- Mövqeyi Tam Ədər kimi Dim
Bu hissə Mövqe adlı tam dəyişəni elan edir .
- Mövqe = InStr(1, E-poçt, “@”, 0)
Bu, <1 dəyərini təyin edir>Mövqe dəyişəni 1, E-poçt, “@” və 0 arqumentləri ilə InStr funksiyasının çıxışı kimi. Qısacası, bu, “@” olduğu E-poçt mövqeyini təyin edir.
- EXTENSION = Sağ(E-poçt, (Len) (E-poçt) – Mövqe))
Bu hissə “@” simvolundan sonrakı simvollar kimi EXTENSION funksiyasının çıxışını təyin edir. Bu E-poçt üçün tələb olunan genişlənmədir.
3. VBA InStr funksiyasından istifadə etməklə Addan Ad və ya Soyadı çıxarmaq
Nəhayət, biz unikal şəkildə fərqli bir tapşırığı yerinə yetirəcəyik. Bu dəfə bəzi işçilərin adlarını aldıqşirkət. Və biz işçilərin adını və ya soyadını çıxarmaq üçün funksiya qurmağa çalışacağıq.
Bunu etmək üçün aşağıdakı addımları yerinə yetirin.
Addımlar:
- Birinci olaraq, metod 1 kimi, aşağıdakı kodu VBA pəncərəsində yeni modula yapışdırın.
8190
- Burada biz addan ya adı, ya da soyadı çıxaran QISA adlı funksiya yaratdıq. Gəlin bu düsturu verilənlər toplusumuza tətbiq edək.
- Əvvəlcə adı çıxarmaq üçün aşağıdakı düsturu C5 xanasına yazın.
=SHORTNAME(B5,-1)
- Nəhayət, soyadları çıxarmaq üçün D5 -ə aşağıdakı düsturu yazırıq:
=SHORTNAME(B5,1)
- Daha sonra qalan xanaları avtomatik olaraq Fill Handler<2 ilə doldursaq>, istədiyimiz nəticəni görəcəyik.
🎓 Kod Necə İşləyir?
- Funksiya SHORTNAME(Ad Sətir kimi, Birinci və ya Sonuncu Tam Ədəd)
O, SHORTNAME<2 adlı yeni funksiya yaradır> Ad adlı bir Sətir arqumenti və Birinci_yaxud_Sonuncu adlı bir Tam Arqumentlə.
- Tam Ədəd kimi Dim Break
Bu hissə Break adlı yeni tam dəyişən elan edir.
- Break = InStr(1, Name, ” “, 0)
O, Break dəyişəninin qiymətini arqumentlərlə InStr funksiyasının çıxışı kimi təyin edir. 1, Ad, “ ” və 0 . Qısacası, bu, Ad -də boşluğun (“ ”) olduğu mövqeyi təyin edir.
- Əgər İlk_və ya_Sonuncu = -1 O zaman SHORTNAME = Sol(Ad, Fasilə – 1)
Bu sətir QISA funksiyasının çıxışını boşluqdan əvvəl simvol kimi təyin edir, Birinci_və ya_Son arqumenti -1 olarsa. Bu, ilk addır.
- QISA AD = Sağ(Ad, Len(Ad) – Fasilə)
Bu hissə çıxışın çıxışını təyin edir. QISA ADI , boşluq -dən sonra simvol kimi işləyir, əgər Birinci_və ya_Son arqumenti 1-dirsə. Bu, soyaddır.
Nəticə
Beləliklə siz VBA kodlarını InStr funksiyası ilə yaza bilərsiniz, hansı ki, verilmiş başqa bir sətir daxilində konkret sətirin yerini öyrənir. string və sonra müxtəlif istifadələr üçün öz funksiyalarınızı yarada bilərsiniz. Bundan əlavə, hər hansı bir sualınız varsa, bizə müraciət etməkdən çəkinin.