• Merhaba Ziyaretçi,
    Microsoft 365 Uygulamaları ile ilgili yeni haberler, dikkat çekici konular, ilgi ile takip edeceğiniz yazılar için.

    Abone Olun
  • ESTE - Microsoft Office Eğitimleri

    Yeni yıl Microsoft Office Eğitim planlarınız için bütçenizi oluşturmadan önce ESTE eğitim kalitesi ile tanışın. 🙌
    Kullanıcıların ihtiyacı olan yazılı materyal, dosya ve video kaynağı desteğimiz ile tüm ofis çalışanlarının iş süreçlerini rahatlatacak eğitimler planlayın. 🎯
    Microsoft Office eğitimlerimiz hakkında detaylı bilgi için bize ulaşın.

    👉 Microsoft Office Eğitim Talebi

Çözüldü Fazla Veri İçeren Excel Çalışması

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

gicimi

Yeni Üye
Katılım
18 Haz 2018
Mesajlar
64
En iyi yanıt
0
Puanları
18
Yaş
36
Konum
Ankara
Ad Soyad
Hüseyin Yılmaz
Office Vers.
Office 2016 Pro
Merhaba;

Öncelikle iyi bayramlar dilerim.
ADO veya Sql/Join yöntemi ile yapılabilir mi_?

Ekteki Data Sayfasındaki Veri Yaklaşık olarak 300.000 ile 500.000 arasıdır.

-Data sayfasından Kullanıcı ve Tarih bilgilerini alarak saatlik olarak iş adetinin bulunması. C Sütununda Toplam İş adetlerinin eklenmesi,
-Data sayfasındaki verileri baz alarak kullanıcı ve tarih bilgilerine A ve B sütununa işleyip ilk başlama başlıklarda belirtilen saatler arası ilk iş saatlerini ve son iş saatlerinin yazılması,
-Saatlik İş Sayıları Sayfasındaki Kullanıcı ve saatlik verilerin adetlerini grafik olarak göstermek istiyorum.

Konu hakkında yardımcı olabilir misiniz.
 

Ekli dosyalar

  • Data Raporu.xlsx
    69.2 KB · Görüntüleme: 5

gicimi

Yeni Üye
Katılım
18 Haz 2018
Mesajlar
64
En iyi yanıt
0
Puanları
18
Yaş
36
Konum
Ankara
Ad Soyad
Hüseyin Yılmaz
Office Vers.
Office 2016 Pro
Önce pivot deneyelim....
Zeki Bey Teşekkürler. Öncelikle iyi bayramlar.

Makro ile yapmak istiyorum. Örnekteki Data sayfasındaki butonlar ile istenilen sonuçları elde etmek istiyorum. Pivot table ve fonksiyonlarla paylaşmış olduğunuz pivotu yapabiliyorum. Makro konusunda yardımcı olabilir misiniz.
 

Zeki Gürsoy

Uzman
Katılım
7 Haz 2018
Mesajlar
40
En iyi yanıt
0
Puanları
18
Konum
Sakarya-Hendek
Bahsettiğiniz kadar büyük veri kümesi için Excel & SQL çok fazla performans vermeyebilir. Performans için Access dosyası kullanmalısınız.
Aslında İşe Başlama Bitiş raporu çok daha hızlı olabilirdi fakat, MS Jet SQL join içinde kısıtlama getirdiğinden "sub query" ile işi bitirmek gerekiyordu.

NOT : Data sayfasında sütun başlıklarını değiştirdim.

PHP:
Sub SaatlikIsSayilari()

    Const sql As String = _
        "TRANSFORM Count(ToplamIsAdeti) " & _
        "SELECT Kullanici, Tarih " & _
        "FROM [Data$] " & _
        "WHERE Kullanici <> '' " & _
        "GROUP BY Kullanici, Tarih " & _
        "ORDER BY Tarih, Kullanici " & _
        "PIVOT Format(Hour(ToplamIsAdeti), '00') & ':00 - ' & Format(Hour(ToplamIsAdeti) + 1, '00') & ':00'"
   
    Sheets("Saatlik İş Sayıları-1").Cells.ClearContents
   
    Dim cn As Object
   
    Set cn = CreateObject("ADODB.Connection")
   
    cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties=""Excel 12.0;HDR=YES"";Data Source=" & ThisWorkbook.FullName
   
    Set rs = cn.Execute(sql)
   
    For i = 0 To rs.Fields.Count - 1
        Sheets("Saatlik İş Sayıları-1").Cells(1, i + 1) = rs(i).Name
    Next
   
    Sheets("Saatlik İş Sayıları-1").[a2].CopyFromRecordset rs
   
    cn.Close
   
    Sheets("Saatlik İş Sayıları-1").Columns("A:Z").EntireColumn.AutoFit
End Sub

Sub IsBaslamaVeBitis()
    'Uyarı !!! Performans sorunu çıkabilir...
    Const sql As String = _
        "SELECT A.Kullanici, A.Tarih, " & _
        "(select Min(b.ToplamIsAdeti) from [Data$] B where b.kullanici = a.Kullanici And b.tarih = a.tarih and Hour(b.ToplamIsAdeti)=8) As [08:00-09:00 İlk İş]," & _
        "(select Max(c.ToplamIsAdeti) from [Data$] C where c.kullanici = a.Kullanici And c.tarih = a.tarih and Hour(c.ToplamIsAdeti)=17) As [17:00-18:00 Son iş]," & _
        "(select Max(d.ToplamIsAdeti) from [Data$] D where d.kullanici = a.Kullanici And d.tarih = a.tarih and Hour(d.ToplamIsAdeti)=12) As [12:00-13:00 Son iş]," & _
        "(select Min(e.ToplamIsAdeti) from [Data$] E where e.kullanici = a.Kullanici And e.tarih = a.tarih and Hour(e.ToplamIsAdeti)=13) As [13:00-14:00 ilk iş] " & _
        "FROM [Data$] A where A.Kullanici <> '' group by A.Kullanici, A.Tarih order by A.Tarih, A.Kullanici"
   
    Sheets("İş Başlama ve Bitiş-1").Cells.ClearContents
   
    Dim cn As Object
   
    Set cn = CreateObject("ADODB.Connection")
   
    cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties=""Excel 12.0;HDR=YES"";Data Source=" & ThisWorkbook.FullName
   
    Set rs = cn.Execute(sql)
   
    For i = 0 To rs.Fields.Count - 1
        Sheets("İş Başlama ve Bitiş-1").Cells(1, i + 1) = rs(i).Name
    Next
   
    Sheets("İş Başlama ve Bitiş-1").[a2].CopyFromRecordset rs
   
    cn.Close
   
    Sheets("İş Başlama ve Bitiş-1").Columns("C:F").NumberFormat = "hh:mm:ss"
   
    Sheets("İş Başlama ve Bitiş-1").Columns("A:F").EntireColumn.AutoFit
   
End Sub
 

Ekli dosyalar

  • DataRaporu.xlsm
    82.4 KB · Görüntüleme: 17

gicimi

Yeni Üye
Katılım
18 Haz 2018
Mesajlar
64
En iyi yanıt
0
Puanları
18
Yaş
36
Konum
Ankara
Ad Soyad
Hüseyin Yılmaz
Office Vers.
Office 2016 Pro
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Üst Alt