Sitemize Hoşgeldiniz

Türkiye'nin en geniş özeliklere sahip forumu olan ExcelDestek.Com üzerinde soru sorabilmek, daha önceki sorulan sorulara, açılan konulara cevap yazabilmek, puan kazanabilmek, kazandığınız puanlar ile dosya indirebilmek ve çok daha fazla özellikten yararlanabilmek için sitemize üye olunuz.
Hemen Üye Ol ya da Giriş Yap

Sorun Cevaplayalım

Excel'e dair sorularınızı sorun, cevaplayalım.

Çözümlenmiş Sorular

Kullanıcılarımızın sorularını ve sunduğumuz çözümleri inceleyin.

Destek Ekibimiz Sizlerle

Ücretli destek ve özel hizmet talep edebilirsiniz.

  • Web sitemizi "REKLAMSIZ" olarak ziyaret etmek ister misiniz?
    Gerek sitemize destek, gerekse de reklam görmeden sitemizde gezinmek isterseniz, HESAP YÜKSELTME sayfasından SADECE 15-TL'ye 1 yıl boyunca ÜCRETLİ ÜYELİK almanız yeterli olacaktır.
    Detaylı bilgilendirme için lütfen buraya tıklayınız!

    REKLAMSIZ FORUM KULLANMAYI TERCİH EDECEK ÜYELERİMİZE, https://www.exceldosyalari.com İSİMLİ SİTEMİZDEN 3 AYLIK ÜYELİK PAKETİ HEDİYE EDİLECEKTİR.

VBA  Scripting.Dictionary de Koşula Göre Toplama

KarıncaZ

Yeni Üye
Kullanıcı
Katılım
1 Ocak 2020
Mesajlar
23
Excel Versiyonu, Dili
2016 TR

Reputation:

Merhaba
Kod:
Değerli ziyaretçimiz lütfen, içeriği görüntüleyebilmek için Giriş Yap veya Kayıt Ol anlayışınız için teşekkürler.
Yukarıdaki Kodlar ile ekteki dosyada Sayfa1 de iki sütunlu bir veride tek sütunu benzersiz halde diğer sütunu toplata biliyorum.
Sayfa2 deki gibi bir durum olursa Tarihe göre nasıl toplaya bilirim.

İki Tarih Arasında hangi ürünler varsa bu ürünlerin tutar Toplamlarını bulmak istiyorum.
 

Ekli dosyalar

Feyzullah

XD Yönetim
Yönetici
Site Yöneticisi
SMS Onaylı
Katılım
1 Eki 2018
Mesajlar
867
Web Sitesi
www.exceldepo.com
Excel Versiyonu, Dili
Excel 2016 TR

Reputation:

Aşağıda kodu deneyin hatalar olabilir telefondan yazdım.

C#:
Değerli ziyaretçimiz lütfen, içeriği görüntüleyebilmek için Giriş Yap veya Kayıt Ol anlayışınız için teşekkürler.
 

KarıncaZ

Yeni Üye
Kullanıcı
Katılım
1 Ocak 2020
Mesajlar
23
Excel Versiyonu, Dili
2016 TR

Reputation:

Sayın Feyzullah teşekkür ederim.

Anlamak açısından teyidiniz alayım dedim, Kodların çalışma mantığı;

arr() bizim Scripting.Dictionary yi kullanarak verileri tutacağımız dizi
Liste de verilerimizin tamamını tanımladığımız dizi, Üç sütunda veri olduğu için (1 to son, 1 to 3) diye tanımladık.
Döngü oluşturarak Tarih ve Ay sütunlarını birleştirdik ve gun diye bir veri elde ettik
gun lerde benzersiz olanlarını Scripting.Dictionary ye yükledik
Yüklerken arr dizisinin elemanları olarak liste dizisindeki verileri atadık, gun verisi daha önce eklenmiş ise liste dizisinin 3. verilerini toplattık
İşlem bitince de arr dizisini yazdırdık.

Koşula göre toplatma işlemini nasıl yapabiliriz. Eklediğim dosyada ikinci sayfada ilk tarih ve son tarih kısımları var. Bu iki tarih arasında olanları toplatmak isteseydik If döngüsünü kodların hangi kısmında oluşturmamız gerekir. Sizin kodlarınızdan yola çıkarsak liste dizisini oluştururken tarih bu iki tarih arasında ise diziye ekle deyip, sonraki işlemleri aynen mi tekrarlayacaktık.

