İçindekiler
Son birkaç makalede, Excel'de dizelerden karakterleri kaldırmanın farklı yollarını inceledik. Bugün, bir kullanım durumunu daha inceleyeceğiz - belirli bir karakterden önceki veya sonraki her şeyin nasıl silineceği.
Bul & Değiştir ile 2 karakterden önce, sonra veya 2 karakter arasındaki metni silin
Birden fazla hücrede veri işleme için Bul ve Değiştir doğru araçtır. Belirli bir karakterden önce veya sonra gelen bir dizenin bir kısmını kaldırmak için gerçekleştirilecek adımlar şunlardır:
- Metni silmek istediğiniz tüm hücreleri seçin.
- Açmak için Ctrl + H tuşlarına basın Bul ve Değiştir Diyalog.
- İçinde Ne olduğunu bulun kutusuna aşağıdaki kombinasyonlardan birini girin:
- Metni ortadan kaldırmak için belirli bir karakterden önce 'ye basın, önüne yıldız işareti (*char) gelen karakteri yazın.
- Metni kaldırmak için belirli bir karakterden sonra karakterini ve ardından yıldız işaretini (char*) yazın.
- Bir alt dizeyi silmek için iki karakter arasında , 2 karakterle çevrili bir yıldız işareti yazın (char*char).
- Bırakın Değiştirin ile kutu boş.
- Tıklayın Tümünü değiştirin .
Örneğin, kaldırmak için virgülden sonraki her şey virgülün kendisi de dahil olmak üzere, virgül ve yıldız işareti (,*) koyun. Ne olduğunu bulun kutusunu işaretlediğinizde aşağıdaki sonucu alırsınız:
Bir alt dizeyi silmek için virgülden önce 'ye bir yıldız, virgül ve boşluk (*, ) yazın. Ne olduğunu bulun Kutu.
Lütfen sadece bir virgülün değil, aynı zamanda virgül ve boşluk Verileriniz boşluksuz virgüllerle ayrılmışsa, yıldız işareti ve ardından virgül (*,) kullanın.
Metin silmek için iki virgül arasında virgül (,*,) ile çevrili bir yıldız işareti kullanın.
İpucu: Adların ve telefon numaralarının virgülle ayrılmasını tercih ediyorsanız, aşağıdaki kutucuğa virgül (,) yazın İle değiştirin Alan.
Flash Fill kullanarak metnin bir kısmını kaldırma
Excel'in modern sürümlerinde (2013 ve sonrası), belirli bir karakterden önce veya sonra gelen metni silmenin kolay bir yolu daha vardır: Flaş Doldurma özelliği:
- Verilerinizin bulunduğu ilk hücrenin yanındaki bir hücreye beklenen sonucu yazın ve Enter tuşuna basın.
- Bir sonraki hücreye uygun bir değer yazmaya başlayın. Excel girdiğiniz değerlerdeki örüntüyü hissettiğinde, aynı örüntüyü izleyen kalan hücreler için bir önizleme görüntüleyecektir.
- Öneriyi kabul etmek için Enter tuşuna basın.
Tamamdır!
Formülleri kullanarak metni kaldırma
Microsoft Excel'de, dahili özellikler kullanılarak gerçekleştirilen birçok veri manipülasyonu bir formülle de gerçekleştirilebilir. Önceki yöntemlerin aksine, formüller orijinal verilerde herhangi bir değişiklik yapmaz ve sonuçlar üzerinde daha fazla kontrol sahibi olmanızı sağlar.
Belirli bir karakterden sonraki her şey nasıl kaldırılır
Belirli bir karakterden sonraki metni silmek için genel formül şöyledir:
SOL( hücre , SEARCH(" char ", hücre ) -1)Burada, karakterin konumunu almak için SEARCH işlevini kullanırız ve bunu LEFT işlevine aktarırız, böylece dizenin başlangıcından karşılık gelen karakter sayısını çıkarır. Sınırlayıcıyı sonuçlardan hariç tutmak için SEARCH tarafından döndürülen sayıdan bir karakter çıkarılır.
Örneğin, bir dizenin virgülden sonraki kısmını kaldırmak için aşağıdaki formülü B2'ye girip B7'ye doğru sürükleyin:
=LEFT(A2, SEARCH(",", A2) -1)
Belirli bir karakterden önceki her şey nasıl kaldırılır
Bir metin dizesinin belirli bir karakterden önceki kısmını silmek için genel formül şöyledir:
DOĞRU( hücre , LEN( hücre ) - ARA(" char ", hücre ))Burada, hedef karakterin konumunu yine SEARCH yardımıyla hesaplıyoruz, LEN tarafından döndürülen toplam dize uzunluğundan çıkarıyoruz ve farkı RIGHT fonksiyonuna aktarıyoruz, böylece dizenin sonundan o kadar karakter çekiyor.
Örneğin, virgülden önceki metni kaldırmak için formül şöyledir:
=RIGHT(A2, LEN(A2) - SEARCH(",", A2))
Bizim durumumuzda, virgülün ardından bir boşluk karakteri gelir. Sonuçlarda baştaki boşlukları önlemek için, temel formülü TRIM işlevine sararız:
=TRIM(RIGHT(A2, LEN(A2) - SEARCH(",", A2))
Notlar:
- Yukarıdaki örneklerin her ikisinde de yalnızca bir örnek Birden fazla tekrar varsa, metin orijinal dizedeki sınırlayıcıdan önce/sonra kaldırılacaktır. ilk örnek .
- ARAMA işlevi büyük/küçük harfe duyarlı değil yani küçük ve büyük harf karakterleri arasında bir fark yaratmaz. Belirli karakteriniz bir harfse ve harf durumunu ayırt etmek istiyorsanız, o zaman büyük/küçük harfe duyarlı SEARCH yerine FIND işlevi.
Bir karakterin N. kez geçmesinden sonra metin nasıl silinir
Kaynak dizenin sınırlayıcının birden çok örneğini içerdiği durumlarda, belirli bir örnekten sonra metni kaldırmanız gerekebilir. Bunun için aşağıdaki formülü kullanın:
SOL( hücre , FIND("#", SUBSTITUTE( hücre , " char ", "#", n )) -1)Nerede n metnin kaldırılacağı karakterin geçtiği yerdir.
Bu formülün iç mantığı, kaynak verilerin hiçbir yerinde bulunmayan bir karakterin, bizim durumumuzda bir karma sembolünün (#) kullanılmasını gerektirir. Bu karakter veri setinizde bulunuyorsa, "#" yerine başka bir şey kullanın.
Örneğin, A2'de 2. virgülden sonraki her şeyi (ve virgülün kendisini) kaldırmak için formül şöyledir:
=LEFT(A2, FIND("#", SUBSTITUTE(A2, ",", "#", 2)) -1)
Bu formül nasıl çalışır?
Formülün kilit kısmı, n'inci sınırlayıcının (bizim durumumuzda virgül) konumunu hesaplayan FIND işlevidir. İşte nasıl yapılacağı:
A2'deki 2. virgülü SUBSTITUTE yardımıyla bir hash sembolüyle (veya verilerinizde bulunmayan başka bir karakterle) değiştiriyoruz:
SUBSTITUTE(A2, ",", "#", 2)
Elde edilen dize FIND'ın 2. argümanına gider, böylece bu dizedeki "#" konumunu bulur:
FIND("#", "Emma, Tasarım# (102) 123-4568")
FIND bize "#" karakterinin dizideki 13. karakter olduğunu söyler. Bu karakterden önceki karakter sayısını öğrenmek için 1'i çıkarmanız yeterlidir ve sonuç olarak 12 elde edersiniz:
FIND("#", SUBSTITUTE(A2, ",", "#", 2)) - 1
Bu numara doğrudan num_chars LEFT argümanı A2'den ilk 12 karakteri çekmesini ister:
= SOL(A2, 12)
Bu kadar!
Bir karakterin N. kez geçmesinden önce metin nasıl silinir
Belirli bir karakterden önce bir alt dizeyi kaldırmak için genel formül şudur:
RIGHT(SUBSTITUTE( hücre , " char ", "#", n ), LEN( hücre ) - FIND("#", SUBSTITUTE( hücre , " char ", "#", n )) -1)Örneğin, A2'de 2. virgülden önceki metni çıkarmak için formül şöyledir:
=RIGHT(SUBSTITUTE(A2, ",", "#", 2), LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", 2)) -1)
Baştaki boşluğu ortadan kaldırmak için yine TRIM işlevini bir sarmalayıcı olarak kullanırız:
=TRIM(RIGHT(SUBSTITUTE(A2, ",", "#", 2), LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", 2))))
Bu formül nasıl çalışır?
Özetle, n'inci sınırlayıcıdan sonra kaç karakter olduğunu buluruz ve sağdan karşılık gelen uzunlukta bir alt dizeyi çıkarırız. Aşağıda formül dökümü yer almaktadır:
İlk olarak, A2'deki 2. virgülü bir hash sembolü ile değiştiriyoruz:
SUBSTITUTE(A2, ",", "#", 2)
Elde edilen dize şu adrese gider Metin SAĞ argümanı:
RIGHT("Emma, Tasarım# (102) 123-4568", ...
Daha sonra, dizenin sonundan kaç karakter çıkarılacağını tanımlamamız gerekir. Bunun için, yukarıdaki dizede hash sembolünün konumunu buluruz (13'tür):
FIND("#", SUBSTITUTE(A2, ",", "#", 2))
Ve bunu toplam dize uzunluğundan (28'e eşittir) çıkarın:
LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", 2))
Aradaki fark (15) RIGHT'ın ikinci argümanına gider ve ilk argümandaki dizeden son 15 karakteri çekmesini söyler:
RIGHT("Emma, Tasarım# (102) 123-4568", 15)
Çıktı, önde gelen bir boşluk dışında istenen sonuca çok yakın olan " (102) 123-4568" alt dizesidir. Bu nedenle, bundan kurtulmak için TRIM işlevini kullanırız.
Bir karakterin son geçtiği yerden sonra metin nasıl kaldırılır
Değerlerinizin değişken sayıda sınırlayıcı ile ayrılması durumunda, bu sınırlayıcının son örneğinden sonraki her şeyi kaldırmak isteyebilirsiniz. Bu, aşağıdaki formülle yapılabilir:
SOL( hücre , FIND("#", SUBSTITUTE( hücre , " char ", "#", LEN( hücre ) - LEN(SUBSTITUTE( hücre , " char ", "")))) -1)A sütununun çalışanlar hakkında çeşitli bilgiler içerdiğini, ancak son virgülden sonraki değerin her zaman bir telefon numarası olduğunu varsayalım. Amacınız telefon numaralarını kaldırmak ve diğer tüm ayrıntıları saklamaktır.
Hedefe ulaşmak için, A2'deki son virgülden sonraki metni bu formülle kaldırabilirsiniz:
=LEFT(A2, FIND("#", SUBSTITUTE(A2, ",", "#", LEN(A2) - LEN(SUBSTITUTE(A2, ",","")))) -1)
Formülü sütunun aşağısına kopyaladığınızda bu sonucu elde edersiniz:
Bu formül nasıl çalışır?
Formülün özü, dizedeki son sınırlayıcının (virgül) konumunu belirlememiz ve soldan sınırlayıcıya kadar bir alt dize çekmemizdir. Sınırlayıcının konumunu almak en zor kısımdır ve bunu nasıl halledeceğimiz aşağıda açıklanmıştır:
İlk olarak, orijinal dizede kaç virgül olduğunu buluruz. Bunun için, her virgülü hiçbir şeyle ("") değiştiririz ve elde edilen dizeyi LEN işlevine sunarız:
LEN(SUBSTITUTE(A2, ",",""))
A2 için sonuç, A2'deki virgülsüz karakter sayısı olan 35'tir.
Yukarıdaki sayıyı toplam dize uzunluğundan (38 karakter) çıkarın:
LEN(A2) - LEN(SUBSTITUTE(A2, ",",""))
... ve A2'deki toplam virgül sayısı olan (ve aynı zamanda son virgülün sıra numarası olan) 3'ü elde edeceksiniz.
Daha sonra, dizedeki son virgülün konumunu elde etmek için FIND ve SUBSTITUTE işlevlerinin zaten bilinen kombinasyonunu kullanırsınız. Örnek numarası (bizim durumumuzda 3. virgül) yukarıda bahsedilen LEN SUBSTITUTE formülü tarafından sağlanır:
FIND("#", SUBSTITUTE(A2, ",", "#", 3))
Görünüşe göre 3. virgül A2'deki 23. karakterdir, yani ondan önceki 22 karakteri çıkarmamız gerekir. Bu nedenle, yukarıdaki formül eksi 1'i num_chars LEFT'in argümanı:
SOL(A2, 23-1)
Bir karakterin son geçtiği yerden önceki metin nasıl kaldırılır
Belirli bir karakterin son örneğinden önceki her şeyi silmek için genel formül şöyledir:
DOĞRU( hücre , LEN( hücre ) - FIND("#", SUBSTITUTE( hücre , " char ", "#", LEN( hücre ) - LEN(SUBSTITUTE( hücre , " char ", "")))))Örnek tablomuzda, son virgülden önceki metni ortadan kaldırmak için formül şu biçimi alır:
=RIGHT(A2, LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", LEN(A2) - LEN(SUBSTITUTE(A2, ",","")))))
Son dokunuş olarak, baştaki boşlukları ortadan kaldırmak için TRIM işlevinin içine yerleştiriyoruz:
=TRIM(RIGHT(A2, LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", LEN(A2) - LEN(SUBSTITUTE(A2, ",",""))))))
Bu formül nasıl çalışır?
Özetle, önceki örnekte açıklandığı gibi son virgülün konumunu alıyoruz ve bunu dizenin toplam uzunluğundan çıkarıyoruz:
LEN(A2) - FIND("#", SUBSTITUTE(A2, ",", "#", LEN(A2) - LEN(SUBSTITUTE(A2, ",",""))))
Sonuç olarak, son virgülden sonraki karakter sayısını alırız ve bunu RIGHT fonksiyonuna aktarırız, böylece dizenin sonundan o kadar karakter getirir.
Bir karakterin her iki tarafındaki metni kaldırmak için özel işlev
Yukarıdaki örneklerde gördüğünüz gibi, Excel'in yerel işlevlerini farklı kombinasyonlarda kullanarak hemen hemen her kullanım durumunu çözebilirsiniz. Sorun şu ki, bir avuç dolusu zor formülü hatırlamanız gerekiyor. Hmm, tüm senaryoları kapsayacak şekilde kendi işlevimizi yazsak nasıl olur? Kulağa iyi bir fikir gibi geliyor. Öyleyse, aşağıdaki VBA kodunu çalışma kitabınıza ekleyin (Excel'e VBA eklemek için ayrıntılı adımlar şunlardırburada):
Function RemoveText(str As String , delimiter As String , occurrence As Integer , is_after As Boolean ) Dim delimiter_num, start_num, delimiter_len As Integer Dim str_result As String delimiter_num = 0 start_num = 1 str_result = "" delimiter_len = Len(delimiter) For i = 1 To occurrence delimiter_num = InStr(start_num, str, delimiter, vbTextCompare) If 0 <delimiter_num Then start_num =delimiter_num + delimiter_len End If Next i If 0 <delimiter_num Then If True = is_after Then str_result = Mid(str, 1, start_num - delimiter_len - 1) Else str_result = Mid(str, start_num) End If End If RemoveText = str_result End FunctionFonksiyonumuzun adı Metni Kaldır ve aşağıdaki sözdizimine sahiptir:
RemoveText(string, delimiter, occurrence, is_after)Nerede?
Dize - orijinal metin dizesidir. Bir hücre referansı ile temsil edilebilir.
Sınırlayıcı - Metnin kaldırılacağı karakterin öncesi/sonrası.
Oluşum - sınırlayıcının örneği.
Is_after - Metnin sınırlayıcının hangi tarafından kaldırılacağını belirten bir Boolean değeri. Tek bir karakter veya bir karakter dizisi olabilir.
- TRUE - sınırlayıcıdan sonraki her şeyi siler (sınırlayıcının kendisi dahil).
- FALSE - sınırlayıcıdan önceki her şeyi siler (sınırlayıcının kendisi dahil).
İşlevin kodu çalışma kitabınıza eklendikten sonra, kompakt ve zarif formüller kullanarak hücrelerden alt dizeleri kaldırabilirsiniz.
Örneğin, A2'de 1. virgülden sonraki her şeyi silmek için B2'deki formül şöyledir:
=RemoveText(A3, ", ", 1, TRUE)
A2'de 1. virgülden önceki her şeyi silmek için C2'deki formül şöyledir:
=RemoveText(A3, ", ", 1, FALSE)
Özel fonksiyonumuz bir sınırlayıcı için dize 'de 2. argümana virgül ve boşluk (", ") koyarak daha sonra boşlukları kırpma zahmetinden kurtuluyoruz.
Özel işlevimiz güzel çalışıyor, değil mi? Ancak bunun kapsamlı bir çözüm olduğunu düşünüyorsanız, bir sonraki örneği henüz görmediniz :)
Karakterlerden önce, sonra veya karakterler arasındaki her şeyi silme
Birden fazla hücreden tek tek karakterleri veya metni eşleşme veya konuma göre kaldırmak için daha fazla seçenek elde etmek için Excel araç kutunuza Ultimate Suite'imizi ekleyin.
Burada, daha yakından bakacağız Pozisyona Göre Kaldır üzerinde bulunan özellik Ablebits Verileri tab> Metin grup> Kaldırmak .
Aşağıda, en yaygın iki senaryoyu ele alacağız.
Belirli bir metinden önceki veya sonraki her şeyi kaldırın
Tüm kaynak dizelerinizin ortak bir kelime veya metin içerdiğini ve bu metinden önceki veya sonraki her şeyi silmek istediğinizi varsayalım. Bunu yapmak için kaynak verilerinizi seçin, Pozisyona Göre Kaldır aracını kullanın ve aşağıda gösterildiği gibi yapılandırın:
- Seçiniz Metinden önceki tüm karakterler veya Metinden sonraki tüm karakterler seçeneğini belirleyin ve yanındaki kutuya anahtar metni (veya karakteri) yazın.
- Büyük ve küçük harflerin farklı veya aynı karakterler olarak ele alınmasına bağlı olarak Harfe duyarlı Kutu.
- Vurmak Kaldırmak .
Bu örnekte, A2:A8 hücrelerindeki "hata" kelimesinden önceki tüm karakterleri kaldırıyoruz:
Ve tam olarak aradığımız sonucu elde ederiz:
İki karakter arasındaki metni kaldırın
Alakasız bilgilerin 2 belirli karakter arasında olduğu durumlarda, bunları nasıl hızlı bir şekilde silebileceğinizi aşağıda bulabilirsiniz:
- Seçin Tüm alt dizeleri kaldırın ve aşağıdaki kutulara iki karakter yazın.
- "between" karakterlerinin de kaldırılması gerekiyorsa Sınırlayıcılar dahil Kutu.
- Tıklayın Kaldırmak .
Örnek olarak, iki tilde karakteri (~) arasındaki her şeyi siliyoruz ve sonuç olarak mükemmel şekilde temizlenmiş dizeleri elde ediyoruz:
Bu çok işlevli araçta bulunan diğer yararlı özellikleri denemek için, bu yazının sonundaki değerlendirme sürümünü indirmenizi öneririm. Okuduğunuz için teşekkür eder, gelecek hafta blogumuzda görüşmek dileğiyle!
Mevcut indirmeler
İlk veya son karakterleri kaldırın - örnekler (.xlsm dosyası)
Ultimate Suite - deneme sürümü (.exe dosyası)