2013-11-28 43 views
2

我正在使用Excel 2010 VBA執行一些SumIfs,並且我需要它執行負SumIfs。如何使用Worksheet在VBA中執行負SumIfs功能

這裏是VBA代碼,其中我需要它執行負SUMIFS的樣品:

'Define the Vidir Machine Income and Trail Balance ranges 
Dim vmIncRng As Range, trBalRng As Range, VMI As Worksheet, TRL As Worksheet 

Set VMI = Sheets("VM Income") 
Set TRL = Sheets("Exec Trial Balance") 

'Define my Ranges 
Set vmIncRng = Sheets("VM Income").Range("S4:S52") 
With Worksheets("Exec Trial Balance") 
    Set trBalRng = .Range("a2", .Range("F2").End(xlDown)) 
End With 

'Overwrite YTD with summed values from Trial Balance 
Dim sumVal As Double 
For Each c In vmIncRng 
    If c.Value <> "" Then 
     'Excel Formula: =-SUMIFS('Exec Trial Balance'!E:E,'Exec Trial Balance'!F:F,S6,'Exec Trial Balance'!A:A,"Arborg",'Exec Trial Balance'!B:B,"m1") 
     'I need the following line to perform the negative sum   
     sumVal = Application.WorksheetFunction.SumIfs(TRL.Range("E:E"), TRL.Range("F:F"), c, TRL.Range("A:A"), "Arborg", TRL.Range("B:B"), "m1") 
     c.Offset(0, 1).Value = sumVal 
    End If 
Next c 

當使用一個公式來執行負SUMIFS我只需添加一個 - 在像這樣的SUMIFS的前=-SumIfs(.....如何在VBA中執行此操作?

任何幫助或建議將不勝感激。

+4

你的意思是這樣'sumVal = - 1個* Application.WorksheetFunction.SumIfs(....)' –

+0

@SiddharthRout謝謝你,是沒有的伎倆! – Cornelius

回答

2

感謝Siddharth Rout。

相反的:

sumVal = Application.WorksheetFunction.SumIfs(TRL.Range("E:E"), TRL.Range("F:F"), c, TRL.Range("A:A"), "Arborg", TRL.Range("B:B"), "m1")

我的Application.WorksheetFunction前加入-1 *

sumVal = -1 * Application.WorksheetFunction.SumIfs(TRL.Range("E:E"), TRL.Range("F:F"), c, TRL.Range("A:A"), "Arborg", TRL.Range("B:B"), "m1")

+0

+ 1我希望你瞭解它背後的邏輯? –

+0

是的,我相信我是。 – Cornelius

+0

Kool ........ :) –