Birde olmayan bir veri ekleye bilir miyiz
Örneğin Tarih | Firma | Tutar başlıkları olsun.
Ben Firmaların Tutar toplamlarını alacam ve yanına kaç tane olduğunu yazdıracam. Yani belirtilen aralıkta A firmasından 5 tane var ve Tutarlarının toplamı 6000 ise sonuçta A firması | 5 | 6000 şeklinde bir veri oluşmasını istiyorum. bu durumu nasıl yaparız.

Anladığım kadarıyla Scripting.Dictionary de Key ve Item diye iki veri var, Item1, Item2 gibi bir tanımlama yapamıyoruz direk olarak.
 

Feyzullah

XD Yönetim
Yönetici
Site Yöneticisi
SMS Onaylı
Katılım
1 Eki 2018
Mesajlar
867
Web Sitesi
www.exceldepo.com
Excel Versiyonu, Dili
Excel 2016 TR

Reputation:

Rica ederim.

arr() bizim Scripting.Dictionary yi kullanarak verileri tutacağımız dizi
Liste de verilerimizin tamamını tanımladığımız dizi, Üç sütunda veri olduğu için (1 to son, 1 to 3) diye tanımladık.
Döngü oluşturarak Tarih ve Ay sütunlarını birleştirdik ve gun diye bir veri elde ettik
gun lerde benzersiz olanlarını Scripting.Dictionary ye yükledik
Yüklerken arr dizisinin elemanları olarak liste dizisindeki verileri atadık, gun verisi daha önce eklenmiş ise liste dizisinin 3. verilerini toplattık
İşlem bitince de arr dizisini yazdırdık.
Üste alıntıda yazdıklarınız doğrudur.


Koşula göre toplatma işlemini nasıl yapabiliriz. Eklediğim dosyada ikinci sayfada ilk tarih ve son tarih kısımları var. Bu iki tarih arasında olanları toplatmak isteseydik If döngüsünü kodların hangi kısmında oluşturmamız gerekir. Sizin kodlarınızdan yola çıkarsak liste dizisini oluştururken tarih bu iki tarih arasında ise diziye ekle deyip, sonraki işlemleri aynen mi tekrarlayacaktık.
Koşullu toplama olayını tamamen atlamışım.
if koşulunu for satırının altından, end if kodunu next kodundan önce yazardım. Aşağıdaki kodu belirtiğim yere ekleyip sonraki işlemler dediğiniz gibi aynen olacaktı.

If CDate(liste(i, 1)) >= CDate(Range("G1")) And CDate(liste(i, 1)) < CDate(Range("G2")) Then

Birde olmayan bir veri ekleye bilir miyiz
Örneğin Tarih | Firma | Tutar başlıkları olsun.
Ben Firmaların Tutar toplamlarını alacam ve yanına kaç tane olduğunu yazdıracam. Yani belirtilen aralıkta A firmasından 5 tane var ve Tutarlarının toplamı 6000 ise sonuçta A firması | 5 | 6000 şeklinde bir veri oluşmasını istiyorum. bu durumu nasıl yaparız.
Dizi oluşturduğumuz için evet ekleyebilirsin.
Bu iş için aşağıdaki kodu kullanabilirsin.

C#:
Değerli ziyaretçimiz lütfen, içeriği görüntüleyebilmek için Giriş Yap veya Kayıt Ol anlayışınız için teşekkürler.
 

Ekli dosyalar

KarıncaZ

Yeni Üye
Kullanıcı
Katılım
1 Ocak 2020
Mesajlar
23
Excel Versiyonu, Dili
2016 TR

Reputation:

Sayın Feyzullah ilginiz ve yardımlarınız için çok teşekkürler.
Esenlikler dilerim. İyi çalışmalar.
 

Feyzullah

XD Yönetim
Yönetici
Site Yöneticisi
SMS Onaylı
Katılım
1 Eki 2018
Mesajlar
867
Web Sitesi
www.exceldepo.com
Excel Versiyonu, Dili
Excel 2016 TR

Reputation:

İyi çalışmalar.
 

KarıncaZ

Yeni Üye
Kullanıcı
Katılım
1 Ocak 2020
Mesajlar
23
Excel Versiyonu, Dili
2016 TR

Reputation:

