2015-07-11 5 views
0

Я новичок в vba, я хочу знать, как реализовать формулу (sumproduct) на excel to vba. Формула получает значение из других листов в книге. Формула такова:Sumproduct на другом листе

=((SUMPRODUCT(-(Details!$C$7:$C$1182=A3),-(Details!$E$7:$E$1182=B3), -(Details!$S$7:$S$1182="Delivered"), -(Details!$G$7:$G$1182=C3), Details!$N$7:$N$1182))) 

Это мой код;

Private Sub ATO() 

Dim ws1 As Worksheet 
Dim wb1 As Workbook 
Dim last As Long 
Dim i As Integer 

Set wb1 = ThisWorkbook 
Set ws1 = wb1.Worksheets("Summary") 

last = ws1.Cells(Rows.Count, "A").End(xlUp).Row 

ws1.Range("I2:I" & last) = Application.SumProduct(?) 

End Sub 

Действительно ли мой код на правильном пути? Любой ответ будет оценен по достоинству.

ответ

0

Да вы на правильном пути, однако, если вы звоните функцию первенствовать в VBA, вы должны использовать Application.WorksheetFunction Например для вашей проблемы Application.WorksheetFunction.sumif() Существует одно исключение, имейте в виду, что, если та же функция существует в VBA, то вы не может использовать версию excel с WorksheetFunction. Поэтому, если вы не найдете функцию в рабочей таблице, попробуйте ее без нее. Удачи! Если что-то не работает, и я постараюсь помочь!

+0

Спасибо за ваш ответ. Как я могу реализовать формулу на vba? – iamjf

+0

Btw, моя проблема не о sumif, его о sumproduct. Виноват. – iamjf

+0

Хмм, я не совсем уверен, что хорошо понимаю вас, если вы хотите использовать результат формулы, например, использовать результат формулы suimifs, тогда вы просто делаете это, как я писал выше, например, Application.WorksheetFunction.sumif() это разница, когда вы хотите изменить формулу ячейки. Я думаю, что было бы более ясно, если бы вы прочитали два ресурса: Это вышеупомянутая документация рабочей таблицы .sumif от Microsoft: https://msdn.microsoft.com/en-us/library/office/ff193011.aspx Но это может быть более полезно для вас: https://colinlegg.wordpress.com/2012/04/08/sumif-from-vba/ – Phonebox

Смежные вопросы