Excel - İki Dosyayı Karşılaştırma
-
Allak bullak oldu kafa :/
-
Şimdi soru aslında matematikteki kümeler konusu ile ilgili.. kümelerin kesişimi...
şimdi iki tane dizimiz var.. bunlardan birincisi en az bir eleman içerir ikincisi en az sıfır ...
şimdi 1.dizi her hangi bir sayıda 2. dizi de herhangi bir sayıda eleman içersin...
bunların kesişim kümesinin eleman sayısı en fazla küçük kümenin eleman sayısı kadar olabilir..
yani senin ikinci dizi aynen birinci dizinin sonuda mevcut olabilir...
birinci küme küçükse birnci küme aynen ikinci kümenin başında mevcut olabilir...
öncelikle bir max eleman sayısı tanımlıycaz.. bu yukarıda anlatttığım şey
ikinci küme boş küme ise burdan komut sonuna atlatıcaz ( hiç bir işlem yapmıyca z yani
başlangıçta bir iddiamız olacak diycez ki bu iki kümeden birsi diğerinin alt kümesidir (tüm elemanlar diğerinde mevcuttur
1.aqwertyvbnca
2. vbnca gibi ( burda nmax 5 olur)
sonra bu iddamızın doğruluğunu sınatacağız doğruysa asıl işlemi yaptıracaz
önermemiz yanlışsa nmax-1 elemanda sınaması yapacaaz
herhangi bir nmax-i dğerinde eşleşme yakaldığımızda ise (i burda döngü indisi olsun)
kinci dizide nmax-i den sonraki elemanları kesip 1.ye ekliycez ve sonuç diziyi oluşturacaz...
Şu soru aklına gelebilir.. niçin kafadan tüm elemanların kesiştiğini varsaydın..
eğer en küçük kesişim kümesinden başlasaydık yani 1 den
sonra 2 sonra 3 ... kesişme var mı diye sorgulamak zorunda kalacaktık tekrarlı elemnlar da varsa bu algoritmayı karmaşık ve yanlış çalışır bir duruma da getirecekti.. biz enyüksek kesişimden başlayınca tüm bunlardan kurtulmuş oluruz...
-
VB kodu yazmadan olmayacak gibi...
-
Yazdığım C programı küçük dosyalarda işe yarıyor fakat içinde çok satır olan dosyalarda sorun çıkartıyor. Bu akşama kadar halletmem şart büyük sıkıntı olmaya başladı iyice benim için.
-
temel oalrak excelde sorunu belli bir aşamaya getirdim fakat tabloda döngü çalışmadığı için elle müdahale ya da makro yazmak gerekiyor 6000 data olunca sıkıntı tabi...
kullanıcı tanımlı bir function yazacam kısmetse...
-
umutla bekliyorum hocam :D
-
al bakalım
*********
Function kaynastir(soldizi As String, sagdizi As String) As String
l1 = Len(soldizi)
l2 = Len(sagdizi)
If l1 < l2 Then nmax = l1 Else nmax = l2
nmax = n
For i = n To 0 Step -1 ' burda sondaki i sayıda karakterin ortak olduğunu iddia ediyoruz doğrysa döngüden çıkıp değeri dödürüyoruz
If Right(l1, i) = Left(l2, i) Then kaynastir = soldizi + Right(sagdizi, (l2 - i))
GoTo cik
Next i
cik:
kaynastir = kaynastir
End Function****
bu fonksiyon birinci diziye ikinci dizinin ortak olmayan kısmını ekliyor
hiç ortaklık yoksa doğal olarak iki diziyi birleştirmiş oluyor.. eğer bunu istemiyorsan yani ortaklık yoksa birleşme de yok diyosan bunu kontrol eden bir fonksiyon değişkeni ve birkaç satır kod da yazabilirsin..
bu fonksiyon öncelikle yazılı olduğu kitapta çalışır diye biliyorum fakat mutlaka bilgisayara public edilebilir excel bilgim o kadar yok..
-
ufak bir hata var arkadaşlar
nmax=n yazmışım
n=nmax olmalı
-
ltcelik bunu yazdı:
-----------------------------al bakalım
*********
Function kaynastir(soldizi As String, sagdizi As String) As String
l1 = Len(soldizi)
l2 = Len(sagdizi)
If l1 < l2 Then nmax = l1 Else nmax = l2
nmax = n
For i = n To 0 Step -1 ' burda sondaki i sayıda karakterin ortak olduğunu iddia ediyoruz doğrysa döngüden çıkıp değeri dödürüyoruz
If Right(l1, i) = Left(l2, i) Then kaynastir = soldizi + Right(sagdizi, (l2 - i))
GoTo cik
Next i
cik:
kaynastir = kaynastir
End Function****
bu fonksiyon birinci diziye ikinci dizinin ortak olmayan kısmını ekliyor
hiç ortaklık yoksa doğal olarak iki diziyi birleştirmiş oluyor.. eğer bunu istemiyorsan yani ortaklık yoksa birleşme de yok diyosan bunu kontrol eden bir fonksiyon değişkeni ve birkaç satır kod da yazabilirsin..
bu fonksiyon öncelikle yazılı olduğu kitapta çalışır diye biliyorum fakat mutlaka bilgisayara public edilebilir excel bilgim o kadar yok..
-----------------------------Hocam staj yaptığım yerde exe uzantılı dosyaları indirmeye izin yok derleyici de yok burada. Akşam geçince hemen denicem çok teşekkür ediyorum
-
bunu zaten excelden yazıyorsun.. vb indirmen gerk yok :))