• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Makroda sumproduct çalışmıyor

mersilen

Destek Ekibi
Destek Ekibi
Katılım
31 Aralık 2009
Mesajlar
1,105
Excel Vers. ve Dili
excel 2007 türkçe
Excel Vers. ve Dili Ofis 2003
Merhabalar

Makro kodu içindeki sumproduct hata değeri döndürüyor.Nasıl düzeltebiliriz.Amaç "P" sütununda "D" sütununun toplamını altırmak.

Cells(x, "P") = Evaluate("SumProduct((=D10:D" & sonsat3 & "=D" & x & "),O10:O" & sonsat3 & ") & ")
Kod:
Sub dd()
sonsat3 = ThisWorkbook.Sheets("Sayfa1").Cells(65536, "e").End(xlUp).Row
For x = 10 To sonsat3
If Cells(x, "E").Value = "Obstetrik US" _
Or Cells(x, "E").Value = "Obstetrik USG" _
Or Cells(x, "E").Value = "Suprapubik USG" _
Or Cells(x, "E").Value = "Suprapubik pelvik US" _
Or Cells(x, "E").Value = "Transvajinal USG" Then Cells(x, "O") = Cells(x, "G").Value / 34 * 17 Else Cells(x, "O") = Cells(x, "G").Value
Next x
For x = 10 To sonsat3
Cells(x, "P") = Evaluate("SumProduct((=D10:D" & sonsat3 & "=D" & x & "),O10:O" & sonsat3 & ") & ")
Next x

End Sub
 

Ekli dosyalar

Merhaba
Kod:
Cells(x, "P") = Evaluate("=SumProduct((D10" & sonsat3 & "=D" & x & ")*(O10:O" & sonsat3 & ")) ")
Şeklinde dener misiniz_?
Formülü doğru çalıştığı düşünülmüştür.
Dosyada net bir açıklama göremedim. Net açıklama yaparsanız daha net cevaplar verebilirim.
 
Son düzenleme:
Merhaba
benim formül değer sizin formülünüz #AD? hatası veriyor.
Yapmak istediğim aşağıdaki formülü oluşturmaktı.
=TOPLA.ÇARPIM((D10:D72=D10)*(O10:O72))


Aşağıdaki şekilde dolaylı olarak çözülüyor.Ama sizin yaptığınız gibi olsa daha iyi olacak.
Kod:
'Cells(x, "P") = "=SumProduct((D10:D" & sonsat3 & "=D" & x & ")*(O10:O" & sonsat3 & "))"
'Cells(x, "P") = Cells(x, "P")
 
Teşekkürler
Kod çalışıyor.Bir sorum daha olabilir mi?

Dosyadaki 1.kodu (Sub dosyaları_birlestir_592) çalıştırınca dd makrosununda çalışması için call dd yapmaya çalışıyorum ama bunuda beceremedim.Bunu yani makro içinde makro çalıştırmayı nasıl yapabilirim.
 

Ekli dosyalar

Son düzenleme:
Teşekkürler
Kod çalışıyor.Bir sorum daha olabilir mi?

Dosyadaki 1.kodu (Sub dosyaları_birlestir_592) çalıştırınca dd makrosununda çalışması için call dd yapmaya çalışıyorum ama bunuda beceremedim.Bunu yani makro içinde makro çalıştırmayı nasıl yapabilirim.

Merhaba
Call dd yazmadan direk dd yazın işlem yapıyor.
Kod:
Sub dosyaları_birlestir_592()
Dim fso As Object, f As Object, dosya As String, fls As Object
Dim sonsat1 As Long, sonsat2 As Long, sonsat3 As Long, x As Long, sh As Worksheet, liste()

Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.getfolder(ThisWorkbook.Path & "\YENİ").Files
ThisWorkbook.Activate
ThisWorkbook.Sheets("Sayfa1").Select
Application.ScreenUpdating = False
Range("A:P").ClearContents
For Each fls In f
    If fso.GetExtensionName(fls) = "xlsx" Then
        If Workbooks.Open(fls).ReadOnly = True Then Workbooks(fls.Name).Close False
        For Each sh In Workbooks(fls.Name).Worksheets
            sonsat1 = sh.Cells(65536, "A").End(xlUp).Row
            If sonsat1 > 4 Then
                liste = sh.Range("a2:n" & sonsat1).Value
                sonsat2 = ThisWorkbook.Sheets("Sayfa1").Cells(65536, "e").End(xlUp).Row + 1
                ThisWorkbook.Sheets("Sayfa1").Range("e" & sonsat2).Resize(UBound(liste), 10) = liste
                sonsat4 = ThisWorkbook.Sheets("Sayfa1").Cells(65536, "e").End(xlUp).Row
                ThisWorkbook.Sheets("Sayfa1").Range("d" & sonsat2 & ":d" & sonsat4) = fls.Name
                'ThisWorkbook.Sheets("Sayfa1").Range("d" & sonsat2).Resize(UBound(liste)) = fls.Name
                  sonsat4 = ThisWorkbook.Sheets("Sayfa1").Cells(65536, "e").End(xlUp).Row
                  'ThisWorkbook.Sheets("Sayfa1").Selection.AutoFill Destination:=Range(Cells(sonsat2, "D"), Cells(sonsat4, "D"))
                  'ThisWorkbook.Sheets("Sayfa1").Selection.AutoFill Destination:="Range(D" & sonsat2 & ":D" & sonsat4 & ")"
                Erase liste
            End If
        Next sh
        Workbooks(fls.Name).Close False
    End If
Next fls
ThisWorkbook.Activate
ThisWorkbook.Sheets("Sayfa1").Select
'sonsat3 = ThisWorkbook.Sheets("Sayfa1").Cells(65536, "e").End(xlUp).Row
'For x = 10 To sonsat3
'If Cells(x, "E").Value = "Obstetrik US" _
'Or Cells(x, "E").Value = "Obstetrik USG" _
'Or Cells(x, "E").Value = "Suprapubik USG" _
'Or Cells(x, "E").Value = "Suprapubik pelvik US" _
'Or Cells(x, "E").Value = "Transvajinal USG" Then Cells(x, "O") = Cells(x, "G").Value / 34 * 17 Else Cells(x, "O") = Cells(x, "G").Value
'Next x

Application.ScreenUpdating = True
A_Selected_Insert_Rows
dd
End Sub
 
Teşekkür ederim
 
Geri
Üst