..::.. Formüller Yerine Makro Kodu ..::..

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

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,997
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
Merhabalar !..
Makro kod konusunda bilgim yeterli olmadığı için desteğe ihtiyacım oldu.

ÖRNEK BELGE İÇERİĞİ:
1) Belgemin HAM adlı sayfası, manuel veri girişi yapılan sayfadır.
2) Belgemdeki BÖLÜM adlı sayfadaki tablomda;
-- HAM sayfasında iki sütunda (Uyruk ve Bölüm sütunları) süzme işlemi yapıldığında kalan satır adedini veren aşağıdaki formül mevcut.
Kod:
=TOPLA.ÇARPIM((HAM!$Q$8:$Q$2397=$B3)*(HAM!$M$8:$M$2397=E$2))
--Yukarıdaki süz işleminden sonra üçüncü bir sütunda da (Başvuru Türü sütunu) süz uyguladıktan sonra başka bir sütundaki (Hasta No sütunu) süz ok'u açıldığında görünen benzersiz veri listesinin adedini tespit eden aşağıdaki DİZİ FORMÜLÜ mevcut.
Kod:
{=TOPLA(--(SIKLIK(EĞER(HAM!$Q$8:$Q$2397=$B4;EĞER(HAM!$M$8:$M$2397=E$2;EĞER(HAM!$AK$8:$AK$2397=$C4;KAÇINCI(HAM!$C$8:$C$2397;HAM!$C$8:$C$2397;))));KAÇINCI(HAM!$C$8:$C$2397;HAM!$C$8:$C$2397;))>0))}
3) BÖLÜM adlı sayfamdaki tablo; 33 x 13 adet yukarıdaki formüllerle dolu hücreden oluşuyordu ama 3'er tane örnek formülü bıraktım.
4) Orijinal belgemde BÖLÜM adlı sayfaya benzer yapıda başka sayfalarım da var. (formüllerin 2/3'ü DİZİ ve 1/3'ü TOPLA.ÇARPIM formülü olmak üzere 2.300 kadar formül oluyor)

DESTEK RİCAMIN İÇERİĞİ:
Yukarıdaki TOPLA.ÇARPIM ve DİZİ formülleri sonuçlarını, excel'in yerleşik fonksiyonlarını KULLANMAYAN makro kod üzerinden elde ederek, tüm tablonun kod tarafından doldurulmasını sağlamak.
Yerleşik fonksiyonların kullanılmamasını isteme nedenim, BÖLÜM sayfası gibi dizi fonksiyonlarını kullanan 5 sayfamın olması ve bunların da sonuçları üretirken excel'de donmalar yaşamam. Excel maalesef her bir işlemde, belgedeki fonksiyonların tümünü yeniden hesaplamakta.


İlgilenecek üyelere şimdiden teşekkürler ediyorum.
Bilemiyorum ama belki de her sayfada üçer adet olan örnek formüllerin kod üzerinden kopyalanıp ilgili hücrelere yapıştırıldıktan sonra DEĞER olarak yazılması da bir çözüm olabilir. Ancak hesaplama hızı hücredekinden farklı olur mu bilemiyorum.
 

Ekli dosyalar

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,997
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
İhtiyacımı en kısa şöyle izah edeyim;
HAM adlı sayfada 3 sütuna uygulanmış filtre
(süzme kriterlerim, BÖLÜM sayfasındaki tablomun satır ve sütun başlıklarıdır)
sonucunda 4'üncü bir sütunda kalan benzersiz veri adedinin bulunmasıdır.
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,997
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
....................
Kod:
Sub Baran_Listele()
...................   
    [COLOR=DarkGreen]'İyi performans için belleğe al[/COLOR]
    arr(1) = Sayfa1.Range("I8:I" & son).Value2
    arr(2) = Sayfa1.Range("M8:M" & son).Value2
    arr(3) = Sayfa1.Range("N8:N" & son).Value2
    arr(4) = Sayfa1.Range("Q8:Q" & son).Value2
    arr(5) = Sayfa1.Range("EA8:EA" & son).Value2
    For b = 1 To 5
        Set rs = CreateObject("ADODB.Recordset")
        rs.Fields.Append "Ad", 200, 255[COLOR=DarkGreen] 'varchar(255)[/COLOR]
......................        
        rs.Filter = 0[COLOR=DarkGreen] 'Filitre deaktif[/COLOR]
......................
End Sub
Sayın GÜRSOY, açtığım bu konu ile ilgili olarak da
yukarıdakine benzer bir yapı (sütundaki verileri dizi olarak belleğe alma, filtre işlemi gibi) kurulabilir mi acaba?

