• 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.

Çözüldü C1 satırına yazdığım formülü tüm c satırlarına makro ile göndermek

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.
Durum
Konu Çözümlendiği İçin Kapatılmıştır.

Cet2007

Yeni Üye
Katılım
12 Mar 2022
Mesajlar
3
Aldığı beğeni
1
Excel V
Office 2019 TR
Konu Sahibi
Merhabalar

Excelde a1 ve b1 hücrelerindeki verileri c1 e makro ile birleştirmek istiyorum buraya kadar normal formül ama sonrasında a2 ve b2 ye veri geldiğinde c2 ye bunu otomatik yapmasını istiyorum (c1e formül yaz aşağı doğru çek önerisinde bulunmayın lütfen bunun makro ile olmasını istiyorum veriden yer kazanmak için) bilen birisi yardımcı olursa sevinirim teşekkürler
 
Çözüm
Rica ederim, İbrahim Görgülü üstat. Ancak yazdığım kodda hücrelerin dolu olup olmadığını kontrole gerek kalmıyor. Çünkü makro sadece değişen hücrelerde çalışıyor. Diyelim b2 sildik. Makro b3 kontrol etmez. Dolayısıyla değişen hücre boş mu dolu mu kontrol etmeye gerek kalmıyor. Çünkü b2 sildi isek c2 içeriği zaten değişmeli, yok veri girdi isek gene c2 değişmeli. İyi geceler.
HTML:
C++:
İçeriği görebilmek için Giriş yap ya da Üye ol.
...
Örneği inceleyin !
 
Kodları workshhet'in "selection change" olayına yazarsan her işlem yaptığında sonuç otomatik gelir. Sayfaya bir buton ekleyip ona makro atayacaksan da modül'e yazmalısın. Bu dosyada ikisi de var ve 500 satır için geçerli. Kodda yer alan döngüde "500" gördüğün yere "1000" yazarsan 1000 satır için sonuç alırsın. Yada kaç istersen ;)
 
Kodları workshhet'in "selection change" olayına yazarsan her işlem yaptığında sonuç otomatik gelir. Sayfaya bir buton ekleyip ona makro atayacaksan da modül'e yazmalısın. Bu dosyada ikisi de var ve 500 satır için geçerli. Kodda yer alan döngüde "500" gördüğün yere "1000" yazarsan 1000 satır için sonuç alırsın. Yada kaç istersen ;)
Erkan Çimenay makronuz hücre veya satır, kolon kontrol etmediği için her hücrede boşuna çalışmasına sebebiyet verir. Belli kolon dışında çalışmamasını kontrol ederseniz daha verimli çalışır.
saygılar
 
Erkan Çimenay makronuz hücre veya satır, kolon kontrol etmediği için her hücrede boşuna çalışmasına sebebiyet verir. Belli kolon dışında çalışmamasını kontrol ederseniz daha verimli çalışır.
saygılar
Sadece C sütununa cevap döndürür. Başka kolona döndürmez. Ayrıca yüz binlerce satır kontrol etmediği için verim açısından çok belirleyici bir durum değil diye düşünüyorum. Her çözümün bazı dezavantajları da var tabi. Mesela sizin gönderdiğiniz örnekte de direk olarak hedef hücreler işleniyor ama kullanıcı önce ikinci kolona sonra ilk kolona giriş yaparsa sonuç alamaz. Bununla beraber her iki çözüm de isteneni verir ve bence yeterlidir.
 
Sadece C sütununa cevap döndürür. Başka kolona döndürmez. Ayrıca yüz binlerce satır kontrol etmediği için verim açısından çok belirleyici bir durum değil diye düşünüyorum. Her çözümün bazı dezavantajları da var tabi. Mesela sizin gönderdiğiniz örnekte de direk olarak hedef hücreler işleniyor ama kullanıcı önce ikinci kolona sonra ilk kolona giriş yaparsa sonuç alamaz. Bununla beraber her iki çözüm de isteneni verir ve bence yeterlidir.
Haklısın kendi aralarında dezavantajları var tabi ki. Ben sadece kontrol etseydin her seferinde for döngüsü çalışmasın diye nacizane eleştiride bulunmuştum. Sonuç ta dediğin gibi ikisi de iş gören makrolardır.
 
