Excel Vba Aralık Toplama
Excel Vba Aralık Toplama, Makrolar ile sayfa üzerinde toplama yapmaya yarayan Visual Basic kodlarını kullanmaktadır.
Excel Vba Aralık Toplama Yapma
Bazen veri yazdıkça en üst satırda toplam gelmesini istenmektedir. Bu istek, Excel'in TOPLA formülü ile de kolayca gerçekleşmektedir. Ancak, formülde belirlenen aralığın dışında bir aralığa değer girilmişse, o değer toplama dahil edilmemektedir. Bunun formül yönteminde de çözümleri mevcuttur. Lakin, dosyada makro ile nasıl yapılması ele alınmaktadır.
A sütununda girilen değerler bulunmaktadır. A1 hücresine yeni değer girildiğinde, toplam rakamlarının yer alması istenmektedir.
Range("A1").Value = WorksheetFunction.Sum(Range("A3:A100"))
Bu işin en basit hali üstteki kod parçacığıdır. Bu kod, bir makroya atandığında ve çalıştırıldığında, A3:A100 aralığındaki değerleri toplamaktadır. Lakin, otomatik olarak toplaması istendiğinde, kodun sayfanın Change olayına eklenmesi gerekmektedir.
Private Sub Worksheet_Change(ByVal Target As Range) Range("A1").Value = WorksheetFunction.Sum(Range("A3:A100")) End Sub
Bu kod, Module olarak değil, sayfanın kod kısmına eklenmelidir. Kod, A3:A100 aralığına veri yazıldıkça A1 hücresinde o verilerin toplamını otomatik olarak vermektedir. Ancak, bu kod Excel sayfasının neresinde işlem yapılırsa yapılsın, sorun yaratacaktır. Dolayısıyla, sadece A sütununda bir değişiklik olursa çalışması için aşağıdaki gibi revize edilmelidir.
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
Şu anda sadece A sütununda işlem gördüğünde çalışmaktadır. Lakin, yazılan değerler 101. satıra gelirse, artık bu kod doğru sonuç vermeyecektir. Bununda üstesinden aşağıdaki gibi küçük bir dokunuşla gelinmektedir.
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
Artık A sütununda ne kadar veri olursa olsun, A1 hücresinde otomatik olarak toplanmaktadır.
Faydalı olması temennisiyle.