Diziye alan makroda revize

Tevfik_Kursun

Altın Üye
Katılım
30 Temmuz 2012
Mesajlar
3,794
Excel Vers. ve Dili
Office 2016 Pro - Türkçe 64 Bit
Altın Üyelik Bitiş Tarihi
12-02-2029
Merhaba Arkadaşlar,
Fonksiyonla çözdüğüm seçimlik işlemin aradığım makro çözümünü Ömer Faruk hocam çoklu olarak çözümledi. Tekrar teşekkür ederim. 60,000 satırlık bilgi içinden 35 kategoride seçim yapılıyor. İşlem süresini 25 saniyeye kadar düşürebildim. Tek kategoriye düşürünce 2 sn bile sürmüyor.
Koşul sayısını da düşürdüm, bu durumda makroyu uyarlayamadım. Yardımcı olursanız sevinirim.
Saygılarımla
(Not : Makroyu dosyanın içine ekledim)
 

Ekli dosyalar

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
Tablonuzun başlangıç satır ve sütunu sabit kalmak şartıyla, istediğiniz sayıda kolon için çalışır.
C++:
Sub Hesapla()
Dim Liste(), Bul As Range, Zaman As Double
    Zaman = Timer
    xRow = Range("D" & Rows.Count).End(3).Row
    xCol = Cells(7, Columns.Count).End(xlToLeft).Column
    If xRow < 9 Or xCol < 7 Then Exit Sub
    Veri = Range(Cells(9, 4), Cells(xRow, xCol)).Value
    Range("G9").Resize(UBound(Veri, 1), xCol - 6).ClearContents
    ReDim Liste(1 To UBound(Veri, 1), 1 To xCol - 6)
    For i = 1 To UBound(Veri)
        Set Bul = Range(Cells(7, 7), Cells(7, xCol)).Find(Veri(i, 2), , xlValues, xlWhole)
        If Not Bul Is Nothing Then
            If Veri(i, 1) < Bul.Offset(1, 0) + [G1] And Veri(i, 1) > Bul.Offset(1, 0) - [G1] Then
                Liste(i, Bul.Column - 6) = Veri(i, 3)
            End If
        End If
    Next i
    Range("G9").Resize(UBound(Veri, 1), xCol - 6) = Liste
    MsgBox "İşlem Tamamlandı." & Chr(10) & "Süre : " & Format(Timer - Zaman, "0.00") & " Saniye"
End Sub
 

Tevfik_Kursun

Altın Üye
Katılım
30 Temmuz 2012
Mesajlar
3,794
Excel Vers. ve Dili
Office 2016 Pro - Türkçe 64 Bit
Altın Üyelik Bitiş Tarihi
12-02-2029
Ömer Faruk Hocam,
Ornek_TK2.xlsm de 5. satırda xRow=1 ve xCol=1 deyip Exit Sub ile işlem yapmadan çıktı.
Saygılarımla
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
Ben Tablonuzun başlangıç satır ve sütunu sabit kalmak şartıyla derken geçen gün yaptığımız dosya gibi demek istemiştim. Bu dosyanız daha da farklıymış.
230419

bu konu başlığında gödnerdiğiniz TK2 de ben kolonlar eksik sanmıştım.

Tevfik Bey, Verilerin olduğu aralığı bulabilmemiz için bana değişmeyecek ve benzersiz bir kriter verebilirsen hem satır hem sütun sorun çıkmadan hallederiz. Siz exceli kareli karalama defteri gibi kullanmak yerine Başlıklarla kullanmalısınızz. Böyle olurssa hangi verinin hangi başlık altında olduğunu da anlarız. Mesela aşağıdkailer gibi olabilir. Yoksa sizin hangi hücreden hangi satırdan başlayacağınız kestirmek imkazsız.

230421
 

Tevfik_Kursun

Altın Üye
Katılım
30 Temmuz 2012
Mesajlar
3,794
Excel Vers. ve Dili
Office 2016 Pro - Türkçe 64 Bit
Altın Üyelik Bitiş Tarihi
12-02-2029
Ömer Faruk Hocam,
Koyduğunuz örnekte ikinci tablo ve tek sütunluk; tam aradığım model. Ben kendi dosyama uyarlarım diye düşünüyorum. Malum, çok kolon çok fazla sayıda hücre kullanımı. Sizi çok yordum. İlginize teşekkür ederim. Sadece verilerin yazılacağı sütundaki ilk hücreyi unutmayalım.
Saygılarımla
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
Şöyle anlaşalım o halde.
1.tabloda olan KOD isimli sütun olmayacak ve haliyle TABLOM ifadesinin sağında bulunan üst satırda KOD olmayacak, Sayıların karşılaştırılcağı sütunlar olacak. Ve her daim bu başlıklar böyle dizilecek. Satır ve sütun sayısı değişebilir.
Doğru mu?
 

Tevfik_Kursun

Altın Üye
Katılım
30 Temmuz 2012
Mesajlar
3,794
Excel Vers. ve Dili
Office 2016 Pro - Türkçe 64 Bit
Altın Üyelik Bitiş Tarihi
12-02-2029
Sayın Ömer Faruk Hocam,
Öncelikle ilginize çok teşekkür ederim. Doğru, kod olmazsa zaten sadece 1 kolon olabilir. Farklı kodlar varsa önceki yazdığınız makro güzel çalışıyor ve her değişken yaklaşık 1 saniyede (göstermeden) sonuçlanıyor. O nedenle de 35 değişkenin 37 saniyede bitirmesi normal. Bu sürelerin içine işlem yapılacak dataları belirli yere getirmek dahil. Bunun yerine acaba hiç data taşımadan, olan datanın bulunduğu alan gösterilse örnek olarak A4 hücresinde W değişkeni için Ozet!K57819:M59564, A5 hücresinde MP değişkeni için Ozet!K24645:M26390 ... bunlar gibi datanın yeri belirtilse acaba zamandan % 30 daha tasarruf eder miyiz? diye sordum kendi kendime. Bu durumda datanın yeri de hep sabit kalır. Bir de dosyanın büyümesi var. 61110 satırlık dosya birkaç ta makro ile yaklaşık 9 Mb. Malum dosya büyüklüğü de problem yaratacak.
Yine de isterseniz örnek bir dosya hazırlayıp gönderebilirim.
Saygılarımla
 
Son düzenleme:
Üst