• DİKKAT

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

Toplamı ortalamaya çevirmek

Katılım
25 Mayıs 2015
Mesajlar
94
Excel Vers. ve Dili
VBA
Merhaba, ekteki dosya içerisinde daha önce yazılan bir kod var. yalnız dosya içerisinde ÖZET sayfasında B ve C sütununda ilgili bölge ve kişiyi diğer sayfalardan bularak toplamını veriyor. Diğer sayfalarda süre ve sayılar var. C sütununda ki toplam doğru çalışıyor, ancak B sütununda sürelerin toplamını değil ortalamasını getirmesini istiyorum.

dosya ekte dilinden anlayan biri düzeltebilirse sevinirim.

https://drive.google.com/open?id=1ONJ5KbZMeMtdE5-MoPhuNPtaeYM0CESM

Sub sayfalar()
Set s1 = Sheets("Özet")
s1.Range("G3:G65536").ClearContents
On Error Resume Next
For i = 1 To Worksheets.Count
If Worksheets(i).Name <> "Özet" Then
sonsatir = s1.Range("g65536").End(xlUp).Row + 1
s1.Range("g" & sonsatir) = Worksheets(i).Name
End If
Next i
End Sub
Sub getir()
Application.ScreenUpdating = False
On Error Resume Next
Sheets("Özet").Range("b3:c208").ClearContents
Set s1 = ThisWorkbook.Worksheets("Özet")
sat = 3
For i = 3 To s1.Range("g65536").End(xlUp).Row
For q = 8 To s1.Cells(i, 256).End(xlToLeft).Column

If s1.Cells(i, q) <> "" Then
Set s2 = ThisWorkbook.Worksheets(s1.Cells(i, "g").Value)

For k = 3 To s1.Range("a65536").End(xlUp).Row
For z = 2 To s2.Range("a65536").End(xlUp).Row
If s2.Cells(z, "a") = s1.Cells(i, q) And s2.Cells(z, "b") = s1.Cells(k, "a") Then
s1.Cells(k, 2) = s1.Cells(k, 2) + s2.Cells(z, "c")
s1.Cells(k, 3) = s1.Cells(k, 3) + s2.Cells(z, "d")

End If
Next z
Next k
End If
Next q
Next i
Application.ScreenUpdating = True
MsgBox "İşlem TAMAM.", vbInformation
End Sub
 
kodlarınız karışık sırada çalıştığın için makro içinden tam olarak ortalamayı çıkartamadım.
aşağıdaki kırmızı kodu araya ilave edin. 14. sütun (N) sütununa isimlerin kaç kere formülde kullanıldığını yazacak.
Kod:
For z = 2 To s2.Range("a65536").End(xlUp).Row
If s2.Cells(z, "a") = s1.Cells(i, q) And s2.Cells(z, "b") = s1.Cells(k, "a") Then
s1.Cells(k, 2) = s1.Cells(k, 2) + s2.Cells(z, "c")
s1.Cells(k, 3) = s1.Cells(k, 3) + s2.Cells(z, "d")
[B][COLOR="Red"]s1.Cells(k, 14) = Val(s1.Cells(k, 14)) + 1[/COLOR][/B]
End If

O3 hücresinede şu formülü yazıp aşağıya kadar çoğaltın.
=B3/N3
 
İlgilendiğiniz için teşekkür ederim ama N sutununa isimlerin kaç kere formülde kullanıldığını sanırım doğru saymıyor. 2 kez kullanılan ismi 7 olarak gösteriyor bu süre oranının bölünmesinde kaç doğru sonucu vermedi. Folmulü aynen yazdığınız gibi ekleyip kodu düzenledim. ama olmadı
 
Gönderdiğiniz örneğe göre AHMET adlı kişiyi Eylül17 isimli sayfada filtreleyince 16 kez tekrar ettiğini ve Süre kısmını fare ile seçtiğinizde durum çubuğunda ortalama 75:34:57 yazdığını görüyorum.
bahsettiğim formül ile de aynı sonucu alıyorsunuz.
formüle şu ilaveyi yapıp tekrar deneyiniz.
Kod:
Set s1 = ThisWorkbook.Worksheets("Özet")
[B][COLOR="Red"]s1.Range("N:N").ClearContents[/COLOR][/B]
sat = 3
 
Tamamdır bunu ekleyince doğru hesapladı :) çok teşekkür ederim.

Biz şimdi süre ortalamasını böylelikle O sütununda hesaplamış olduk bunu formülü bozmadan B sütununda nasıl gösterebilirim?
 
sanıyorum burada B3:C208 kısmında B ye yazılması gereken süre değerini başka bir sütuna yazdırıp sizin ilettiğiniz formülü oraya düzeltmem lazım. O ya gelmesi gereken değeri de B ye çekersem olur mu?

Sheets("Özet").Range("b3:c208").ClearContents
Set s1 = ThisWorkbook.Worksheets("Özet")
 
Geri
Üst