[Yardım]  Scripting.Dictionary ve Dizi kodlarında aklıma takılanlar

VBA Makrolar ile ilgili sormak istedikleriniz, yapmak istedikleriniz hakkında yardım alabileceğiniz bölümdür.

Scripting.Dictionary ve Dizi kodlarında aklıma takılanlar

İleti#1)  KarıncaZ » 09 Oca 2020 23:38

Merhaba Üstadlar.
Başlıktaki konuları iyice öğrenmek istiyorum ancak bazı konularda aklıma takılan sorular var. Mantığını tam kavramak için.
Makalelerde ve konu anlatımlarını inceledim kaynaklar var ancak uygulamaya geçince yapamıyorum

DİZİ Kodlarında aklıma takılanlar.
1-) DZ = S1.Range("A4:Q1000").Value şeklinde bir dizi tanımladığımda, dizi Excel sayfasındaki gibi mi olur. Aynı Sütun ve Satır başvurularını yapabilir miyim yoksa Excel sayfasının Transpose si şeklinde mi oluşur.
A1 Hücresi bu tanımlamada DZ(0,1) e A2 hücresi DZ(1,1) e mi denk gelir.

2-) Dizi formüllerinde olduğu gibi bir aralığı tek bir değerle kontrol etmek için Döngü mü kurmak gerekir yoksa diziyi bir değerle karşılaştıra bilir miyim?
{=TOPLA(EĞER((($B$4:$B$20000)=B4)*(($D$4:$D$20000)<=D4)*(($K$4:$K$20000)=G4);$H$4:$H$20000))}
formülünde ($B$4:$B$20000)=B4) gibi bir ifadeyle bir aralığın tamamını B4 hücresinin değeriyle karşılaştıra biliyorum, aynısını
DZ = S1.Range("A4:A1000").Value şeklinde bir dizi tanımlasam If DZ = B4 Then gibi bir karşılaştırma yapabilir miyim, yoksa döngü kurarak dizinin her elemanını teker teker karşılaştırmam mı gerekiyor.

Scripting.Dictionary de aklıma takılanlar
1-) Excel sayfasındaki iki sütunu benzersiz olacak şekilde bu nesneye yükleye biliyorum. Üç sütunu denedim ama hata aldım. Bu nesnede sadece Key ve Item olarak iki farklı veri mi eklene biliyor.

2-) Bu nesneye veri eklerken mutlaka döngü mu kurmamız gerekiyor, Dizi kodlarında olduğu gibi bir aralık tanımlaya biliyor muyuz.

Yardımlarınız için şimdiden teşekkürler.
Kullanıcı avatarı
KarıncaZ
Siteye Alışmış
 
Adı Soyadı:Zülfü YORULMAZ
Kayıt: 04 Nis 2009 21:32
Konum: KOCAELİ
Meslek: SMMM
Yaş: 41
İleti: 154
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: KOCAELİ/DERİNCE

Cevap: Scripting.Dictionary ve Dizi kodlarında aklıma takıla

İleti#2)  Miraç CAN » 10 Oca 2020 14:06

KarıncaZ yazdı:Merhaba Üstadlar.
Başlıktaki konuları iyice öğrenmek istiyorum ancak bazı konularda aklıma takılan sorular var. Mantığını tam kavramak için.
Makalelerde ve konu anlatımlarını inceledim kaynaklar var ancak uygulamaya geçince yapamıyorum

DİZİ Kodlarında aklıma takılanlar.
1-) DZ = S1.Range("A4:Q1000").Value şeklinde bir dizi tanımladığımda, dizi Excel sayfasındaki gibi mi olur. Aynı Sütun ve Satır başvurularını yapabilir miyim yoksa Excel sayfasının Transpose si şeklinde mi oluşur.
A1 Hücresi bu tanımlamada DZ(0,1) e A2 hücresi DZ(1,1) e mi denk gelir.

2-) Dizi formüllerinde olduğu gibi bir aralığı tek bir değerle kontrol etmek için Döngü mü kurmak gerekir yoksa diziyi bir değerle karşılaştıra bilir miyim?
{=TOPLA(EĞER((($B$4:$B$20000)=B4)*(($D$4:$D$20000)<=D4)*(($K$4:$K$20000)=G4);$H$4:$H$20000))}
formülünde ($B$4:$B$20000)=B4) gibi bir ifadeyle bir aralığın tamamını B4 hücresinin değeriyle karşılaştıra biliyorum, aynısını
DZ = S1.Range("A4:A1000").Value şeklinde bir dizi tanımlasam If DZ = B4 Then gibi bir karşılaştırma yapabilir miyim, yoksa döngü kurarak dizinin her elemanını teker teker karşılaştırmam mı gerekiyor.

