Excel'de metinsel verilerle çalışma: Arama ve ayıklama
Excel'de bir metin parçasını ayıklamak veya bir karakterin konumunu bulmak için LEFT, RIGHT ve MID işlevlerini FIND veya SEARCH ile birlikte kullanın. Modern sürümlerde (Excel 365, 2021) bu görevi TEXTBEFORE, TEXTAFTER ve TEXTSPLIT işlevleri kolaylaştırır. Bu araçlar, manuel kopyalama olmadan ad ve soyadları otomatik olarak ayırmaya, e-postalardan alan adlarını çıkarmaya veya verileri gereksiz karakterlerden temizlemeye olanak tanır.
Metinle çalışmak için temel işlevler
Excel'de dizelerle işlem yapmak için karakter konumlarıyla çalışan üç temel ayıklama işlevi vardır:
- LEFT(metin; karakter_sayısı) — dizenin başından belirtilen sayıda karakteri döndürür.
- RIGHT(metin; karakter_sayısı) — dizenin sonundan karakterleri döndürür.
- MID(metin; başlangıç_konumu; karakter_sayısı) — belirtilen konumdan başlayarak ortadan bir parça keser.
Excel'de karakter numaralandırması birden başlar. Dizenin ilk karakterinin indeksi 0 değil, 1'dir.
Ancak statik işlevler yalnızca karakter sayısını bilir. Gerekli verileri dinamik olarak bulmak için (örneğin, "@" işaretinden önce gelen her şeyi almak), o işaretin konumunu belirlemek gerekir. Bunun için şunlar kullanılır:
- FIND(aranacak; aranacak_yer) — büyük/küçük harf duyarlı olarak karakterin konumunu bulur (A ≠ a).
- SEARCH(aranacak; aranacak_yer) — büyük/küçük harf duyarsız olarak konumu bulur ve joker karakterleri (* ve ?) destekler.
Ayraçlar kullanarak veri ayıklama
En sık karşılaşılan görev, bir dizeyi belirli bir işarete (ayraca) göre bölmektir: virgül, boşluk, tire veya eğik çizgi.
Klasik yöntem (evrensel)
Belirli bir karakterden önceki metni almak gerekiyorsa, LEFT ve FIND kombinasyonu kullanılır. Formül, ayracın konumunu hesaplar ve işaretin kendisini yakalamamak için 1 çıkarır.
Örnek: "Ivanov Ivan" dizesinden adı ayıklayın (ayraç — boşluk):
=LEFT(A2; FIND(" "; A2) - 1)
Örnek: "[email protected]" e-postasından alan adını ayıklayın:
=MID(A2; FIND("@"; A2) + 1; LEN(A2))
Burada +1, okumaya @ işaretinden hemen sonra başlamak içindir ve LEN, dizenin geri kalanının tamamının yakalanmasını garanti eder.
Modern yöntem (Excel 365 ve 2021+)
Yeni sürümlerde, karmaşık yapıların yerini alan sezgisel işlevler ortaya çıktı:
- =TEXTBEFORE(A2; "@") — @ sembolünden önce gelen her şeyi döndürür.
- =TEXTAFTER(A2; "@") — @ sembolünden sonra gelen her şeyi döndürür.
- =TEXTSPLIT(A2; ",") — dizeyi virgüle göre bir veri dizisine böler ve bitişik hücreleri otomatik olarak doldurur.
TEXTBEFORE ve TEXTAFTER işlevlerinde occurrence_num (oluşum_numarası) bağımsız değişkeni bulunur. Bu, daha önce iç içe geçmiş formüller gerektiren ikinci veya üçüncü ayraçtan sonraki metni kolayca ayıklamayı sağlar.
Değer arama ve hata yönetimi
Hücrede bulunmayan bir karakteri ararken, FIND ve SEARCH işlevleri #VALUE! hatası döndürür. Bu, sonraki hesaplamaları bozar.
Alt dize varlığının kontrol edilmesi
Bir kelimenin metinde olup olmadığını sadece öğrenmek için ISNUMBER (SAYIMI) ile bağlantı kullanın:
=ISNUMBER(FIND("kod"; A2))
Formül, kelime bulunursa TRUE (DOĞRU), bulunmazsa FALSE (YANLIŞ) döndürür.
Güvenli ayıklama
Ayraç olmadığında formülün hata vermemesi için onu IFERROR (EĞERHATA) içine alın:
=IFERROR(TEXTAFTER(A2; "-"); "Ayraç bulunamadı")
Veya değişiklik gerekmiyorsa orijinal değeri döndürün:
=IFERROR(TEXTAFTER(A2; "-"); A2)
Görev çözümü için pratik örnekler
| Görev | Formül (klasik) | Formül (Excel 365) |
|---|---|---|
| Dosya uzantısını alma ("doc.txt" içinden) | =RIGHT(A2; LEN(A2)-FIND("."; A2)) | =TEXTAFTER(A2; ".") |
| Alan kodunu ayıklama ("+7 (999)..." içinden) | =MID(A2; FIND("(")+1; FIND(")")-FIND("(")-1) | =TEXTBEFORE(TEXTAFTER(A2;"("); ")") |
| İlk 3 karakteri kaldırma | =RIGHT(A2; LEN(A2)-3) | =TEXTAFTER(A2; LEFT(A2;3))* |
*Not: Sabit sayıda karakteri basitçe kaldırmak için klasik RIGHT veya MID kullanmak daha iyidir.
Sık yapılan hatalar ve bunlardan kaçınma yolları
- Arama sırasında #VALUE! hatası.
Aranan karakter yoksa ortaya çıkar. Her zaman
IFERRORkullanın veya verileri öncedenISNUMBERişleviyle kontrol edin. - Sonuçta fazla boşluk.
FIND(" "; A2) - 1kullanırken aritmetikte hata yapılıp boşluğun yakalanması kolaydır.+1ve-1işaretlerini dikkatlice kontrol edin.TRIM(KIRP) işlevi, sonuçtaki etrafındaki fazla boşlukları temizlemeye yardımcı olur. - Büyük/küçük harf sorunu.
FINDişlevi "Apple" ve "apple" arasında ayrım yapar. Büyük/küçük harf önemli değilse, her zamanSEARCHkullanın veya metniLOWER(KÜÇÜKHARF) /UPPER(BÜYÜKHARF) aracılığıyla tek bir biçime getirin. - Son ayracın yanlış konumu.
Standart
FIND, ilk oluşumu bulur. Sonuncuyu bulmak için (örneğin,C:\Klasor\Dosya.txtdosya yolundaki nokta), karakter değiştirme içeren karmaşık bir formül veya yeniTEXTBEFORE(...; ; -1)işlevlerindeinstance_num_from_end(sondan_oluşum_numarası) bağımsız değişkeninin kullanılması gerekir.
SSS
İki parantez arasındaki metni nasıl ayıklarım?
İşlevleri iç içe kullanın: =MID(A2; FIND("("; A2)+1; FIND(")"; A2)-FIND("("; A2)-1). Excel 365'te daha basit: =TEXTBEFORE(TEXTAFTER(A2; "("); ")").
Aynı anda birden fazla karakter arayabilir miyim?
Evet, SEARCH işlevinde * joker karakterini (herhangi bir sayıda karakter) kullanabilirsiniz. Örneğin, SEARCH("urun*2024"; A2), kelimeler arasında herhangi bir metin bulunan ifadeyi bulacaktır.
Hücrede birkaç aynı ayraç varsa ne yapmalıyım?
Klasik işlevler yalnızca ilkini bulur. FIND/SEARCH içindeki occurrence_num (oluşum_numarası) parametresini veya dizeyi parçalara bölen TEXTSPLIT işlevini kullanın ve ardından dizi elemanına erişin.