Microsoft Excel'de hem hücre içi hem de döngülerde Düzenli İfadeler (Regex) nasıl kullanılır?
Excel'de düzenli ifadeleri nasıl kullanabilirim ve veri işleme için Excel'in güçlü ızgara benzeri kurulumundan nasıl yararlanabilirim?
- Bir dizede eşleşen deseni veya değiştirilen değeri döndürmek için hücre içi işlev.
- Bir veri sütunu boyunca döngü yapmak ve eşleşmeleri bitişik hücrelere çıkarmak için alt işlev.
- Hangi kurulum gereklidir?
- Düzenli ifadeler için Excel'in özel karakterleri nelerdir?
Regex'in birçok durum için ideal olmadığını anlıyorum (Düzenli ifadeleri kullanmak ya da kullanmamak?) çünkü excel benzer manipülasyonlar için Left
, Mid
, Right
, Instr
tipi komutları kullanabilir.
548
3
Düzenli ifadeler Örüntü Eşleştirme için kullanılır.
Excel'de kullanmak için aşağıdaki adımları izleyin:
Adım 1: VBA referansını "Microsoft VBScript Regular Expressions 5.5"'a ekleyin;
Adım 2: Deseninizi tanımlayın
Temel tanımlar:
-
Aralık.a-z
a'dan z'ye kadar küçük harflerle eşleşir0-5
0'dan 5'e kadar herhangi bir sayıyla eşleşir[]` Bu parantezlerin içindeki nesnelerden tam olarak birini eşleştirin.
[a]
a harfiyle eşleşir[abc]
a, b veya c olabilen tek bir harfle eşleşir[a-z]
alfabenin herhangi bir küçük harfiyle eşleşir.()` İade amaçları için farklı eşleşmeleri gruplar. Aşağıdaki örneklere bakınız.
{}
Kendisinden önce tanımlanan desenin tekrarlanan kopyaları için çarpan.[a]{2}
ardışık iki küçük harf a ile eşleşir: aa`[a]{1,3}
en az bir ve en fazla üç küçük harfle eşleşira
,aa
,aaa
+
Kendisinden önce tanımlanan kalıplardan en az birini veya daha fazlasını eşleştirir.a+
ardışık a'larla eşleşecektira
,aa
,aaa
, vb.?
Kendisinden önce tanımlanan kalıplardan sıfır veya biriyle eşleşir.[a-z]?
boş dizeyle veya tek bir küçük harfle eşleşir.*
Kendisinden önce tanımlanan kalıbın sıfır veya daha fazlasını eşleştirir.[a-z]*
boş dizeyle veya küçük harf dizesiyle eşleşir..
Satırbaşı hariç herhangi bir karakterle eşleşir
\n`a.
a ile başlayan ve\n
dışında herhangi bir şeyle biten iki karakterli bir dizeyle eşleşir|
VEYA operatörüa|b
,a
ya dab
ile eşleştirilebileceği anlamına gelir.red|white|orange
renklerden tam olarak biriyle eşleşir.^` DEĞİL işleci
[^0-9]
karakteri bir sayı içeremez[^aA]
karakteri küçük harfa
veya büyük harfA
olamaz\
Takip eden özel karakterden kaçar (yukarıdaki davranışı geçersiz kılar)\.
,\\
,\(
,\?
,\$
,\^
Anchoring Kalıpları:
^` Eşleşme dizenin başında gerçekleşmelidir
^a
İlk karakter küçük harfa
olmalıdır^[0-9]
İlk karakter bir sayı olmalıdır.$` Eşleşme dizenin sonunda gerçekleşmelidir
a$
Son karakter küçük harfa
olmalıdırÖncelik tablosu:
Önceden Tanımlanmış Karakter Kısaltmaları:
Örnek 1: Makro olarak çalıştır
Aşağıdaki örnek makro, ilk 1 veya 2 karakterin rakam olup olmadığını görmek için
A1
hücresindeki değere bakar. Eğer öyleyse, bunlar kaldırılır ve dizenin geri kalanı görüntülenir. Değilse, eşleşme bulunamadığını bildiren bir kutu görüntülenir. HücreA1
12abc
değerleriabc
döndürür,1abc
değeriabc
döndürür,abc123
değeri "Not Matched" döndürür çünkü rakamlar dizenin başında değildir.Örnek 2: Hücre içi işlev olarak çalıştır
Bu örnek, örnek 1 ile aynıdır ancak hücre içi işlev olarak çalışacak şekilde ayarlanmıştır. Kullanmak için kodu şu şekilde değiştirin:
Dizelerinizi ("12abc")
A1
hücresine yerleştirin. Bu formülü=simpleCellRegex(A1)
B1
hücresine girin ve sonuç "abc" olacaktır.Örnek 3: Aralık Boyunca Döngü
Bu örnek, örnek 1 ile aynıdır ancak bir hücre aralığında döngüler gerçekleştirir.
Örnek 4: Farklı desenleri ayırma
Bu örnek bir aralıkta (
A1
,A2
&A3
) döngü yapar ve üç rakamla başlayan ve ardından tek bir alfa karakteri ve ardından 4 sayısal rakam içeren bir dize arar. Çıktı,()
kullanarak desen eşleşmelerini bitişik hücrelere ayırır. $1, ilk
()` kümesi içinde eşleşen ilk deseni temsil eder.Sonuçlar:
Ek Desen Örnekleri
Düzenli ifadeleri doğrudan Excel formüllerinde kullanmak için aşağıdaki UDF (kullanıcı tanımlı işlev) yardımcı olabilir. Düzenli ifade işlevselliğini bir excel işlevi olarak aşağı yukarı doğrudan ortaya koyar.
Nasıl çalışır
2-3 parametre alır.
$0
,$1
,$2
ve benzerlerini içerebilir. $0tüm eşleşmedir,
$1ve yukarısı düzenli ifadedeki ilgili eşleşme gruplarına karşılık gelir. Varsayılan değer
$0`dır.Bazı örnekler
Bir e-posta adresini çıkarma:
Sonuçlar geldi:
some@email.com
Birkaç alt dizeyi çıkarma:
Sonuçlar geldi:
E-Posta: some@email.com, İsim: Peter Gordon
Tek bir hücredeki birleşik bir dizeyi birden fazla hücredeki bileşenlerine ayırmak için:
Sonuçlar geldi:
Peter Gordon
some@email.com
...Nasıl kullanılır
Bu UDF'yi kullanmak için aşağıdakileri yapın (kabaca bu Microsoft sayfasına dayanmaktadır. Orada bazı iyi ek bilgiler var!):
ALT+F11
tuşlarına basın.Regex
ve fonksiyonuregex
olarak adlandırmak #NAME! hatalarına neden olur).İşte benim denemem: