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.

Genel VBA  Scripting.Dictionary, Hücre Değerini İçeriyorsa Toplama

Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...

KarıncaZ

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

Reputation:

Merhaba

Ekteki dosyada Yevmiye dökümünden, Mizan oluşturmaya çalışıyorum.
İki tarih arasında mizandaki değerleri toplata bildim ancak Ana hesap ve Ara Hesap kodları Yevmiyede olmadığı için toplatamadım.

HESAP KODUHESAP ADI
Yevmiyede Yok ( Ana Hesap )100KASA HESABIHesap Kodu İle Başlıyorsa Toplanacak
Yevmiyede Yok ( Ara Hesap )100.01MERKEZ KASA HESABIHesap Kodu İle Başlıyorsa Toplanacak
Yevmiyede Var ( Alt Hesap )100.01.01MERKEZ TRY KASA HESABIToplata biliyorum

Yevmiye defterinde olanlar yukarıdaki gibi.
Hesap Kodu İle Başlıyorsa Toplanacak yazdıklarımı toplatamadım. Önce Yevmiyede var olanları toplatacaz. Sonra ara hesapları toplatacaz, en son da Ana hesapları toplatacaz. Ben bir türlü yapamadım.

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.
Kullandığım kod bu. Mizandaki Kullanılan hesaplar Yevmiyede olduğu için toplata biliyorum ancak diğer hesapları toplatamadım birtürlü.

Yardımlarınızı bekliyorum.

Esenlikler dilerim. İyi çalışmalar.
 

Ekli dosyalar

KarıncaZ

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

Reputation:

Merhaba
Konu biraz teknik olduğu için yapmak istediğimi formüllerle çözümünü ekte paylaşıyorum.
Yardımcı sütunlar aracılığıyla yapılabiliyor ancak hesap kıvrımları arttıkça işlem formüller ile çözülemez hale geliyor.
 

Ekli dosyalar

Ömer BARAN

Kurucu
Yönetici
Kurucu
SMS Onaylı
Katılım
11 Nis 2019
Mesajlar
1,394
Web Sitesi
www.ExcelDestek.Com
Excel Versiyonu, Dili
2013 (32) TR

Reputation:

Merhaba Sayın @KarıncaZ .

Yanlış düşünmüyorsam aşağıdaki gibi sonuç alınabilir.
Yalnız dikkat edeceğiniz husus; YEVMİYE sayfasındaki hesap kodlarının tümünün MİZAN sayfasında da yer aldığından emin olun.

Ben şöyle bir yöntem uyguladım; YEVMİYE sayfasındaki Hesap Kodlarını,
oluşturduğum kopya yevmiye sayfasında sağ tarafta MİZAN 'da olması gerektiği gibi ANA/İLK ALT/SON ALT hesap şeklinde tekrarsız
oluşturdum, ardından da bu listeyi MİZAN sayfası A sütununa yapıştırdım (bu kısım da kodlanabilir tabi ama ben toplam aldırma işlemine
odaklandığım için o kısımla uğraşmadım)

Ardından da kodu aşağıdaki şekilde değiştirerek (kırılım adeti 3 olduğundan 3 adet Scripting.Dictionary nesnesi oluşturarak)
çalıştırdığımda sonuç aldığımı sanıyorum (yol gösterici olması bakımından sadece BORÇ sütununa yönelik olarak elbette).

.
Gizlenmiş içerik
Bu içeriği görebilmek için bu yazıya tepki vermeniz gerekir.
.
 

Ekli dosyalar

KarıncaZ

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

Reputation:

Merhaba Sayın Ömer BARAN
İlginiz için teşekkürler.

Yevmiye sayfasındaki tüm hesaplar Mizan sayfasında kesinlikle var. Mizandaki tüm tüm alt hesaplarda Yevmiyede var. Sadece Mizandaki Ana ve Alt Hesaplar Yevmiyede yok.

Her mizan üç kırılımlı olmuyor. Hatta aynı mizanda bir hesap 3 kırılımlı bir hesap 5 kırılımlı diğer hesap 8 kırılımlı olabiliyor. Hepsi için geçerli bir çözüm bulmamız gerekiyor. Belirttiğiniz çözüm de yardımcı sütunlar oluşturmak zorlaşabilir.

Aklımda bir çözüm var ama ben yapamadım. Şöyleki Scripting.Dictionary de Key kısmını Mizandanki değerlerden alıp, Item kısmına da toplam alırken, Key ile başlıyorsa topla diyebilirsek çözüm gerçekleşiyor. Kaç kırılımlı olursa olsun her ara hesaptan bir tane var ve o ara hesabı içeren alt hesapların toplamı olacağından doğru sonucu verecektir.

