我正在使用 Excel 2010 VBA 执行一些 SumIf,我需要它来执行负 SumIf。
以下是 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
当使用公式执行负 SumIf 时,我只需在 SumIf 前面添加一个 -,如下所示 =-SumIfs(.....
如何在 VBA 中执行此操作?
任何帮助或建议将不胜感激。
最佳答案
感谢 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")
关于vba - 如何使用 Worksheet.Function 在 VBA 中求负 SumIf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20272939/