Ardışık Sayfalarda Topla Çarpım Yaparak Sayfalar Toplamını Hesaplayan Fonksiyon
Ardışık sayfalarda topla.çarpım yaparak sonucunu getiren bir fonksiyon aşağıdadır.
Aşağıdaki satırları Excel Macro kısmına yapıştırdıktan sonra oluşan yeşil renkli yazıları okuyun.
Bu fonksiyon, tüm sayfalarda aynı iki kolonda bulunan değerleri aralarında çarpmakta, çarpımların sonucunu sayfalar toplamı olarak toplamaktadır.
'---------------------------------------------------------------------------------------------------------------
'Aşağıdaki prosedürün çalışması için, içindeki bir satır üzerine gelip en az bir kere F5 yapın.
Private Sub RegisterMyFunction()
Application.MacroOptions _
Macro:="ArdisikSayfalardaToplaCarpim", _
Description:="Ardışık sayfalardaki aynı hücrelerde başlayan ikişer dizi üyeleri üzerinde topla-çarpım yapar ve sonuçlarını toplar.", _
Category:="Kullanıcı Tanımlı", _
ArgumentDescriptions:=Array( _
"Ardışık Birinci Sayfa", _
"Ardışık Sonuncu Sayfa", _
"Birinci Kolon Adı", _
"İkinci Kolon Adı (Opsiyoneldir. Bilgi girilmezse Birinci Kolonun sağındaki kolon adını alır.)", _
"Başlangıç Hücresi Satır No (Opsiyoneldir. Bilgi girilmezse 2 değerini alır.)")
End Sub
'---------------------------------------------------------------------------------------------------------------
Private Sub RegisterMyFunction()
Application.MacroOptions _
Macro:="ArdisikSayfalardaToplaCarpim", _
Description:="Ardışık sayfalardaki aynı hücrelerde başlayan ikişer dizi üyeleri üzerinde topla-çarpım yapar ve sonuçlarını toplar.", _
Category:="Kullanıcı Tanımlı", _
ArgumentDescriptions:=Array( _
"Ardışık Birinci Sayfa", _
"Ardışık Sonuncu Sayfa", _
"Birinci Kolon Adı", _
"İkinci Kolon Adı (Opsiyoneldir. Bilgi girilmezse Birinci Kolonun sağındaki kolon adını alır.)", _
"Başlangıç Hücresi Satır No (Opsiyoneldir. Bilgi girilmezse 2 değerini alır.)")
End Sub
'---------------------------------------------------------------------------------------------------------------
'Aşağıdaki fonksiyonu kullanırken yardım almak için, fonksiyon adını yazdıktan sonra Formül Çubuğunun solundaki fx düğmesine basın.
'Sinan Dilaver, 19/05/2021
Public Function ArdisikSayfalardaToplaCarpim(ArdisikSayfa1 As String, ArdisikSayfaSon As String, _
Kolon1 As String, Optional Kolon2 As String = "", Optional rmin As Integer = 2)
Kolon1No = Range(Kolon1 & 1).Column
If Kolon2 <> "" Then
Kolon2No = Range(Kolon2 & 1).Column
Else
Kolon2No = Kolon1No + 1
End If
ns = Sheets.Count
smin = 0: smax = 0
For s = 1 To ns
If Sheets(s).Name = ArdisikSayfa1 Then
smin = s
Else
If Sheets(s).Name = ArdisikSayfaSon Then
smax = s
End If
End If
If smin <> 0 And smax <> 0 Then
Exit For
End If
Next s
Toplam = 0
For s = smin To smax
rmax = WorksheetFunction.CountA(Sheets(s).Range(Kolon1 & rmin & ":" & Kolon1 & 1000000)) + 1
For r = rmin To rmax
Toplam = Toplam + Sheets(s).Cells(r, Kolon1No) * Sheets(s).Cells(r, Kolon2No)
Next r
Next s
ArdisikSayfalardaToplaCarpim = Toplam
End Function
'Sinan Dilaver, 19/05/2021
Public Function ArdisikSayfalardaToplaCarpim(ArdisikSayfa1 As String, ArdisikSayfaSon As String, _
Kolon1 As String, Optional Kolon2 As String = "", Optional rmin As Integer = 2)
Kolon1No = Range(Kolon1 & 1).Column
If Kolon2 <> "" Then
Kolon2No = Range(Kolon2 & 1).Column
Else
Kolon2No = Kolon1No + 1
End If
ns = Sheets.Count
smin = 0: smax = 0
For s = 1 To ns
If Sheets(s).Name = ArdisikSayfa1 Then
smin = s
Else
If Sheets(s).Name = ArdisikSayfaSon Then
smax = s
End If
End If
If smin <> 0 And smax <> 0 Then
Exit For
End If
Next s
Toplam = 0
For s = smin To smax
rmax = WorksheetFunction.CountA(Sheets(s).Range(Kolon1 & rmin & ":" & Kolon1 & 1000000)) + 1
For r = rmin To rmax
Toplam = Toplam + Sheets(s).Cells(r, Kolon1No) * Sheets(s).Cells(r, Kolon2No)
Next r
Next s
ArdisikSayfalardaToplaCarpim = Toplam
End Function