Scripting.Dictionary de aklıma takılanlar
1-) Excel sayfasındaki iki sütunu benzersiz olacak şekilde bu nesneye yükleye biliyorum. Üç sütunu denedim ama hata aldım. Bu nesnede sadece Key ve Item olarak iki farklı veri mi eklene biliyor.

2-) Bu nesneye veri eklerken mutlaka döngü mu kurmamız gerekiyor, Dizi kodlarında olduğu gibi bir aralık tanımlaya biliyor muyuz.

Yardımlarınız için şimdiden teşekkürler.

Dizilerde;
1. maddenize yanıt olarak: DZ(satırlar (row), sütunlar(column)) şeklinde alıyor ,
Range("A4:A1000"): UBound(DZ, 1)=997, UBound(DZ, 2)=17 ; maks. dizi boyutu DZ(997,17) oluyor,
Dizi DZ(1,1) olarak başlıyor ve tanımladığınız ilk hücreyi temsil ediyor yani "A4"; DZ(997,17) ise "Q1000"
2. bildiğim kadar ile zaten ($B$4:$B$20000)=B4) bu bir eşleştirme yapıp, sonucu veriyor, dizilerde döngüyle eşleştirme yapmanız gerekir.
Scripting.Dictionary ile dizi kullanılabiliyor.
Çok fazla bilgi sahibi olmamamla birlikte, bildiğim şey; dizilerin karşılaştırma/eşleştirme yapmadan kullanabilmenin mümkün olduğu yol direkt başvurmak DZ(112,11) gibi.
Bu konu hakkında Murat OSMA'nın https://peakup.org/blog/scripting-dictionary-nesnesi/ yazısını inceleyin derim.
Kullanıcı avatarı
Miraç CAN
Site Dostu
 
Kayıt: 26 Arl 2016 19:07
Meslek: Harita/Ölçme
Yaş: 39
İleti: 545
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: Amasya\Adana

Cevap: Scripting.Dictionary ve Dizi kodlarında aklıma takıla

İleti#3)  KarıncaZ » 10 Oca 2020 20:59

Sayın Miraç CAN teşekkür ederim ilginiz için.

Scripting.Dictionary de Key ve Item var, yani iki sutunlu bir dizi. yanılmıyorsam tabi. bu nesnede Key, Item1, Item2 ... gibi yani dizilerde olduğu gibi birden çok veriyi tutabilir miyiz.
Ayrıca şöyle birşey mümkün mü, bu nesneye benzersiz olanları alıyoruz Key kısmına Item kısmına da toplamlarını diyelim. Key kısmında bir veriden kaç tane yazıldı yani o veriden kaç tane vardı diye bir tespit yapabilir miyiz.( Item2 yi ekleyemedğimiz varsayımıyla soruyorum.)
Kullanıcı avatarı
KarıncaZ
Siteye Alışmış
 
Adı Soyadı:Zülfü YORULMAZ
Kayıt: 04 Nis 2009 21:32
Konum: KOCAELİ
Meslek: SMMM
Yaş: 41
İleti: 154
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: KOCAELİ/DERİNCE

Cevap: Cevap: Scripting.Dictionary ve Dizi kodlarında aklıma

İleti#4)  Miraç CAN » 11 Oca 2020 09:47

KarıncaZ yazdı:Sayın Miraç CAN teşekkür ederim ilginiz için.

Scripting.Dictionary de Key ve Item var, yani iki sutunlu bir dizi. yanılmıyorsam tabi. bu nesnede Key, Item1, Item2 ... gibi yani dizilerde olduğu gibi birden çok veriyi tutabilir miyiz.
Ayrıca şöyle birşey mümkün mü, bu nesneye benzersiz olanları alıyoruz Key kısmına Item kısmına da toplamlarını diyelim. Key kısmında bir veriden kaç tane yazıldı yani o veriden kaç tane vardı diye bir tespit yapabilir miyiz.( Item2 yi ekleyemedğimiz varsayımıyla soruyorum.)

Verdiğim bağlantıda bahsettiğiniz içeriklerin örnekleri mevcut.
Kullanıcı avatarı
Miraç CAN
Site Dostu
 
Kayıt: 26 Arl 2016 19:07
Meslek: Harita/Ölçme
Yaş: 39
İleti: 545
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: Amasya\Adana

REKLAM
Excel Logo XML Oluşturucu
Logo Object Designer ile Uyarlama

Forum Genel Makro Soruları

Online Kullanıcılar

Bu forumu görüntüleyenler: Kayıtlı kullanıcı yok ve 2 misafir

Bumerang - Yazarkafe