Döngü, Koşullu Toplam Sihirbazı

Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
Normalde istediğim sonucu formülle elde edebiliyorum

aşağıdaki adları tanımladıktan sonra
Kod:
by	='2007'!$E$5:$E$2262
my	='2007'!$F$5:$F$2262
mstar	='2007'!$B$5:$B$2262
gt	='2007'!$G$5:$G$2262
mm	='2007'!$I$5:$I$2262
TUTAR	='2007'!$J$5:$J$2262
m8 hücresine aşağıdaki formulü girip
Kod:
'=TOPLA(EĞER(by=K8;EĞER(my=$C$4;EĞER(MSTAR>=$I$4;EĞER(MSTAR<=$M$4;EĞER(gt=R8;EĞER(MM=F8;TUTAR;0);0);0)))))
Eğer ad tanımlamasaydık formulümüz aşağıdaki gibi olacaktı

Kod:
'=TOPLA(EĞER('2007'!$E$5:$E$2262=K9;EĞER('2007'!$F$5:$F$2262=$C$4;EĞER('2007'!$B$5:$B$2262>=$I$4;EĞER('2007'!$B$5:$B$2262<=$M$4;EĞER('2007'!$G$5:$G$2262=R9;EĞER('2007'!$I$5:$I$2262=F9;'2007'!$J$5:$J$2262;0);0);0)))))
aşağı doğru çekince sonuca ulaşıyorum ancak 2007 adlı çalışma sayfasına her veri girişte raporu yeniden hesaplayınca işlemler yavaşlıyor

şimdi ihtiyacım olan bunun makrosu aklıma geliyore ama e toplayı başaramadım

Kod:
For i = 8 to 110
   if Cells(i, "f") And Cells(i, "k") And Cells(i, "r") then
      Cells(i, "m") = xxxxxxxxxxxxxxxxxxxxxx
   else
      Cells(i, "m") = ""
   End if
Next
xxxxxxxxxxxxxxxxx yerine ne gelmelidir
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
g&#252;ncel ilginize &#351;imdiden te&#351;ekk&#252;rler
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
Arkada&#351;alr bu kodlar nas&#305;l daha h&#305;zl&#305; &#231;al&#305;&#351;r&#305; ben yapt&#305;m ama
Kod:
Sub Makro1()
'Dim wfTOPLA As WorksheetFunction:   Set wfTOPLA = WorksheetFunction.Sum
Dim wsRAPR, wsOZET As Worksheet
        Set wsRAPR = Sheets("2007")
        Set wsOZET = Sheets("SAYFA2")

'=TOPLA( _
    E&#286;ER(by=K8; _
    E&#286;ER(my=$C$4; _
    E&#286;ER(MSTAR>=I4; _
    E&#286;ER(MSTAR<=$M$4; _
    E&#286;ER(gt=R8; _
    E&#286;ER(MM=F8; _
    TUTAR;0);0);0)))))


For sat = 8 To 26
topla = 0
    If wsOZET.Cells(sat, "K") <> "" And _
       wsOZET.Cells(sat, "R") <> "" And _
       wsOZET.Cells(sat, "F") <> "" Then
        For rpr = 5 To 2262
            If wsRAPR.Cells(rpr, "E") = wsOZET.Cells(sat, "K") And _
               wsRAPR.Cells(rpr, "F") = wsOZET.Range("C4") And _
               wsRAPR.Cells(rpr, "B") >= wsOZET.Range("I4") And _
               wsRAPR.Cells(rpr, "B") <= wsOZET.Range("M4") And _
               UCaseTr(wsRAPR.Cells(rpr, "G")) = UCaseTr(wsOZET.Cells(sat, "R")) And _
               UCaseTr(wsRAPR.Cells(rpr, "I")) = UCaseTr(wsOZET.Cells(sat, "F")) Then
               topla = topla + wsRAPR.Cells(rpr, "J")
            End If
        Next rpr
        wsOZET.Cells(sat, "M") = topla
    Else
        wsOZET.Cells(sat, "M") = ""
    End If
Next sat
End Sub
Function UCaseTr(ByVal metin As String)
    UCaseTr = UCase(Replace(Replace(metin, "&#305;", "I"), "i", "&#304;"))
End Function
 
Üst