• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Plaka özet ve detay sorgulama

  • Konbuyu başlatan Konbuyu başlatan hassas
  • Başlangıç tarihi Başlangıç tarihi
Sonuçta; A:D sütun aralığına; istasyon ve tarih aralığı kriterine göre listeleme istiyorsunuz.

Peki bu istediğinizin tam kapsamını açıklar mısınız?
-- İstasyon için; tümü/seçilecek bir istasyon/seçilecek bir'den fazla istasyon,
-- Tarih için de; tüm yıllar/bir'den fazla yıl seçimi/tarih aralığı seçimi
gibi konuları netleştirir misiniz?
Becerebilir miyim bilemiyorum.
Aslında anladığım kadarıyla sizin isteğinizin cevabı beni biraz aşar gibi görünüyor.
Ben kod olayıyla yeni ilgilenmeye başlamış biriyim.
Kanaatim o ki; istekleriniz bir kod ustasının üstünden kalkabileceği konulan gibi görünüyor.
Elbette uğracağım ama sonucu bilemiyorum tabi.
 
Evet Ömer bey sizin belirttiğiniz gibi; A ve D Sutunlarındaki veriler İstasyon ve tarih kriteride siz belirttiğiniz gibi seçenekli olacak yani: örnek olarak istenilen istasyon seçeneği tektek ,seçilenler veya tümü seçenekli olacak.
Tarih kriterinde de belirtilen iki tarih aralığına göre yapacak.
Zaten detay veride A sutunundaki plakanın detay verisini de örnekte olduğu gibi G ile N sutunlarında sıralayacak.
Ömer bey asıl sorun , örnek olarak tekrar 2015 sayfasına 65.000 hücrekil bir veri yapıştırdım A ile D sutunu arasına gelmesi gereken veri 30 dakikadır gelmedi. buraya veri gelmesini hızlandırabilirseniz çok iyi olacak.
 
Sadece 1 yıl ile ilgilendiğinizde E1 ve F1'e yılın ilk ve son gününü yazıp sonra A:D arası için SAĞDAKİ DÖNEM seçeneğini kullandığınızda yavaş gelmemesi gerekir.

A:D aralığının listelenmesi işlemi şu şekilde oluyor:
-- tek tek tüm yıl sayfalarının H sütunundaki plakalar alt alta kopyalanıp yapıştırılıyor,
-- yinelenenler kaldırılıyor,
-- alfabetik sıralanıyor,
-- tek tek tüm yıl sayfalarının F sütununda, sonuç sayfasanın A sütunundaki her bir plaka için ayrı ayrı TTS (satır satır) sayımı yapılıyor,
-- tek tek tüm yıl sayfalarının F sütununda, sonuç sayfasanın A sütunundaki her bir plaka için ayrı ayrı POMPACI (satır satır) sayımı yapılıyor,
-- tek tek tüm yıl sayfalarının K sütununda, sonuç sayfasanın A sütunundaki her bir plaka için ayrı ayrı LİTRE (satır satır) toplamı alınıyor,
sonunda da sonuçlar SONUÇ sayfası A:D aralığına listeleniyor.
Olayı yavaşlatan sayım ve toplam alma kısmı, ona yönelik olarak da tek tek sayma toplama yerine ALTTOPLAM veya TOPLA.ÇARPIM yöntemini deneyip tekrar belge yüklerim veya beceremediğimi iletirim.
İstasyon olayına, yukarıdaki hususu hallettikten sonra bakabilirim ancak.
 
Sayın ömer bey her ikisini de denedim, ve her ikisi de veri çok olduğunda Aile D sutunu arasını çok geç getiriyor.
Az önce bahsettiğim 65.0000 hücrelik veriyi 2015 sayfasına yapıştırdım ve saat:19.55 te butona bastım halen gelmedi,
Ama A sutunu ile D sutunu arasındaki veriler geldikten sonra ;
Üzerine tıklanın detayının gelmesi çok kısa sürüyor.
 
Sayın ömer bey her ikisini de denedim, ve her ikisi de veri çok olduğunda Aile D sutunu arasını çok geç getiriyor.
Az önce bahsettiğim 65.0000 hücrelik veriyi 2015 sayfasına yapıştırdım ve saat:19.55 te butona bastım halen gelmedi,
Ama A sutunu ile D sutunu arasındaki veriler geldikten sonra ;
Üzerine tıklanın detayının gelmesi çok kısa sürüyor.


Sayfaya uygulanacak ALTTOPLAM ve TOPLA.ÇARPIM formülünden bahsetmiyorum zaten, bu formül hesaplamasını kod içerisinde yaptırmaktan bahsetmiştim. Becerebilir miyim tabi bilemiyorum.

