Regex kullanarak Excel'de boşlukları ve boş satırları kaldırma

  • Bunu Paylaş
Michael Brown

Beyaz boşlukları en etkili şekilde işlemek ister misiniz? Bir hücredeki tüm boşlukları kaldırmak, birden çok boşluğu tek bir karakterle değiştirmek, yalnızca sayılar arasındaki boşlukları kırpmak ve daha fazlası için düzenli ifadeleri kullanın.

Hangi girdi verisini kullanırsanız kullanın, boşluksuz bir veri kümesiyle neredeyse hiç karşılaşmazsınız. Çoğu durumda, boşluk iyidir - farklı bilgi parçalarını görsel olarak ayırmak ve daha kolay algılanmasını sağlamak için kullanırsınız. Ancak bazı durumlarda, kötü olabilir - fazladan boşluklar formüllerinizi karıştırabilir ve çalışma sayfalarınızı neredeyse yönetilemez hale getirebilir.

    Excel'de boşlukları kırpmak için neden düzenli ifade kullanmalı?

    Excel çalışma sayfalarındaki boşlukları kaldırmak için düzenli ifadeleri kullanmanın inceliklerine girmeden önce, ilk etapta akla gelen soruyu ele almak istiyorum - Excel'de zaten TRIM işlevi varken neden regex'lere ihtiyacımız var?

    Aradaki farkı anlamak için, her iki durumda da neyin boşluk olarak kabul edildiğini görelim:

    • Yerleşik TRIM işlevi yalnızca boşluk karakteri 7-bit ASCII sisteminde 32 değerine sahiptir.
    • Düzenli ifadeler boşluk ( ), sekme (\t), satır başı (\r) ve yeni satır (\n) gibi birkaç farklı beyaz boşluk biçimini tanımlayabilir. boşluk karakteri (\s) tüm bu türlerle eşleşir ve ham girdi verilerini temizlemek için son derece yararlıdır.

    Perde arkasında tam olarak ne olduğunu bilmek, bir çözüm bulmak için çok daha kolay, değil mi?

    Excel'de düzenli ifadeler nasıl etkinleştirilir

    Kullanıma hazır Excel'in düzenli ifadeleri desteklemediği bilinen bir gerçektir. Bunları etkinleştirmek için özel bir VBA işlevi oluşturmanız gerekir. Neyse ki, zaten bir tane var, adı RegExpReplace Bekle, kaldırmaktan bahsederken neden "replace"? Excel dilinde "remove", "boş bir dizeyle değiştir" için kullanılan başka bir kelimedir :)

    İşlevi Excel'inize eklemek için kodunu bu sayfadan kopyalayın, VBA düzenleyicisine yapıştırın ve dosyanızı makro özellikli çalışma kitabı (.xlsm).

    İşte referansınız için fonksiyonun sözdizimi:

    RegExpReplace(text, pattern, replacement, [instance_num], [match_case])

    İlk üç bağımsız değişken gereklidir, son ikisi isteğe bağlıdır.

    Nerede?

    • Metin - içinde arama yapılacak orijinal dize.
    • Desen - aranacak regex.
    • Değiştirme - ile değiştirilecek metin. için Kaldır beyaz alanlar bu bağımsız değişkeni şu şekilde ayarlarsınız:
      • boş dize ("") kesinlikle tüm boşlukları kırpmak için
      • uzay karakter (" ") birden fazla boşluğu tek bir boşluk karakteriyle değiştirmek için
    • Instance_num (isteğe bağlı) - örnek numarası. Çoğu durumda, tüm örnekleri değiştirmek için bunu atlarsınız (varsayılan).
    • Match_case (isteğe bağlı) - metin büyük/küçük harflerinin eşleştirilip eşleştirilmeyeceğini (DOĞRU) veya yok sayılıp sayılmayacağını (YANLIŞ) belirten bir Boolean değeri. Beyaz boşluk için bu değer önemsizdir ve bu nedenle atlanır.

    Daha fazla bilgi için lütfen RegExpReplace işlevine bakın.

    Regex ile boşluk nasıl kaldırılır - örnekler

    Çalışma kitabınıza eklenen RegExpReplace fonksiyonu ile farklı senaryoları teker teker ele alalım.

    Regex kullanarak tüm boşlukları kaldırın

    Bir dizedeki tüm boşlukları kaldırmak için, boşluk, sekme, satır başı ve satır besleme dahil olmak üzere herhangi bir boşluk karakterini aramanız ve bunları boş bir dizeyle ("") değiştirmeniz yeterlidir.

    Desen : \s+

    Değiştirme : ""

    Kaynak dizenin A5'te olduğunu varsayarsak, B5'teki formül şöyledir:

    =RegExpReplace(A5, "\s+", "")

    Kalıplarınızı yönetmeyi kolaylaştırmak için, regex'i önceden tanımlanmış bir hücreye girebilir ve $A$2 gibi mutlak bir referans kullanarak formüle verebilirsiniz, böylece formül sütundan aşağı kopyalanırken hücre adresi değişmeden kalır.

    =RegExpReplace(A5, $A$2, "")

    Birden fazla boşluk kaldırın

    Kaldırmak için fazladan boşluk (yani birden fazla ardışık boşluk), aynı regex \s+ kullanın ancak bulunan eşleşmeleri tek bir boşluk karakteriyle değiştirin.

    Desen : \s+

    Değiştirme : " "

    =RegExpReplace(A5, "\s+", " ")

    Lütfen bu formülün yalnızca sözcükler arasında değil, aynı zamanda bir dizenin başında ve sonunda da bir boşluk karakteri tuttuğuna dikkat edin, bu iyi değildir. Baştaki ve sondaki boşluklardan kurtulmak için, yukarıdaki formülü baştan ve sondan boşlukları silen başka bir RegExpReplace işlevine yerleştirin:

    =RegExpReplace(RegExpReplace(A5, "\s+", " "), "^[\s]+

    Baştaki ve sondaki boşlukları kaldırmak için regex

    Bir satırın başında veya sonunda boşluk aramak için başlangıç ^ ve bitiş $ bağlayıcılarını kullanın.

    Liderlik boşluk:

    Desen : ^[\s]+

    Çekme boşluk:

    Desen : [\s]+$

    Liderlik ve takip eden boşluk:

    Desen : ^[\s]+

    Hangi regex'i seçerseniz seçin, eşleşmeleri hiçbir şeyle değiştirmeyin.

    Değiştirme : ""

    Örneğin, A5'teki bir dizenin başındaki ve sonundaki tüm boşlukları ortadan kaldırmak için formül şöyledir:

    =RegExpReplace(A5, "^[\s]+

    Aşağıdaki ekran görüntüsünde gösterildiği gibi, bu işlem yalnızca baştaki ve sondaki boşlukları kaldırır. Kelimeler arasındaki boşluklar bozulmadan kalır ve okuyucunun gözü için görsel olarak hoş bir görünüm oluşturur.

    Fazladan boşlukları kaldırın ancak satır sonlarını koruyun

    Çok satırlı dizelerle çalışırken, fazladan boşluklardan kurtulmak, ancak satır sonlarını korumak isteyebilirsiniz. Bunu yapmak için, boşluk karakteri \s yerine boşluk [ ] veya boşluk ve sekme [\t ] arayın. İkinci model, kaynak verileriniz başka bir kaynaktan, örneğin bir metin düzenleyiciden içe aktarıldığında kullanışlı olur.

    Aşağıdaki veri kümesinde, birden fazla satırı olduğu gibi bırakarak tüm baştaki/sondaki boşlukları ve aradaki boşlukların biri hariç tümünü kırpmak istediğinizi varsayalım. Bu görevi yerine getirmek için iki farklı RegExpReplace fonksiyonuna ihtiyacınız olacaktır.

    İlk işlev birden fazla boşluğu tek bir boşluk karakteriyle değiştirir.

    =RegExpReplace(A5, " +", " ")

    Diğeri ise satırın başından ve sonundan boşlukları siler:

    =RegExpReplace(A5, "^ +

    Sadece iki işlevi birbirinin içine yerleştirin:

    =RegExpReplace(RegExpReplace(A5, " +", " "), "^ +

    Ve mükemmel bir sonuç alacaksınız:

    Birden fazla boşluğu tek bir karakterle değiştirmek için regex

    Bir dizeden tüm boşlukları kaldırmak ve her ardışık boşluk grubunu belirli bir karakterle değiştirmek isterseniz, yapmanız gereken şey budur:

    İlk olarak, baştaki ve sondaki beyaz boşlukları kırpmak için bu regex'i kullanın:

    =RegExpReplace(A8, "^[\s]+

    Ardından, yukarıdaki işlevi Metin bir veya daha fazla ardışık boşlukları belirttiğiniz karakterle, örneğin bir tire ile değiştiren başka bir RegExpReplace argümanı:

    Desen : \s+

    Değiştirme : -

    Kaynak dizenin A8'de olduğunu varsayarsak, formül bu şekli alır:

    =RegExpReplace(RegExpReplace(A8, "^[\s]+

    Ya da ekran görüntüsünde gösterildiği gibi desenleri ve değiştirmeleri ayrı hücrelere girebilirsiniz:

    Boş satırları kaldırmak için regex

    İşte bir hücrede birden fazla satır bulunan kullanıcıların sıkça sorduğu bir soru: "Hücrelerimde çok fazla boş satır var. Her bir hücreye gidip her bir satırı manuel olarak silmek dışında bunlardan kurtulmanın bir yolu var mı?" Cevap: Bu çok kolay!

    Geçerli satırın başlangıcından ^ sonraki satıra \n kadar tek bir karakter içermeyen boş satırlarla eşleşmek için regex şöyledir:

    Desen : ^\n

    Görsel olarak boş satırlarınız boşluk veya sekme içeriyorsa, bu düzenli ifadeyi kullanın:

    Desen : ^[\t ]*\n

    Bu formülü kullanarak regex'i boş bir dizeyle değiştirin ve tüm boş satırlar bir anda yok olsun!

    =RegExpReplace(A5, $A$2, "")

    RegEx Araçları ile boşlukları kaldırma

    Yukarıdaki örnekler regex'ler tarafından sağlanan harika olanakların sadece küçük bir kısmını göstermiştir. Ne yazık ki, klasik düzenli ifadelerin tüm özellikleri VBA'da mevcut değildir.

    Neyse ki, Ultimate Suite'imizde bulunan RegEx Araçları, Microsoft'un .NET RegEx motoru tarafından işlendiğinden bu sınırlamalardan muaftır. Bu, VBA RegExp tarafından desteklenmeyen daha karmaşık desenler oluşturmanıza olanak tanır. Aşağıda bu tür bir düzenli ifade örneği bulacaksınız.

    Sayılar arasındaki boşluğu kaldırmak için regex

    Alfanümerik bir dizede, yalnızca sayılar arasındaki boşlukları kaldırmak istediğinizi varsayalım, böylece "A 1 2 B" gibi bir dize "A 12 B" olur.

    Herhangi iki rakam arasındaki bir boşlukla eşleşmek için aşağıdaki çözümleri kullanabilirsiniz:

    Desen : (?<=\d)\s+(?=\d)

    Yukarıdaki regex'lere dayalı bir formül oluşturmak için gerçekleştirilmesi gereken iki kolay adım vardır:

    1. Üzerinde Ablebits Verileri sekmesinde Metin grubunu seçin, tıklayın Regex Araçları .

    2. Üzerinde Regex Araçları bölmesinde kaynak veriyi seçin, regex'inizi girin ve Kaldırmak seçeneğini seçin ve Kaldırmak .

      Sonuçları değer olarak değil formül olarak almak için Formül olarak ekle onay kutusu.

    Bir dakika içinde AblebitsRegexRemove işlevi orijinal verilerin sağındaki yeni bir sütuna eklenir.

    Alternatif olarak, regex'i bir hücreye, örneğin A5'e girebilir ve formülü doğrudan bir hücreye Fonksiyon Ekleme iletişim kutusu, burada AblebitsRegexRemove altında kategorize edilmiştir AblebitsUDF'ler .

    Bu işlev dizeleri kaldırmak için özel olarak tasarlandığından, yalnızca iki bağımsız değişken gerektirir - giriş dizesi ve regex:

    =AblebitsRegexRemove(A5, $A$2)

    Düzenli ifadeleri kullanarak Excel'de boşlukları nasıl kaldıracağınızı öğrendiniz. Okuduğunuz için teşekkür ediyor ve gelecek hafta sizi blogumuzda görmeyi dört gözle bekliyorum!

    Mevcut indirmeler

    Regex ile boşlukları kaldırma - örnekler (.xlsm dosyası)

    Ultimate Suite - deneme sürümü (.exe dosyası)

    Michael Brown, yazılım araçlarını kullanarak karmaşık süreçleri basitleştirme tutkusuna sahip, kendini adamış bir teknoloji meraklısıdır. Teknoloji endüstrisinde on yılı aşkın deneyimiyle Microsoft Excel ve Outlook'un yanı sıra Google E-Tablolar ve Dokümanlar'daki becerilerini geliştirdi. Michael'ın blogu, bilgisini ve uzmanlığını başkalarıyla paylaşmaya, üretkenliği ve verimliliği artırmaya yönelik takip etmesi kolay ipuçları ve eğitimler sağlamaya adamıştır. İster deneyimli bir profesyonel, ister yeni başlayan olun, Michael'ın blogu, bu temel yazılım araçlarından en iyi şekilde yararlanmak için değerli bilgiler ve pratik tavsiyeler sunar.