vba - 如何使用 Worksheet.Function 在 VBA 中求负 SumIf

标签 vba excel excel-2010

我正在使用 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/

相关文章:

excel - 按字母顺序对多个列高行进行排序

excel - 如何从范围中仅复制excel vba中的值?

excel - 如何在 Excel 中重置工作表命名

arrays - 计算两个或多个空格后字符的位置

arrays - 将用户窗体中> 10列的多列列表框复制到数组

xml - 如何将工具提示添加到我的自定义 Excel 功能区 UI?

excel - 系统集合数组列表

vba - 对象不支持此属性vba

excel - 在 Excel 中使用变量名称查找另一张工作表上的值

vba - Select Case 语句不遵循整数变量值