Belki; sayfalarda sayma toplama yaptırmak yerine kriterlere uyan satırları ayrı bir sayfaya alıp hesaplama yapılacak satır adeti azaltılabilir belki.
(sıkıntı burada başlıyor, kriter dediğimiz şey ayrı ayrı her bir plaka oluyor, dolasıyla hesaplamayı tek tek yaptırma anlamına geldiğinden veri yığını büyüyünce yine yavaşlayacaktır ama denemek lazım neticede)

Tüm yıl verilerini tek bir sayfaya almak sanırım veri yığınınızın büyüklüğü nedeniyle mümkün olmayacak.

Belki de en radikal çözüm, olayı excel'de değil axcess'de veya sql de çözmek, ya da Korhan Bey'in söylediği veri arama yöntemlerini kullanmak ama hiç biriyle de daha önce hiç ilgilenmedim malesef.
 
Sayın ömer bey yinede ilginizden ve emeğiniz den dolayı çok teşekkür ederim;
Benim için zaman ve emek harcadınız Hakkınızı helal ediniz;
Konuya hakim olan forum üstadlarının yardımlarını bekliyorum.
 
Tekrar merhaba.
Bence belgenizi (sayfalardaki verilerin tarih farklılığı dışında da birbirinden farklı olmasını sağlayın ki yapılan işlem kontrol edilebilsin, zira ben oldukça zorlandım şahsen ve birkaç elle farklılaştırma yaparak kontrol edebilmiştim) yenileyin ve bu konudaki benim belge eklediğim son cevap ve Korhan Bey'in önerisindeki benim adımın geçtiği kısım ve Filtrele-Aktar kısmı hariç, yani ADO ve Scripting dictionary kısmını kullanarak oralardan alıntı yapıp (link verme şeklinde de olabilir), ve veri miktarının çokluğuna ilişkin vurgulama yaparak ADO/Scripting dictionary yöntemiyle çözüm aradığınızı net olarak ifade edip yeni bir konu açmalısınız.

Bu arada; açacağınız yeni konuya benim mümkün olduğunca müdahil olmamam yerinde olacaktır.

Çünkü bu konuda epey bir mesajlaşma oldu ve konudaki soru-cevapları gören bir kod ustası, çözüm yolunda mesafe alındığını ve çözüme ulaşılacağını düşünerek, ortasından konuya müdahil olmak istemeyebilir.

Tabi bu tür konuya çözüm bulabilecek üye sayısı fazla değil onun için de biraz sabretmenizi, konu gerilere düştüğünde de; konunun güncel olduğunu belirten kısa cevap yazmanızı öneririm.
Sağlıcakla.
 
Sayın üstadalar öncelikle iyi akşamlar diler sağlıklı huzurlu ve afiyetli hayat dilerim.
Sayın Arkadaşlar Yukarıdaki dosya ile ilgili yardımlarınızı bekliyorum;Sayın Ömer baran bey gerçekten çok emek verdi buraya kadar getirdi;
Fakat Örnek dosyada az veri yüklendiğ için sorun olmuyor fakat benim elimdeki gerçek verilerim her sayfamda ortalama 750.000 adet hücre olduğu için sorgu sayfasındaki; A ile D sutunu arasındaki verilerin oluşması saatler alıyor bunun için ADO/Scripting dictionary yöntemiyle çözüm konusunda yardımcı olabilirmisiniz
Birde örnek dosya üzerinde görüleceği üzere tarih kriterinin yanına istasyon kriteri de ekleyebilirmiyiz.
iyi çalışmalar dilerim
 
Merhaba,

Her sayfanızda 750.000 veri olduğuna göre benzersiz plaka sayısının excelin son satırını aşma ihtimali var mı? Varsa nasıl bir işlem yapılmasını istiyorsunuz?
 
Satın Korhan bey öncelikle ilginizden dolayı çok teşekküer ederim;
sorgu sayfasındaki A sutununda bulunan toplam benzersiz plakaların toplamı 25.000 adedi geçmez .
Eğer sayfalardaki her sayfadaki veriyi soruyor iseniz ; on da geçemez.
 
Sayın korhan Aydın bey kusura bakmayın hatalı kelime yazmışım ;
 
Örnek dosyayı deneyiniz.

Tahminimce 750.000 satırlık verilerde 20-25 saniye arasında sonuç alabilirsiniz.

Tarih aralığı ve istasyon bilgisini girip butona tıklayın. Dilerseniz istasyon hücresini boş bırakabilirsiniz veya TÜMÜ yazabilirsiniz. Bu durumda istasyon ayrımı yapılmadan tarih aralığına uyan kayıtlar listelenir.

Liste oluştuktan sonra A-D sütun aralığındaki hücrelere çift tıkladığınızda detaylar listelenir.

Gerçek verilerinizi yükleyip denediğinizde oluşan süreyi bildirirseniz sevinirim.
 

Ekli dosyalar

Merhaba,

Sorgu sayfası E1' e Küçük tarihi, F1' e büyük tarih girildiğinde benzersiz verileriniz listelenir.

