MVP logo
    Sizin Brauzer: , Versiya
Bazar, 22.10.2017, 3:06 PM
Salam Qonaq | RSS
Ana səhifə | Fayl Kataloqu | Qeydiyyat | Giriş
Saytın menyusu

Kateqoriyalar
VBA [21]
Formullar [31]
Massiv Formullar [12]
Ümumi [4]

Sorğu
Saytın hansı bölməsini daha çox maraqlı hesab edirsiniz?
Səsvermə sayı: 124

Statistika

Cəmi online: 1
Qonaqlar: 1
Userlər: 0

Müsabiqələr

Ana səhifə » Fayllar » Excel Tricks » VBA

Multi Sumif. Bütün səhifələrdən dövrü cəmləmə əməliyyatı
[ Bu serverdən yüklə (20.7Kb) ] 18.05.2013, 3:29 PM
Bunu praktiki misal üzərində nəzərdən keçirək. Aşağıdakı cədvəldə bizim 6 səhifəlik bir excel kitabımız var. "Sum" adlı birinci səhifəmizdə kriteriyaları görürsüz ("B9:B18"). "Səhifə1-Səhifə5"-ə kimi səhifələrin hər biri eyni quruluşdadır və kriteriyalar B6-dan başlayaraq aşağı doğru düzülərək məbləğləri də qarşılarında yazılıb. Tapmalı olduğumuz məsələ isə bu "Sum" adlı səhifədəki kriteriyaların hər biri üzrə cəmi məbləgin tapılmasıdır. Bu əgər bir səhifə üçün olsa idi onda biz Sumif() funksiyasından istifadə edərdik. Amma göründüyü kimi bizim səhifələrimizin sayı çoxdur. Belə halda bizim bu bezdirici işimizi avtomatlaşdırmağımız lazım gələcək. Çünki bunları formulla etək əlverişsiz və xeyli xavt itkisi deməkdir vaxt isə əlavə puldur. Ona görə də əgər bu kimi məsələlərlə üzləşmisinizsə onda bunu aşağıda izahlı şəkildə yazdığım VBA dan istifadə etməklə həll edə bilərsiniz.



Sub Her_Sehif_Krit_Topla()
Application.ScreenUpdating = False
Sum = 0
lrow = Sheets("Sum").Cells(Rows.Count, "B").End(xlUp).Row 'Sum adli sehifede "B" sutununda sonuncu setir movqeyini tapiriq
Sheets("Sum").Range("C9").Resize(lrow - 9).ClearContents 'C9 ve ondan ashagi olan reqemleri legv edirik (C19-daki cemi saxlamaq shertile)
For c = 9 To lrow 'Sherti olaraq burada kriter-lar 9-cu setirden bashlayir sum adli sehifede
For sh = 2 To Worksheets.Count 'Axtarish 2-ci sehifeden bashlayaraq  excel kitabindaki sonuncu sehifedek davam edecek (Worksheets.Count- excel kitabindaki sehifelerin sayini tapacaq)
i = 6 'Sherti olaraq burada 6-ci setirden bashlayir
Do While Sheets(sh).Cells(i, 2) <> "" 'her bir axtarish aparilan sehifede 6-ci setirden bashlayaraq bosh xanayadek axtarish edirik
If Sheets(sh).Cells(i, 2) = Sheets("Sum").Cells(c, 2) Then 'Eger axtarish edilen kriteriya tapilirsa onda
Sum = Sum + Sheets(sh).Cells(i, 3) 'Tapilan mebleg cemlenir
Sheets("Sum").Cells(c, 3) = Sum 'Cemlenen mebleg Sum adli sehifeye daxil edilir "C" sutununa
End If
i = i + 1 'Novbeti setirlere kechmek uchun "i"-nin artimini veririk
Loop 'Tsikli yeniden icra edir (ta ki boshluga qeder)
Next sh 'Novbeti sehife
Sum = 0 'Yaddashi reqemlerden azad edirik ki, diger kriteriyalari cemleyek
Next c 'Novbeti kriteriyaya kechid
Application.ScreenUpdating = Ture
End Sub

Kateqoriya: VBA | Yükləyən: Useful
Baxış sayı: 528 | Yükləmə sayı: 91 | Ratinqi: 0.0/0
Cəmi şərhlər: 0
Ad *:
E-poçt:
Kod *:
Daxil ol

Axtar

Dost Saytlar
  • www.planetaexcel.ru
  • www.programmersforum.ru
  • www.mrexcel.com
  • www.excelworld.ru
  • www.cyberforum.ru
  • www.excelvba.ru
  • www.muhasib.az

  • Sayğac
    free counters

    Saytın məlumatlarından istifadə edərkən mənbəyə istinad zəruridir!
    MyExcelWorld © 2010 - 2017
    Site managed by uCoz
    ILK-10 Azeri Website Directory