Userform Üzerinde Veri Ortalamaları Almak

Katılım
18 Kasım 2012
Mesajlar
423
Excel Vers. ve Dili
Microsoft Office 365
Altın Üyelik Bitiş Tarihi
04-07-2024
Merhabalar,

Ekte paylaşmış olduğum çalışma kitabında user form üzerinde (aşağıdaki örnekteki gibi) hareket ve varış noktaları yazıldığında seçilen tarih aralıklarına istinaden süre ve tüketim başlıklarında artimetik ortalamalar alabilmem için nasıl bir kod yazmam gerekir?


Ekli dosyayı görüntüle 252099

Konuyla ilgili yardımcı olabilecek arkadaşlar var ise çok memnun olurum.

Yardımları için şimdiden herkese çok teşekkür ederim.

Saygılarımla,
 

Ekli dosyalar

Son düzenleme:

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,190
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Merhaba,

Aşağıdaki kodu kendi dosyanıza uyarlayabilirsiniz. Nesnelerin hepsinin dolu olacağını varsaydım..

C++:
Private Sub CommandButton1_Click()
    Dim S1 As Worksheet
    
    Set S1 = Sheets("LISTE")
    
    Me.Label7 = WorksheetFunction.AverageIfs(S1.Range("D:D"), S1.Range("A:A"), ">=" & CLng(CDate(TextBox1)), S1.Range("A:A"), "<=" & CLng(CDate(TextBox2)), S1.Range("B:B"), TextBox3, S1.Range("C:C"), TextBox4)
    Me.Label7 = Format(Me.Label7, "hh:mm:ss")
    Me.Label8 = WorksheetFunction.AverageIfs(S1.Range("E:E"), S1.Range("A:A"), ">=" & CLng(CDate(TextBox1)), S1.Range("A:A"), "<=" & CLng(CDate(TextBox2)), S1.Range("B:B"), TextBox3, S1.Range("C:C"), TextBox4)
    Me.Label8 = Format(Me.Label8, "#,##0.00")

    Me.Label9 = WorksheetFunction.AverageIfs(S1.Range("D:D"), S1.Range("A:A"), ">=" & CLng(CDate(TextBox1)), S1.Range("A:A"), "<=" & CLng(CDate(TextBox2)), S1.Range("B:B"), TextBox5, S1.Range("C:C"), TextBox6)
    Me.Label9 = Format(Me.Label9, "hh:mm:ss")
    Me.Label10 = WorksheetFunction.AverageIfs(S1.Range("E:E"), S1.Range("A:A"), ">=" & CLng(CDate(TextBox1)), S1.Range("A:A"), "<=" & CLng(CDate(TextBox2)), S1.Range("B:B"), TextBox5, S1.Range("C:C"), TextBox6)
    Me.Label10 = Format(Me.Label10, "#,##0.00")

    Me.Label11 = WorksheetFunction.AverageIfs(S1.Range("D:D"), S1.Range("A:A"), ">=" & CLng(CDate(TextBox1)), S1.Range("A:A"), "<=" & CLng(CDate(TextBox2)), S1.Range("B:B"), TextBox7, S1.Range("C:C"), TextBox8)
    Me.Label11 = Format(Me.Label11, "hh:mm:ss")
    Me.Label12 = WorksheetFunction.AverageIfs(S1.Range("E:E"), S1.Range("A:A"), ">=" & CLng(CDate(TextBox1)), S1.Range("A:A"), "<=" & CLng(CDate(TextBox2)), S1.Range("B:B"), TextBox7, S1.Range("C:C"), TextBox8)
    Me.Label12 = Format(Me.Label12, "#,##0.00")

    Set S1 = Nothing
End Sub
 
Katılım
18 Kasım 2012
Mesajlar
423
Excel Vers. ve Dili
Microsoft Office 365
Altın Üyelik Bitiş Tarihi
04-07-2024
@Korhan Ayhan hocam merhaba,

Farklı farklı hatalar alıyorum.

252113

Nesnelerin hepsinin dolu olmama durumu var. Başka bir husus ise "E" sütunundaki veriler saat değil sayı olarak görünecek.

Örnek vermek gerekirse Label 7 de saat iken "02:45"Label 8 de sayı biçiminde 1.245 olacak. Hatta Sayı biçiminin yanına Lt. ekleyebilirsek süper olur.

Buna göre kodlarda nasıl bir değişikliğe gitmeliyim ?

Saygılarımla,
 
Son düzenleme:

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,190
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Nesnelerin dolu olmama durumlarını IF sorguları ile denetleyebilirsiniz. Bu konuyla ilgili forumda araştırma yapabilirsiniz.

Saat olarak görünmemesi gereken Label nesnelerini saat formatına çeviren biçimlendirme satırlarını silebilirsiniz.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,190
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Üstteki mesajımda Tüketim Label nesnelerinin biçimini düzenledim. Dilerseniz bu halini deneyebilirsiniz.
 
Katılım
18 Kasım 2012
Mesajlar
423
Excel Vers. ve Dili
Microsoft Office 365
Altın Üyelik Bitiş Tarihi
04-07-2024
@Korhan Ayhan hocam teşekkürler.

Boş olan nesnelerin hatası için kod aralıklarına if ekleyerek sonrasında end if ile bitirsem yeterli olmaz mı?

Saygılarımla,
 
Katılım
18 Kasım 2012
Mesajlar
423
Excel Vers. ve Dili
Microsoft Office 365
Altın Üyelik Bitiş Tarihi
04-07-2024
@Korhan Ayhan hocam denedim ama olmadı.
:)

Aralara end if end if ekleyerek devam ettim ama hata mesajı aldım.

Syg,
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,190
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Kullanımını çok önermesekte aşağıdaki satırın hemen altına On Error Resume Next satırını ekleyip hataları geçiştirebilirsiniz.

Set S1 = Sheets("LISTE")
 
Üst