Kod:
Private Sub CommandButton1_Click()
Dim veri, i As Long, s As Integer, X As Byte, b(), z As Variant
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
ReDim b(1 To 1000000, 1 To 4)
With CreateObject("Scripting.Dictionary")
.CompareMode = vbTextCompare
    For X = 3 To Worksheets.Count
        veri = Sheets(X).Range("A2:K" & Sheets(X).Range("A" & Rows.Count).End(3).Row).Value
        For i = 1 To UBound(veri, 1)
           If Not IsEmpty(veri(i, 8)) And veri(i, 1) >= [E1] And veri(i, 1) <= [F1] Then
                z = veri(i, 8)
                If Not .exists(z) Then
                    s = s + 1
                    b(s, 1) = veri(i, 8)
                    .Add z, s
                End If
'                b(.Item(z), 2) = b(.Item(z), 2) + 1
                If veri(i, 6) = "TTS" Then b(.Item(z), 2) = b(.Item(z), 2) + 1 _
                Else b(.Item(z), 2) = b(.Item(z), 2) + 0
                If veri(i, 6) = "POMPACI" Then b(.Item(z), 3) = b(.Item(z), 3) + 1 _
                Else b(.Item(z), 3) = b(.Item(z), 3) + 0
                
                b(.Item(z), 4) = b(.Item(z), 4) + veri(i, 11)
                
            End If
        Next i
    Next X
End With
Set sh = Sheets("SORGU")
On Error Resume Next
sh.Range("A2:D" & Rows.Count).ClearContents
sh.[A2].Resize(s, 4).Value = b
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub
 

Ekli dosyalar

Ben de bir dosya göndereyim bari.

Önceki gönderdiğimden hız bakımından farklı olması lazım.
Çünkü döngü yerine filtrele-aktar yöntemi kullanılmıştır.

Umarım işe yarar.

Çalışma süresiyle ilgili bilgi verirseniz sevinirim.

İyi günler dilerim.
 

Ekli dosyalar

Son düzenleme:
Sayın korhan bey öncelikle ilginizden ve emeğinizden dolayı çok teşekkür ederim;
A ile D Sutunları arasındaki veriler çok güzel olmuş ve çok hızlı geliyor;

Burada Diğer ve önemli bir husus ise sorgu sayfasında A Sutununa gelen her hangi bir plakanın üzerine tıkladığımda; üzerine tıkladığım plakanın belirtilen tarih aralığındaki detay verileri ; H ile O sutunu arasına getirebilirmiyiz. Yani H ile O Sutunun da belirtilen kriter verilerine göre aranan tarih aralığında bulup tümünü alt alta sıralayabilirmiyiz.
Tekrar iyi çalışmalar diler Tüm işlerinizde kolaylıklar ve mavaffakiyetler dilerim.
 
Üstteki mesajımda açıklamıştım ama sanırım dikkatli okumadınız.

Veriler A-D aralığında listelendikten sonra yine aynı aralıkta herhangi bir hücreye çift tıkladığınızda ilgili plakaya ait detaylar listelenecektir.

Veriler çok hızlı geliyor demişsiniz fakat süreyi belirtmemişsiniz. 750.000 satırlık verilerinizde işlem ne kadar sürüyor.
 
Sayın korhan bey iyi akşamlar;
A ile D sutunu arasındaki verilerin gelmesi yaklaşık 5 saniye;
Detaylı verinin sıralanması ise 4 saniye gibi kısa bir sürede geliyor.
Tekrar eline ve emeğine sağlık çok teşekkür ederim; Allah 'CC' Tüm işlerinizde kolay eylesin.
Ömer Baran beye de çok teşekkür ederim gerçekten çok emek verdi ve güzel bir şeyin oluşmasına katkı sağladı.
Tüm site sakinlerine hayırlı akşamlar diler Hayatlarında huzur ve mutluluklar dilerim.
 
Kendi adıma Estağfurullah diyorum.
Keşke son eklediğim belgede, gerçek verilerle süre açısından geri bildirimde bulunsaydınız, merak ettim çünkü.
Sağlıcakla.
 
Sayın ömer Baran bey iyi akşamlar;
Haklısınız size cevap vermeyi unuttum;
Bendeki gerçek verileri yüklediğimde ortalama 50,55 Dakika sürüyor ve sonunda debuğ hatası veriyor.
 
Sayın Korhan Aydın Bey iyi akşamlar;
Kusura bakmayın sizi tekrar rahatsız ediyorum; Dosya içerisindeki her sayfadaki ve her sutundaki veri sayısı ortalama 750.000 adettir,
Örnek olarak 2015 isimli sayfaya elimdeki verileri yüklediğimde 10 saniye sonra debuğ hatası verdi. Fakat 75.000. adet veri yüklediğimde yani bir aylık veri yüklediğimde 3 saniye içerisinde Aile d sutunu arasındaki vriler, ilgili plakanın üstüne tıkladığım da ise 1.5 saniyede geliyor
 
Son düzenleme:
Geri
Üst