Scripting.Dictionary kullanımında yeni olduğum için, Key ile başlıyorsa topla diyemedim kodlarda. like gibi bir operatör kullanıla bilir ama dediğim gibi acemiyim denedim ama yapamadım.
 

Ömer BARAN

Kurucu
Yönetici
Kurucu
SMS Onaylı
Katılım
11 Nis 2019
Mesajlar
1,394
Web Sitesi
www.ExcelDestek.Com
Excel Versiyonu, Dili
2013 (32) TR

Reputation:

Sayın @KarıncaZ .

Belgenizde gördüğüm durum farklı malesef.
Eklediğim belgeye bakar mısınız?
Verilen tarih aralığına göre, Mizan sayfası K sütununda Yevmiye'de olup Mizan'da olmayan hesap kodları listelenir.
Ayrıca bundan önceki cevabımda verdiğim koddaki hususa (3'lü Scripting.Dictionary) gerek olmadığını da fark ettim.
Kod aşağıdaki şekliyme de işlem görüyor durumda (ayrıca, olan/olmayan tespiti için K sütunuyla ilgili söylediğim husus eklendi)

İLE BAŞLIYORSA dediğiniz husus aşağıdaki satırlarda hallediliyor.
d(a(i, 3)) = d(a(i, 3)) + a(i, 6) ' ALT HESAP
d(Split(a(i, 3), ".")(0) & "." & Split(a(i, 3), ".")(1)) = d(Split(a(i, 3), ".")(0) & "." & Split(a(i, 3), ".")(1)) + a(i, 6) ' İKİNCİL HESAP
d(Split(a(i, 3), ".")(0)) = d(Split(a(i, 3), ".")(0)) + a(i, 6) ' ANA HESAP
İşlemin uygulandığı belgeyi de ekleyeyim (Mizan sayfasındaki hesap kodları orijinal haliyle duruyor)

.
Gizlenmiş içerik
Bu içeriği görebilmek için bu yazıya tepki vermeniz gerekir.
 

Ekli dosyalar

Son düzenleme:

KarıncaZ

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

Reputation:

Sayın Ömer BARAN
Belgenizi inceledim.

Durumu şöyle izah edeyim. Eklediğim dosya sitede daha önce sorduğum sorudaki çalışmanın sadece iki yılı. Bu nedenle Mizanda olan hesaplardan yevmiyede olmaya bilir, Mizanda vardır ancak iki tarih aralığında o hesap çalışmamıştır bu nedenle mizana değer gelmeye bilir yani 0 olabilir. İsterseniz 2001 den 2018 e kadar olan çalışmayı dosya yükleme sitesine eklemeyi deneyeyim oradan dediğim net olarak çıkar.

Muhasebedeki işleyiş şöyle, Önce mizanda hesap açılır, açılan bu hesaplar ile kayıt yapılır, bu sebeple yevmiyede olup mizan da olmayan bir hesabın olması mümkün değil. ( Bilerek yapılan manuel müdahaleler hariç.) Tespit etmiş olduğunuz durum bundan kaynaklanıyor.

Kodlarınız istediğim gibi çalışıyor. Farklı kırılımlarda Hesaplama yapmıyor.
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.


Farklı kırılımlar için Split yerine dizideki elemanın uzunluğuna göre belirleme yapabilir miyiz. Uzunluk( LEN ) diye bir formül var, Hücre değerinin uzunluğunu bulup soldan o uzunlukta veriyi alıp, toplatma yapabilir miyiz? Resimde olduğu gibi bir kıvrım ekleyince diğerlerini hesapladı bir ara hesabı hesaplamadı.

Örneğin : LEN(d(i,1)) diye Scripting.Dictionary nin Key değerinin uzunluğunu bulsak. Yevmiye defterinde de bu değere uyanları Item de toplatsak olur mu. Key değerlerini Mizandan alıcaz, zaten hesap kodları benzersiz. Item değerlerini Yevmiye sayfasından. Yevmiye dede Her Key ile başlayanları toplatıcaz.

Mizan hesapları tam olarak dosyayı yeniden ekledim.
 

Ekli dosyalar

Ömer BARAN

Kurucu
Yönetici
Kurucu
SMS Onaylı
Katılım
11 Nis 2019
Mesajlar
1,394
Web Sitesi
www.ExcelDestek.Com
Excel Versiyonu, Dili
2013 (32) TR

Reputation:

Son açıklamalarınız hariç olmak üzere;
önceki cevabımdaki cümle dikkatten kaçmış sanırım.

Ben Mizan'da olan Yevmiye'de olmayanlar var DEMEDİM.
Yevmiye'de olup Mizan'da olmayanlar var dedim.

Eklediğim belgenin K sütununa listelenen hesap kodları, Yevmiye'de olup Mizan'da olmayanlar.
EĞERSAY formülüne bakarsanız durum anlaşılacaktır.

Tarih aralığını genişletip kodu çalıştırırsanız örneğin 120.01.16 hesap kodu Yevmiye de var, Mizan'da yok.
Belgedeki kod'da yer alan aşağıdaki kırmızı satırın altına yeşil olanı da eklemek yerinde olur.

S2.Range("K2:K" & S2.Cells(Rows.Count, "K").End(3).Row).Sort S2.[K1], 1
S2.Range("K2:K" & S2.Cells(Rows.Count, "K").End(3).Row).RemoveDuplicates Columns:=1
.
 

KarıncaZ

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

Reputation:

Sayın Ömer BARAN
Mizan Hesaplarını da kısmen aldığımdan. Son eklediğim dosyada Mizanı tam olarak ekledim. Dosyanın bir kısmını aldığım için bir önceki sonuç. Muhasebedeki işleyip anlattığım gibi. Gerçekte yevmiyede olupta mizanda olmayan bir hesap mümkün değil. Kısmi dosya yüklemesinden kaynaklı bir durum. Mizanı düzeltip yani tüm hesapları alıp önceki mesajıma ekledim. Durum düzelmiş olmalı.
 

Ömer BARAN

Kurucu
Yönetici
Kurucu
SMS Onaylı
Katılım
11 Nis 2019
Mesajlar
1,394
Web Sitesi
www.ExcelDestek.Com
Excel Versiyonu, Dili
2013 (32) TR

Reputation:

Bence uygun bir hücreye kırılım adetini sayı olarak yazıp,
Split işlemini de küçük bir döngüye alıp, kriter ve değerleri bu kırılım adetine göre döngüyle oluşturup toplama yapılabilir.

Kırılım sayısı dışında sanıyorum bir sıkıntı yok, doğru mudur?
Adım adım gitmek için soruyorum. Buraya kadar işlem tamam mıdır?

.
 

KarıncaZ

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

Reputation:

Evet Sayın Ömer BARAN , kırılım dışında toplama mantığı doğru.
Kırılım ne olursa olsun 8 kırılıma kadar Ana hesap alt hesap tespiti yapan bir kod var. Hücreleri renklendiriyor.
Hesap kodu B sütununda olacak şekilde aşağıdaki kodlar ile Kullanılan hesap renksiz diğer hesaplar farklı renklerde olacak şekilde belirleme yapabiliyorum.

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.
Önceki hesap kodu sonraki hesap kodu uzunluklarına bakıp hesabın tipini belirliyor. Kullanılan hesabın hücresini renksiz bırakıyor. Diğerlerini kırılıma göre farklı renklere boyuyor.
 

Ömer BARAN

Kurucu
Yönetici
Kurucu
SMS Onaylı
Katılım
11 Nis 2019
Mesajlar
1,394
Web Sitesi
www.ExcelDestek.Com
Excel Versiyonu, Dili
2013 (32) TR

Reputation:

O halde aşağıdaki kod işinizi görecektir.
Kod'a bir de tercihinize bağlı ekleme yaptım.
Kod'da, sol başında 3 tane tek tırnak işareti bulunanan satırların başındaki bu tek tırnak işaretlerini silerseniz;
kod çalıştırıldığında kaçıncı kırılıma kadar sonuç almak istediğinize dair soru sorulur.
Soruya verilen cevap kaç ise o kadar kırılım için işlem yapılır.

Bahsettiğim satırları silerseniz kırılım sayısı kaç olursa olsun gerekli işlem yapılır.

.
Gizlenmiş içerik
Bu içeriği görebilmek için bu yazıya tepki vermeniz gerekir.
 

KarıncaZ

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

Reputation:

Sayın Ömer BARAN
Emeğiniz ve ilginiz için çok teşekkürler. Kodlar istediğim gibi çalışıyor.
Hayırlı akşamlar.
Esenlikler dilerim, İyi çalışmalar.
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Üst