Excel Forum
ALTIN ÜYELİK Hakkında Bilgi


Geri Git   Excel Forum > EXCEL-Soruları > Makro-VBA
Atatürk
Şifremi Unuttum

DUYURU SİSTEMİ / REKLAM PANOSU

Makro-VBA Makro veya VBA ile ilgili sorularınızı buraya gönderebilirsiniz.
Dosya ekleyebilirsiniz

Özel Arama


Yanıtla
 
Paylaş Konu Araçları Görünüm Modları
Eski 12-11-2017, 22:56   #1
nzmsmz
 
Giriş: 25/05/2015
Mesaj: 58
Excel Vers. ve Dili:
VBA
Red face Toplamı ortalamaya çevirmek

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=1ON...huNPtaeYM0CESM

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
nzmsmz Çevrimdışı   Alıntı Yaparak Cevapla
Eski 13-11-2017, 14:14   #2
systran
Destek Ekibi
 
Giriş: 15/12/2007
Mesaj: 1,347
Excel Vers. ve Dili:
2007 [TR]
Varsayılan

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: (Rahat kopyalayabilmeniz için tüm kodu seçmenizi sağlar)
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")
s1.Cells(k, 14) = Val(s1.Cells(k, 14)) + 1
End If
O3 hücresinede şu formülü yazıp aşağıya kadar çoğaltın.
=B3/N3
systran Çevrimdışı   Alıntı Yaparak Cevapla
Eski 13-11-2017, 20:49   #3
nzmsmz
 
Giriş: 25/05/2015
Mesaj: 58
Excel Vers. ve Dili:
VBA
Varsayılan

İ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ı
nzmsmz Çevrimdışı   Alıntı Yaparak Cevapla
Eski 13-11-2017, 22:38   #4
systran
Destek Ekibi
 
Giriş: 15/12/2007
Mesaj: 1,347
Excel Vers. ve Dili:
2007 [TR]
Varsayılan

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: (Rahat kopyalayabilmeniz için tüm kodu seçmenizi sağlar)
Set s1 = ThisWorkbook.Worksheets("Özet")
s1.Range("N:N").ClearContents
sat = 3
systran Çevrimdışı   Alıntı Yaparak Cevapla
Eski 13-11-2017, 22:54   #5
nzmsmz
 
Giriş: 25/05/2015
Mesaj: 58
Excel Vers. ve Dili:
VBA
Varsayılan

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?
nzmsmz Çevrimdışı   Alıntı Yaparak Cevapla
Eski 13-11-2017, 23:00   #6
nzmsmz
 
Giriş: 25/05/2015
Mesaj: 58
Excel Vers. ve Dili:
VBA
Varsayılan

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")
nzmsmz Çevrimdışı   Alıntı Yaparak Cevapla
Yanıtla


Konu Araçları
Görünüm Modları

Gönderme Kuralları
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Açık
SimgelerAçık
[IMG] kodu Açık
HTML kodu Kapalı


Saat 23:39


Bu forum Elit NET - www.elitnet.com.tr tarafından sunulmaktadır.

Excel Eğitimi - Mobil Uygulama - Çorlu - Çorlu Web Tasarım - Tarot Falı - invest in turkey - Lingerie - Dyeing Machine - Karton Bardak- Çorlu Özel Eğitim- Site Yönetimi- Led Aydınlatma- Pronet Tekirdağ- Çorlu Kamera- Pronet Edirne- Pronet Kırklareli- Pronet Çerkezköy- Pronet Çorlu- Pronet Lüleburgaz- Pronet Keşan- Çorlu Araç Takip- Çorlu Su Arıtma- Boru Profil- Gebze Emlak- Beylikdüzü Temizlik- İstanbul Burun Estetiği- Bakır Sülfat- Rampa- Rotary- Çorlu İnternet Sitesi- youngblood- Çorlu Palet- Çerkezköy Palet- Çorlu Prefabrik- Çorlu Sürücü Kursu- Çorlu Sandviç Panel- Şişli Avukat- Korona Test Kalemi- Çorlu Vinç- Çorlu Pimapen Tamiri-
Powered by vBulletin Version 3.7.2
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Advertisement System V2.6 By   Branden