MVP logo
    Your browser: , Version
Friday, 26.04.2024, 5:24 PM
Hello! Guest | Group Guest | RSS
Home | Fayl Kataloqu | Profile  | Login
Saytın menyusu

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

Sorğu
"Excel"in hansı versiyasını istifadə edirsiniz?
Səsvermə sayı: 572

Statistika

Total online: 1
Guests: 1
Users: 0

Müsabiqələr


Multi Sumif. Bütün səhifələrdən dövrü cəmləmə əməliyyatı
[ Download from this server (20.7 Kb) ]18.05.2013, 2: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

Category: VBA | Added by: Useful
Views: 1066 | Downloads: 115 | Rating: 0.0/0
Total comments: 0
Register to add comments
[ Register | Login ]
Login

Search

Useful Sites
  • www.planetaexcel.ru
  • www.programmersforum.ru
  • www.mrexcel.com
  • www.excelworld.ru
  • www.cyberforum.ru
  • www.excelvba.ru
  • www.muhasib.az

  • Visitors
    free counters


    MyExcelWorld © 2024
    Site managed by uCoz