Açtığım bu konu da aynı belgem ile ilgilidir ve
özetle 3 sütunda filtre uygulandıktan sonra 4'üncü sütunda kalan benzersiz veri sayısının tespitine yöneliktir.
Şayet olabiliyorsa ve çok zahmet vermezsem ilgi ve desteğinizi rica edeceğim.
Sağlıcakla.
 
Son düzenleme:

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,997
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
İhtiyacımın en kısa ifadesi şöyle;
Belgemde "BÖLÜM" adlı sayfadaki tabloya gelmesi gereken sayılar;

HAM adlı sayfada 3 sütuna uygulanmış filtre
(süzme kriterlerim, BÖLÜM sayfasındaki tablomun satır ve sütun başlıklarıdır)
sonucunda 4'üncü bir sütunda kalan benzersiz veri adedidir.

Konu hakkında araştırma yaparken gördüğüm ve benim konumla ilgili olabileceğini düşündüğüm bazı kod ve mesajlara değineceğim.

1) Sayın Orion1'in Sütundaki Benzersiz Değerleri ve Kaçar Adet Olduklarını Formülle Bulmakonusuna "Bende kod ile yaptım." şeklinde gönderdiği cevapta, konuya makro kod ile aşağıdaki çözümü iletmiştir.

Kod:
[SIZE="2"]Option Base 1
Sub toplamlar59()
Dim i As Long, liste(), sat As Long, z As Object
Range("I6:J" & Rows.Count).Clear
sat = Cells(Rows.Count, "F").End(xlUp).Row
liste = Range("F6:F" & sat).Value
Set z = CreateObject("scripting.dictionary")
For i = 1 To UBound(liste)
    If Not z.exists(liste(i, 1)) Then
        z.Add liste(i, 1), 1
    Else
        z.Item(liste(i, 1)) = z.Item(liste(i, 1)) + 1
    End If
Next i
Erase liste
Application.ScreenUpdating = False
Range("I6").Resize(z.Count, 2) = Application.Transpose(Array(z.keys, z.items))
Application.ScreenUpdating = True
Set z = Nothing
MsgBox "Benzersizlerin toplamı çıkarıldı" & vbLf & "evrengizlen@hotmail.com"
End Sub
[/SIZE]
2) Diğer yandan Sayın kuvari'nin; Sayın Korhan AYHAN'ın en çok olan değeri bulma konusuna verdiği 11 numaralı mesajdaki kodun,
Kod:
[COLOR="Red"]If Hücre.Height <> 0 Then
                If Not Dizi.Exists(Hücre.Value) Then
                    Say = Say + 1
                    Dizi.Add Hücre.Value, 1[/COLOR]
kısmına ilişkin sorduğu soruya Sayın AYHAN'ın;

Kod:
[SIZE="2"]Eğer Hücre yükseklik değeri sıfıra eşit değilse...
([B][COLOR="Red"]Bu bölüm sayfada filtre uygulanmış hücreleri atlamak için kullanıldı[/COLOR][/B])
Eğer Hücre değeri Dizi listesinde yoksa... 
Say değerini bir arttır...
Dizi listesine Hücre değerini ekle... [/SIZE]
[B]Bu şekilde benzersiz veri listesi oluşturuluyor.[/B]
şeklinde verdiği cevabı gördüm.

Bu durumda benim ihtiyacım olan; BÖLÜM sayfasındaki tablonun satır ve sütun başlıkları kriter olarak kullanılarak, HAM adlı veri sayfasında 3 sütunda ilgili süz işlemi yapıldıktan sonra, başka bir sütundaki süz oku açıldığında görülen benzersiz ve sıralı listenin kod ile elde edilebileceğini düşündüm.

Yani;
--BÖLÜM adlı tablomun sütun ve satır başlıklarına göre HAM adlı sayfasına uygulanacak bir süz makrosu oluşturulursa, bu makro ile
-- Sayın Orion1'in benzersiz sayma makrosu ve
-- Sayın AYHAN'ın sayma işlemi sırasında süzme sonucunda görünmeyenleri dikkate alMAMA yöntemi birleştirilirse
benim ihtiyacım olan sayısal verilere ulaşılabileceğini düşünüyorum.


Biraz uzun yazdım (maksat amacı net ifade etmek) ama KOD BİLGİSİ OLAN üyelerden destek beklediğimi, konunun halen çözüme kavuşmadığını belirtmek istedim.
 

Merhum İdris SERDAR

Moderatör
Yönetici
Katılım
21 Ekim 2005
Mesajlar
17,094
Excel Vers. ve Dili
Excel, 365 - İngilizce
.

Çalışmanızı Pivot Table - Özet Tablo'ya elverişli halde düzenlerseniz, daha esnek ve hızlı raporlar elde etmeniz mümkün olabilir.

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