• DİKKAT !

    Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak Dosya Yükleme tamamen ücretsizdir.

Soru Excel Hücre İçindeki Sayıları ve Metinleri Ayırma (Formül ve RegEx Makro Kodları)

yucele

Yeni Üye
Katılım
24 Nis 2024
Mesajlar
2
Aldığı beğeni
0
Katkı
%0.00
Excel V
Office 365 TR
Konu Sahibi
Herkese selamlar,
Sistemden çektiğimiz karmaşık ürün stok listesinde veriler tek bir hücreye çok düzensiz girilmiş. Örneğin bazı hücrelerde Kablo_150_Metre_X12, bazılarında ise 300Adet_Hortum_Siyah veya Vida-M8-25mm-500Pcs yazıyor. Yani metinler ve sayılar tamamen birbirine girmiş durumda. Sabit bir karakter uzunluğu olmadığı için Hızlı Doldurma veya Metni Sütunlara Dönüştür özellikleri işe yaramıyor, veriler kayıyor.
Hücrenin içindeki metin ne kadar karmaşık olursa olsun, içindeki sadece sayısal değerleri (rakamları) ayıklayıp B sütununa, harfleri (metni) ise C sütununa hatasız bölebilecek bir kullanıcı tanımlı fonksiyon (KTF) veya RegEx (Regular Expressions) makro kalıbı aramaktayım. Örnek senaryoyu içeren excel belgesi ektedir, desteklerinizi bekliyorum.
 

Ekli dosyalar

soru net değil.
 
Konu Sahibi
Galapagos Hocam selamlar, aslında soruyu örneklerle oldukça netleştirdiğimi düşünüyordum ama gözden kaçan bir detay olmaması adına daha da detaylandırayım.
Elimizdeki ham veri tek bir hücrede hem harf, hem rakam hem de özel karakter (, -) barındıran karmaşık stok kodlarından oluşuyor. Sabit bir uzunluk veya belirli bir ayırıcı karakter karakter ( gibi) her satırda aynı hizada olmadığı için Metni Sütunlara Dönüştür seçeneği patlıyor.
Tam olarak talep ettiğim çıktı şu şekilde:
Örnek 1: Kablo_150_Metre_X12
  • B Sütununa (Sayılar): 15012 (Hücre içindeki tüm rakamların birleşik hali)
  • C Sütununa (Metinler): Kablo_Metre_X (Rakamlar ve özel karakterler temizlenmiş sadece harf hali)
Örnek 2: 300Adet_Hortum_Siyah
  • B Sütununa (Sayılar): 300
  • C Sütununa (Metinler):Adet_Hortum_Siyah

    (veya özel karakterler giderek AdetHortumSiyah)
Yani standart döngülerle tek tek karakter kontrolü yapmak yerine, VBA tarafında VBScript.RegExp (Regular Expressions) kütüphanesini kullanarak;
  • Sayılar için [0-9] veya \d pattern'i ile eşleşenleri ayıklayacak,
  • Metinler için ise sayıları ve özel karakterleri [^a-zA-ZĞÜŞİÖÇğüşıöç] regex kalıbıyla temizleyecek,
büyük veride de hızlı çalışacak bir kullanıcı tanımlı fonksiyon (KTF) veya buton makrosu aramaktayım. Örnek dosyamda da bu senaryoya uygun 10 adet farklı kırılımda gerçek veri bulunuyor hocam. Şimdi daha net açıklayabildim mi acaba? Belirttiğim RegEx mimarisini koda dökebilecek hocalarımızın desteğini bekliyorum.
 
365 işlevleriyle resimdeki formül ile dökülmeli olarak tek seferde işlemi yapabilirsiniz.
Eğer KTF istiyorsanız LAMBDA ile KTF yapmanız da mümkün.

1790779444536.png
 
PowerQuery kullanıyorsanız onunla da yapılır.

1790779895460.png
 
Geri
Üst