• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

iD Oluşturmak ve iD yi parçalara ayırmak

  • Konbuyu başlatan Konbuyu başlatan wezyr
  • Başlangıç tarihi Başlangıç tarihi

wezyr

Altın Üye
Katılım
14 Nisan 2006
Mesajlar
121
Excel Vers. ve Dili
OFFİCE 2010-2019
Elimde yaklaşık olarak 160000 öğrencinin verisi var bu öğrencilerin ilçelere okullara ve şubelere göre ayrı ayrı istatistiki verilerini karşılaştırmak ve sıralamasını yapmam gerekiyor. bunun için her bir istatistiki veri için ayrı ayrı idler oluşturmak zorunda kalıyorum. bunu tek bir id oluşturup oluşturduğum bu id isteğim veri grubu için parçalamak ve buna göre pivot tablelerini almak istiyorum id oluşturmada sıkıntı çekmiyorum fakat oluşturduğum bu id yi parçalara ayırırken sıkıntı yaşıyorum yardımcı olursanız sevinirim. örnek dosya ektedir.
 

Ekli dosyalar

Son düzenleme:
Daha fazla id örneği ekleyebilir misiniz? Dosyanızdaki iki id "desen" i birbirinden farklı. Beklenmeyen karakter gelebiliyor örneğin "{" "}" "+" gibi. Hepsi olmasa da, en az %95 i ayrılabilir tahmin ediyorum. (Satır bazında)
 
Zeki bey ben onları sadece örnek olsun diye koydum id belirleme işini sabit yapacağız sadece hangi yöntemi kullansam diye örneklemeye çalıştım parcaal formülü kullanacak olursam diye sembollerle ayırmayı düşünmüştüm... siz farklı bir yöntemde uygulayabilirsiniz...
 
"Parçaal" vb. yöntemlerle id nizi parçalayıp hücrelere dağıtmanız mümkün değildir; çünkü değişken uzunlukta veri kullanmışsınız. En etkili teknik "Regular Expression" kitaplığıdır.

Id oluşturduğunuz algoritmayı iyi anlayabilmemiz için hem açıklamanız (dosyada açıklamışsınız) hem de örnek görerek test etmemiz gerekir. Aksi halde, "çalışmadı" gibi mesajlar ile bu başlık uzayıp gider.
 
dosyayı sabit id ile düzenledim bakarsanız sevinrim
 

Ekli dosyalar

Dosyayı inceledim, çok kolay olacak...
 
şimdiden teşekkürler zeki bey... formül yada makro olabilir
 
Ekteki örnek dosyayı inceleyiniz.

Makro ile özel fonksiyon yazılmıştır. Modül içinde görebilirsiniz. (ALT+F11)

Kullanılan kod;

Kod:
Function KPARÇAAL(Veri As Range, Ayıraç As String)
    On Error Resume Next
    KPARÇAAL = Split(Veri.Text, Ayıraç)(1)
End Function
 

Ekli dosyalar

korhan bey teşekkür ederim...
 
Bu da benden. Görüntü bozuksa F9 yapın.

Kod:
Private reg As Object

Sub auto_open()
    Set reg = CreateObject("VBScript.RegExp")
    reg.Pattern = "%([\wğüşıöçĞÜŞİÖÇ]+)%\*(\d{6,9})\*\?([ğüşıöçĞÜŞİÖÇ\w\s]*)\?&(\d{1,2})/(\w{1,2})&\+(\d{1,6})\+"
End Sub

Public Function IDayir(hucre As Range, index As Integer)
    Application.Volatile True
    IDayir = reg.Execute(hucre)(0).submatches(index - 1)
End Function
 

Ekli dosyalar

Zeki bey vaktiniz olursa regexp' yi biraz anlatabilirmisiniz.
 
Zeki bey vaktiniz olursa regexp' yi biraz anlatabilirmisiniz.

2 yıl önce enine boyuna anlattığım bir döküman eklemiştim. Oldukça kolay, etkili çözümler üretebilen bu sınıfın mantığı anlaşılamadığı için ilgi görmemişti. :)

Buradaki excel dosyasını yalnızca okumayın, farklı örnekler üzerinde de test edin ki kavrayın; çok hoşunuza gidecek.

http://www.excel.web.tr/f165/duzenli-fadelerde-pattern-sembollerin-anlamlary-t122962.html
 
Zeki bey paylaşımınız için teşekkür ederim.

Regexp'de kullanabileceğimiz ek araçlar nedir.

Execute ve pattern 'den başka neler var?
 
Buna araç değil de, üye(member) diyelim. "Microsoft VBScript Regular Expressions 5.5" referansını eklediğinizde tamamını görebilirsiniz. Kalabalık bir sınıf değildir.
 
Zeki bey sağolun, iyi akşamlar.
 
Geri
Üst