Excel VBA ile Ortalama Hesaplama: Kolay ve Hızlı Yöntem
1. Örnek Veri Tablosu
Aşağıdaki tablo üzerinde ortalama hesaplamayı öğreneceğiz.
2. Yöntem 1: Average ile Ortalama Hesaplama
Average fonksiyonu, belirli bir aralıktaki sayıların ortalamasını hızlıca hesaplar.
Sub OrtalamaAl()
Dim aralik As Range
Dim ortalama As Double
Set aralik = Range("B2:B8")
ortalama = Application.WorksheetFunction.Average(aralik)
Range("D3").Value = ortalama
End Sub
📌 Kodda Kullanılanlar
- Dim aralik As Range → Aralık için değişken tanımlar
- Dim ortalama As Double → Ondalıklı sayı için değişken tanımlar
- Set aralik = Range("B2:B8") → Hangi hücreleri kullanacağını belirler
- Application.WorksheetFunction.Average → Excel'in AVERAGE formülünü çalıştırır
- Range("D3").Value = ortalama → Sonucu D3 hücresine yazar
📊 Sonuç:
| Ürün | Satış |
|---|---|
| Laptop | 22 |
| Mouse | 43 |
| Klavye | 45 |
| Monitör | 30 |
| USB Bellek | 40 |
| Yazıcı | 44 |
| Kulaklık | 4 |
| ✅ Ortalama: 32,57 (D3) | |
📌 Sonuç: 32,57
3. Yöntem 2: For Each Döngüsü ile Ortalama Hesaplama
For Each döngüsü ile her hücreyi tek tek gezerek toplamı bulur ve ortalamayı hesaplar.
Sub OrtalamaDongu()
Dim hucre As Range
Dim toplam As Double
Dim sayac As Integer
For Each hucre In Range("B2:B8")
If IsNumeric(hucre.Value) Then
toplam = toplam + hucre.Value
sayac = sayac + 1
End If
Next hucre
Range("D3").Value = toplam / sayac
End Sub
📌 Kodda Kullanılanlar
- Dim hucre As Range → Her bir hücre için değişken tanımlar
- Dim toplam As Double → Toplam için değişken tanımlar
- Dim sayac As Integer → Kaç sayı olduğunu sayar
- For Each hucre In Range("B2:B8") → Her hücreyi dolaş
- If IsNumeric(hucre.Value) Then → Hücre sayısal mı kontrol et
- toplam = toplam + hucre.Value → Toplama ekle
- sayac = sayac + 1 → Sayacı 1 artır
- Next hucre → Bir sonraki hücreye geç
- Range("D3").Value = toplam / sayac → Sonucu D3'e yaz
🔄 Sonuç:
| Ürün | Satış |
|---|---|
| Laptop | 22 |
| Mouse | 43 |
| Klavye | 45 |
| Monitör | 30 |
| USB Bellek | 40 |
| Yazıcı | 44 |
| Kulaklık | 4 |
| ✅ Ortalama: 32,57 (D3) | |
📌 Sonuç: 32,57
4. Yöntem 3: Dinamik Aralık ile Ortalama Hesaplama
Dinamik aralık ile veri sayısı değişse bile otomatik olarak güncellenen bir ortalama hesaplayabilirsiniz.
Sub DinamikOrtalama()
Dim sonSatir As Long
sonSatir = Cells(Rows.Count, 2).End(xlUp).Row
Range("D3").Value = Application.WorksheetFunction.Average(Range("B2:B" & sonSatir))
End Sub
📌 Kodda Kullanılanlar
- Dim sonSatir As Long → Son satır numarası için değişken tanımlar
- Cells(Rows.Count, 2) → B sütununun en alt hücresi
- .End(xlUp).Row → Yukarı doğru gidip son dolu satırı bulur
- Range("B2:B" & sonSatir) → B2'den son satıra kadar dinamik aralık oluşturur
- Application.WorksheetFunction.Average → Excel'in AVERAGE formülünü çalıştırır
- Range("D3").Value → Sonucu D3 hücresine yazar
📊 Sonuç:
| Ürün | Satış |
|---|---|
| Laptop | 22 |
| Mouse | 43 |
| Klavye | 45 |
| Monitör | 30 |
| USB Bellek | 40 |
| Yazıcı | 44 |
| Kulaklık | 4 |
| ✅ Ortalama: 32,57 (D3) | |
📌 Sonuç: 32,57 · Veri eklendikçe otomatik güncellenir
5. Geliştirici Sekmesini Aktifleştirme
1. Geliştirici Sekmesini Aktifleştirin
3. Modül Ekleyin
Makro yazma rehberi için tıklayın.
2. VBA Düzenleyici'yi Açın
Alt + F11 (Win) / Option + F11 (Mac)
4. Kodu Çalıştırın
F5 ile çalıştırın.
F5
▶️ Makroyu çalıştır
6. 3 Yöntemin Karşılaştırması
🚀 Hızlı Karar: Hızlı hesaplama → Average · Özel koşullar → For Each · Dinamik veri → Dinamik Aralık
7. Sıkça Sorulan Sorular
01 Excel VBA ile ortalama nasıl hesaplanır?
Application.WorksheetFunction.Average(aralik) kodunu kullanabilirsiniz.
02 Ortalama hesaplarken hata alıyorum, ne yapmalıyım?
Aralıkta sayısal olmayan değerleri kontrol edin. If IsNumeric(hucre.Value) ile sadece sayıları hesaba katın.
03 Dinamik aralıkla ortalama nasıl hesaplanır?
Cells(Rows.Count, 2).End(xlUp).Row ile son satırı bulup dinamik aralık oluşturun.
04 Mac'te ortalama hesaplama çalışır mı?
Evet, Mac'te de aynı kodlar çalışır.
05 Ortalama sonucunu hücreye nasıl yazarım?
Range("D3").Value = ortalama ile yazabilirsiniz.
06 Sadece koşula uyan hücrelerin ortalamasını nasıl alırım?
AverageIf veya AverageIfs fonksiyonlarını kullanabilirsiniz.