[/QUOTE]Sayın Erkan Çimenay kodların C sütununa yanıt döndürdüğü doğru.
Ama sayfada nefes aldığınız her yerde kodlar çalışıyor.
Sayın Askan'ın dikkat çektiği de bu.
Dahası C sütununu komple silemiyorsunuz.
Artı dahası özel bir talep yoksa birleştirme işlemlerinde
daha sonra ayrıştırması kolay olan işleçler seçmekte fayda var.
Boşluk bu açıdan sakıncalı bir işleç. Atıyorum adı: ali ihsan
soyadı: ihsan ali . Bunları birleştirdik.
Oldu ali ihsan ihsan ali. Split fonksiyonu ile bunu ayırabiliriz.
Ama doğru ad soyadı bulamayız. Oysaki atıyorum "_" ile birleştirmiş olsaydık
ali ihsan_ihsan ali birleştirilmiş hali olacaktı. Bunu ister Split fonksiyonuyla
ister excelin metni sütunlara ayır işleviyle yapın kafanız karışmaz da ağrımaz da.
Kodlar aşağıdaki gibi olursa daha makul bir çözüm gibi.

HTML:
Kod:
İçeriği görebilmek için Giriş yap ya da Üye ol.
 
Bütün arkadaşlarımızın yazdıklarından + taraflarını alırsak ortaya şu sonuç çıkar:
1- Birleştirme işleminin hangi işleçle yapılacağı kullanıcı inisiyatifindedir. Bu " ", "_" ya da "+" olabilir. (Ya da başka bir şey.)
2- Makromuz a ve b sütunlarından herhangi birinde değişiklik olduğunda çalışmalı. Geriye kalan 16382 sütun bizi ilgilendirmiyor.
3- Sütun kontrol etmezsek K sütununa veri girildiğinde de makromuz çalışır ve bütün hücreleri yeninde hesaplar. Diyelim ki dosyamızda 500 bin satırlık veri var. Bu durumda bu 500 bin satırın hepsi yeniden hesaplanır.
4- Sadece sütunu kontrol etmek de yetmez satır kontrolü de yapmak lazım. Neden? Çünkü diyelim 500 bin satır veri var. 2. satırda veri değiştiğinde döngü ile 500 bin satırın tamamını işlememeli. Sadece 2. satırda çalışmalı. Sonuç:

HTML:
Kod:
İçeriği görebilmek için Giriş yap ya da Üye ol.
 
HTML:
HTML:
İçeriği görebilmek için Giriş yap ya da Üye ol.
ubak hocamın affına sığınarak kodlarına küçük bir eklemede ben yapayım istedim. bütün hocalarımız birer katkıda bulunmuş madem ben de çorbaya tuz atayım dedim askan excelcan
 
Rica ederim, İbrahim Görgülü üstat. Ancak yazdığım kodda hücrelerin dolu olup olmadığını kontrole gerek kalmıyor. Çünkü makro sadece değişen hücrelerde çalışıyor. Diyelim b2 sildik. Makro b3 kontrol etmez. Dolayısıyla değişen hücre boş mu dolu mu kontrol etmeye gerek kalmıyor. Çünkü b2 sildi isek c2 içeriği zaten değişmeli, yok veri girdi isek gene c2 değişmeli. İyi geceler.
 
Rica ederim, İbrahim Görgülü üstat. Ancak yazdığım kodda hücrelerin dolu olup olmadığını kontrole gerek kalmıyor. Çünkü makro sadece değişen hücrelerde çalışıyor. Diyelim b2 sildik. Makro b3 kontrol etmez. Dolayısıyla değişen hücre boş mu dolu mu kontrol etmeye gerek kalmıyor. Çünkü b2 sildi isek c2 içeriği zaten değişmeli, yok veri girdi isek gene c2 değişmeli. İyi geceler.
HTML:
C++:
İçeriği görebilmek için Giriş yap ya da Üye ol.

ubak hocam lütfen yanlış anlamayın, kodda dolu olup olmadığını kontrol ettirmekteki amacım her 2 hücre dolu olursa birleştirsin şimdi hücrelerden biri boş ise birleştirmeyi de silmesi için güncelleme yaptım :))
 
Çözüm
Yok üstadım ne yanlış anlaması. İşin buradan sonrası kullanıcının amacına bağlıdır. Mesela;
1 Kullanıcı derki A ya da B hücresi değiştiğinde C hücresi güncellensin. Bu benim kodun senaryosu.
2 Kullanıcı der ki hücrelerden birini sildiğimde değişmesin. Veri girince değişsin. Bu da sizin senaryonuz.
3 ...
Yani bir sürü farklı senaryoya göre yazılabilir. Her bir kod kendi senaryosu için doğru olur.
Bence burada kodu yazmaktan daha önemlisi kullanıcının hangi senaryoya göre çalıştığını doğru şekilde tespit edebilmek.
İyi geceler...
 
