Excel Vba Aralık Toplama
04 Kasım 2020
05 Kasım 2020
Excel'de bazen veri yazdıkça en üst satırda toplam gelmesini isteyebilirsiniz. Bu istek, Excel'in TOPLA formülü ile de kolayca gerçekleşir. Buradaki küçük nüans, formülde belirlediğiniz aralığın dışında bir aralığa değer girilmişse, o değerin toplama dahil edilmeyecek olmasıdır. Bunun da elbet kolay çözümleri vardır ama makalemize konu makro ile toplam alma olacağı için, bunun üzerinde duracağız.
Diyelim ki; A sütununda gireceğiniz değerler yer alsın. Siz A1 hücresinde değer girildikçe toplam rakamlarının yer almasını istiyorsunuz.
Range("A1").Value = WorksheetFunction.Sum(Range("A3:A100"))
Bu işin en basit hali üstteki kod parçacığıdır. Bu kodu, bir makroya atıp çalıştırdığınızda A3:A100 aralığındaki değerleri toplar. Lakin otomatik olarak toplamasını istiyorsanız, kodu sayfanın Change olayına eklemeniz gerekecektir, yani şu şekilde:
Private Sub Worksheet_Change(ByVal Target As Range)
Range("A1").Value = WorksheetFunction.Sum(Range("A3:A100"))
End Sub
Range("A1").Value = WorksheetFunction.Sum(Range("A3:A100"))
End Sub
Bu kod, Module olarak değil, sayfanın kod kısmına eklenecektir. Kodumuz, siz A3:A100 aralığına veri yazdıkça A1 hücresinde o verilerin toplamını otomatik olarak verecektir.
Lakin bu kod Excel sayfasında nerede işlem yaparsanız yapın çalışacağı için sorun yaratacaktır. Dolayısıyla bunu da aşağıdaki gibi ufak bir dokunuşla sadece A sütununda bir değişiklik olursa çalışsın şeklinde revize edebiliriz.
Private Sub Worksheet_Change(ByVal Target As Range)
If If Target.Column = 1 And Target.Row >= 3 And Target.Row <= 100 Then
Range("A1").Value = WorksheetFunction.Sum(Range("A3:A100"))
End If End Sub
If If Target.Column = 1 And Target.Row >= 3 And Target.Row <= 100 Then
Range("A1").Value = WorksheetFunction.Sum(Range("A3:A100"))
End If End Sub
Evet, şimdi kodumuz sadece A sütununda işlem gördüğünde çalışacaktır. Lakin yazdığımız değerler 101. satıra gelirse, artık bu kod bize doğru sonuç vermeyecektir. Bununda üstesinden aşağıdaki gibi küçük bir dokunuşla geliriz.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 And Target.Row >= 3 And Target.Row <= Range("A" & Rows.Count).End(xlUp).Row Then
Range("A1").Value = WorksheetFunction.Sum(Range("A3:A" & Range("A" & Rows.Count).End(xlUp).Row))
End If End Sub
If Target.Column = 1 And Target.Row >= 3 And Target.Row <= Range("A" & Rows.Count).End(xlUp).Row Then
Range("A1").Value = WorksheetFunction.Sum(Range("A3:A" & Range("A" & Rows.Count).End(xlUp).Row))
End If End Sub
Artık A sütununda ne kadar veri yazarsak yazalım, A1 hücresinde otomatik olarak toplanacaktır.
Faydalı olması temennisiyle.
YARARLI KISAYOLLAR | |
---|---|
Hücreyi Araya Yerleştirme | Shift Sürükle |
Tablo Seçimi Yapma | Ctrl * |
Yardım | F1 |
Aynı hücre içinde bir alt satıra geçme | Alt Enter |
VB Penceresini Açmak | Alt F11 |