Merhaba Sayın Feyzullah
Ekteki dosyada yardımını isteye bilir miyim.
Cari Say Topla Makrosu doğru sonucu vermiyor. Diğer makrolar sayenizde istediğim gibi çalışıyor. Sayma ve toplama işlemini tam anlayamamışım.
İnceleyip nerede hata yaptığımı söyleye bilir misiniz?

Teşekkürler
 

Ekli dosyalar

Feyzullah

XD Yönetim
Yönetici
Site Yöneticisi
SMS Onaylı
Katılım
1 Eki 2018
Mesajlar
867
Web Sitesi
www.exceldepo.com
Excel Versiyonu, Dili
Excel 2016 TR

Reputation:

Kodunun doğru halini aşağıya ekledim. Müsait zamanım olmadığı için detaylı açıklama yazamayacağım ama kod açıklamalarına bir kaç açıklama ekledim.

C#:
Değerli ziyaretçimiz lütfen, içeriği görüntüleyebilmek için Giriş Yap veya Kayıt Ol anlayışınız için teşekkürler.
 

Ziynettin

Yeni Üye
Kullanıcı
Katılım
26 Nis 2019
Mesajlar
15
Excel Versiyonu, Dili
Excel 2010 TR

Reputation:

Feyzullah bey merhaba.

gun = liste(i, 1) & liste(i, 2) satır içindeki koşulları birleştirirken ayraç kullanmanız doğru sonuç alırsınız.

Bu şekilde kullanırsanız daha doğru sonuç olur. gun = liste(i, 1) & "|" & liste(i, 2)
 

KarıncaZ

Yeni Üye
Kullanıcı
Katılım
1 Ocak 2020
Mesajlar
23
Excel Versiyonu, Dili
2016 TR

Reputation:

Sayın Feyzullah ve Sayın Ziynettin
Yardımlarınız ve bilgilendirmeleriniz için teşekkürler.

Merak ettiğim daha doğrusu onca okuduğum makalede rastlamadığım için aklımda soru işareti. Scripting.Dictionary de Key ve Item diye iki veri var, iki sütun gibi. Bu nesnede Key, Item1, Item2, Item3 gibi birşey yok mu. Yukarıdaki gibi ekstra bir dizi oluşturarak mı yapmamız gerek. Yada bu nesne gibi çalışan başka bir nesne var mı?

Esenlikler dilerim. İyi çalışmalar.
 

Feyzullah

XD Yönetim
Yönetici
Site Yöneticisi
SMS Onaylı
Katılım
1 Eki 2018
Mesajlar
867
Web Sitesi
www.exceldepo.com
Excel Versiyonu, Dili
Excel 2016 TR

Reputation:

Feyzullah bey merhaba.

gun = liste(i, 1) & liste(i, 2) satır içindeki koşulları birleştirirken ayraç kullanmanız doğru sonuç alırsınız.

Bu şekilde kullanırsanız daha doğru sonuç olur. gun = liste(i, 1) & "|" & liste(i, 2)
@Ziynettin hocam, açıklama ve bilgilendirmeniz için teşekkür ederim. Normalde Scripting.Dictionary kodundan anlamam, Bu forumda sizin yazdığınız kodlardan feyz alarak cevapladım. Teşekkürler tekrardan hocam.
 

Feyzullah

XD Yönetim
Yönetici
Site Yöneticisi
SMS Onaylı
Katılım
1 Eki 2018
Mesajlar
867
Web Sitesi
www.exceldepo.com
Excel Versiyonu, Dili
Excel 2016 TR

Reputation:

Sayın Feyzullah ve Sayın Ziynettin
Yardımlarınız ve bilgilendirmeleriniz için teşekkürler.

Merak ettiğim daha doğrusu onca okuduğum makalede rastlamadığım için aklımda soru işareti. Scripting.Dictionary de Key ve Item diye iki veri var, iki sütun gibi. Bu nesnede Key, Item1, Item2, Item3 gibi birşey yok mu. Yukarıdaki gibi ekstra bir dizi oluşturarak mı yapmamız gerek. Yada bu nesne gibi çalışan başka bir nesne var mı?

Esenlikler dilerim. İyi çalışmalar.
Ben bilerek yok, bende dizi ile oluşturulduğuna denk geldim hep. Bu konu da (Scripting.Dictionary) Sayın @Ziynettin hocamın bilgisine başvurmak daha dogru olacaktır, eğer var ise bende öğrenmiş olurum.
 
Üst