Application.EnableEvents = False
Bu kodlar çok tehlikeli söyleyeyim :)
Kod çalışırken hata verirse exceli kapaatıp açmak gerekeiliyor yoksa kodlar çalışmıyor.Bunun için hata kontrolu yapıp hata olunca nereye gidecekse orayada true kısmı eklenmeli.
Tecrübelerden biliyorum bu gıcık kodu.Selection içine yazılmazsada büyük verilerde kasıp durur durmadan çalışacağı için.
 
Yok Refaz üstat Bizim kodlar A ve B hücrelerinin değerini birleştirip C hücresine yazdığı için hata olacak bir durum yok. Application.EnableEvents = False yazmaktaki amacımız Worksheet_Change olayının C hücresindeki veri değiştiğinde kendi kendini tetiklemesini engellemek.
 
Yok Refaz üstat Bizim kodlar A ve B hücrelerinin değerini birleştirip C hücresine yazdığı için hata olacak bir durum yok. Application.EnableEvents = False yazmaktaki amacımız Worksheet_Change olayının C hücresindeki veri değiştiğinde kendi kendini tetiklemesini engellemek.
Evet abey false olayını biliyorum tetiklemesin diye.Ben genel olarak yazmıştım bilgi olsun diye.Bu kodları nerde görsem nedense yazma ihtiyacı duyuyorum :)
 
Konu Sahibi
Sadece C sütununa cevap döndürür. Başka kolona döndürmez. Ayrıca yüz binlerce satır kontrol etmediği için verim açısından çok belirleyici bir durum değil diye düşünüyorum. Her çözümün bazı dezavantajları da var tabi. Mesela sizin gönderdiğiniz örnekte de direk olarak hedef hücreler işleniyor ama kullanıcı önce ikinci kolona sonra ilk kolona giriş yaparsa sonuç alamaz. Bununla beraber her iki çözüm de isteneni verir ve bence yeterlidir.
kodlar için ve yorumlarınız için teşekkürler

ben bu örneği anlaşılır olsun diye yazdım a ve b yi c de bazen birleştirmek bazen de a ve b ye girdiğim sayı değerleri ile c de oluşturacağım hesaplama için istemiştim c sütunun da formül yazmak 5000 satır bu exceli büyütüyor bu şekilde büyümeyeceğini düşündüm ama konuştuklarınızdan anladığım kadarıyla bu da excelin fazla çalışmasına sebep oluyor !
 
Haklısın kendi aralarında dezavantajları var tabi ki. Ben sadece kontrol etseydin her seferinde for döngüsü çalışmasın diye nacizane eleştiride bulunmuştum. Sonuç ta dediğin gibi ikisi de iş gören makrolardır.
Estağfirullah amacım size sert bir karşılık vermek değil kardeşim. Nacizane eleştirileriniz başım üzerine...
 
Sayın Cet2007 ; biraz yanlış anlaşılma olmuş. Makro kodunu doğru kurgularsanız, sizin de dediğiniz gibi dosyayı yavaşlatacak binlerce satır formülden kurtulursunuz gereksiz yere tekrar tekrar formül hesaplaması olmaz. Ama kurguyu hatalı yaparsanız formül nasıl sürekli bellek meşgul ederse makro da aynısını yapabilir. En son benim yazdığım kod ile İbrahim Görgülü üstadın yaptığı değişiklik sizin işlem için en idealidir. Benim yazdığım kod, A ve B hücresine veri girdiğinizde yada içerik sildiğinizde C hücresini günceller. İbrahim Görgülü üstadın eklediği ise hücrelerden ikisi de dolu ise makro çalışsın mantığında... 12 numaralı mesajda yazdığım gibi, bundan sonrası tamamen kullanıcının ihtiyacına göre değişir. Yani kullanıcının senaryosu ne ise ona göre yol haritası çizmek. Ancak makro her zaman hızlıdır. Gereksiz tekrar yapmaz. Sayfaya yazdığınız formül sürekli bellekte yer tutar ve dosyanın herhangi bir sayfasında herhangi bir hücresinde değişiklik olduğunda dosyadaki bütün formüller tekrar hesaplanır. Bu sebeple diyoruz ki makro ile hesap yaptırılıp sonuç hücreye yazıldığında arka planda sürekli çalışan formüller olmaz.
 
Konu Sahibi
Benim de mantığım buydu teşekkürler bir kaç deneme yapınca gerekirse dosyayı da yükleyip yorumlamanızı isterim
 
Durum
Konu Çözümlendiği İçin Kapatılmıştır.
Geri
Üst