• DİKKAT

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

Ardışık Ortalama Almak

Katılım
16 Ocak 2016
Mesajlar
10
Excel Vers. ve Dili
excel 2010 Türkçe
Üstadlar merhaba,

Benim sorunum, excel tablosunda yer alan verilerin, 3 er 3 er ardışık olarak ortalamalarını almak. Yani A1-A3 ortalaması yaz. Ardından alt satıra A4-A6 ortalaması yaz. son satıra kadar in...

Yardımlarınız için şimdiden çok teşekkür ederim...
 
Ortalamayı nereye yazacak ?..
Aşağıdaki kod
B2 den başlayarak alt alta ortalamaları alır

Kod:
Sub Ortalama()
For MSTF = 1 To Cells(65536, "b").End(xlUp).Row
Mutlu = Range("o65536").End(3).Row + 1
MM = Cells(MSTF, "b") + Cells(MSTF + 1, "b") + Cells(MSTF + 2, "b")
Cells(Mutlu, "o") = MM / 3
MSTF = MSTF + 2
Next
End Sub
 
Son düzenleme:
Üstad merhaba,

Soldan sağa 14 satırım var. Ancak 1. satırda Proje adı yazıyor veri yok. veriler B5ten başlayıp N5'te bitiyor. O5. satır boş o kısma yazılabilir...
 
Ortalaması alınacak veriler hangi sütunda ?
B5 ten N5 e kadar topla 13 adet veri
B6 dan N6 ya kadar topla13 adet veri
B7 den N7 ye kadar tola13 adet veri

Toplamı 39 a böl şeklinde mi olacak..

Yoksa Sadece B sütunu ortalaması mı alınacak..
 
Yok Hocam,

b6-b7-b8 in ortalamasını alsın, O6 ya yazsın. sonra b9 b10 b11 in ortalamasını alsın O7 ye yazsın istiyorum :/

b5 satırındaki değer ilk ölçüm olduğu için ona gerek yok...
 
6. satırdan mı başlayacağız ?
Hocam ben size kodu açıklayım siz değişiklikleri yaparsınız.
Önce kodu bir modüle yapıştırın açıklamalar yeşil olarak görünecektir.
Açıklamalar kodun çalışmasını engellemez.

Kod:
Sub Ortalama()
Range("o2:o65536").ClearContents ' O sütunundaki tüm verileri siler
Mutlu = 2 ' Verinin kayıt başlangıç satırı
For MSTF = 1 To Cells(65536, "b").End(xlUp).Row ' b sütununu 1 den başlayarak son veriye kadar tarar.
MM = Cells(MSTF, "b") + Cells(MSTF + 1, "b") + Cells(MSTF + 2, "b") ' B sütununda 3 satırı toplar
Cells(Mutlu, "o") = MM / 3 ' O sütununa kaydeder
Mutlu = Mutlu + 1 ' kaydederken +1 de bir altına +2 olursa arasında bir boş satır bırakarak kaydeder
MSTF = MSTF + 2 ' taramada başladığı satırdan kaç satır sonrasına gitmesi gerektiği
Next
End Sub
 
Son düzenleme:
Sub Ortalama()
Mutlu = 2 ' B6
For MSTF = 1 To Cells(65536, "b").End(xlUp).Row '
MM = Cells(MSTF, "b") + Cells(MSTF + 1, "b") + Cells(MSTF + 2, "b") ' B
Cells(Mutlu, "o") = MM / 3 '
Mutlu = Mutlu + 1 '
MSTF = MSTF + 2 '
Next
End Sub

Hocam bu şekilde düzelttim ama 4. satır debug veriyor...
 
b Sütununda sayı değilde metin olursa hata alırsınız.

Dosyanızı da gizli bilgileriniz yok ise
xls formatında
mustafamutlux@hotmail.com
adresine yollayın
İçine örnek yapın istediklerinizi yazın
Bir bakayım..
Vakit geç oldu ama size biraz zaman daha ayırabilirim.
 
Ortalama alırken sağa doğru kaydıracağım diyorsunuz, bu demektirki c d e f ... hücrelerininde ortalamaları alınacak.

Hocam verileriniz arasında çoğu sayısal olmayan değerler.
Bu sayısal olmayan değerleri 0 sıfır yapmanızda bir sakınca oluşur mu.
___ , zero, <Samp, InVld gibi
 
Numerik olmayanları sıfır yaptım.
Kodlarımız normal çalıştı.

İyi geceler...
 
Merhabalar. Cümleten iyi geceler.

Örnek belge yok, konu sayfasında yazılanlardan anladığıma göre O6 hücresinden başlayarak
B6 ve aşağısındaki hücrelerin üçerli ortalaması alınmak isteniyor.

B sütunundaki hücrelerde sayılar varsa, aşağıdaki formül ile de sonuç bulunabilir.
Maksat formül ile alternatif çözüm önerisi.

Formülü O6 hücresine uygulayın ve aşağı doğru yetirence kopyalayın.
(örneğin B sütununda veriler 6'ncı satırdan 101'inci satıra kadarsa; ((101-5)/3)+5= 37'nci satıra kadar)

Ya da daha pratiği BOŞ sonuç elde edinceye kadar kopyalayabilirsiniz.
Kod:
=EĞERHATA(ORTALAMA(DOLAYLI(ADRES(3+(SATIRSAY($O$5:O5)*3);2;4)&":"&ADRES(5+(SATIRSAY($O$5:O5)*3);2;4)));"")
 
Sayın Ömer BARAN
Formülün kasacağını düşünüyorum.
Veri sayısı çok fazla..
 
Sayın Ömer BARAN
Formülün kasacağını düşünüyorum.
Veri sayısı çok fazla..
Merhaba.
Sütun boyunca veya bir'den fazla sütunda, bir'den fazla koşulla arama/sayma içermediğinden (yapılan tek sayma işlemi SATIRSAY) çok bekleteceğini sanmıyorum ama ortadaki verinin yoğunluğunu filan bilemiyorum ve örnek belge bile yok.
Önerim alternatif içindi zaten, gerçek dosya üzerinde denemek lazım.

Ben B6'dan itibaren 999.983 'üncü satıra kadar rastgele arada işleviyle ürettiğim sayıları değere dönüştürdükten sonra O6'ya yazdığım formülü uygulayıp 333.331'inci satıra kadar kopyalayarak denediğimde, 2,1-2,3 saniye arasında sonuç aldım doğrusu.

İLAVE NOT: Test sonuçlarım şu şekilde;
-- Kopyala-yapıştır -> ortalama süre -> 2,84 saniye (istikrarlı düzende)
-- Hesapla -> ortalama süre -> 2,51 saniye (istikrarlı düzende)
 
Son düzenleme:
Üstadlar sağolun. Öncelikle Mustafa Hocam makro çalıştı. Çok teşekkür ediyorum emeğinize sağlık. Allah razı olsun...
Ömer Hocam size de çok teşekkürler. Sizin yolunuzu da deneyeceğim. Bilgi veririm. Allah sizden de razı olsun. En kısa sürede Altın Üye olarak bende öğrenmek istiyorum.

Allaha emanet olun...
 
Geri
Üst