vba - SumIf 语句 - 复杂的标准
问题描述
这是我的故事。下面的代码将计算从第 84 行开始的所有行,这些行在 R 列中具有“1”,在 K 列中以“B”开头,在 L 列中以“98(宏)”或“98”开头。
B_black = Application.Sum(Application.SumIfs(Range("R84:R" & LastRow), Range("R84:R" & LastRow), "1", Range("K84:K" & LastRow), "B*", Range("L84:L" & LastRow), Array("98 (macro)", "98")))
我不需要使用该标准计算行数,而是需要它实质上对列 R 中的匹配数量求和。之前,列 R 中的值要么是“1”,要么是 null。现在,它可以为 null 或 1-9。我怎样才能做到这一点?
编辑:我将有几十个这样的陈述。我已经把它们都写出来了。我希望我可以在每个语句中做一个小的更改,以计算符合条件的行中 R 列中的数量。
解决方案
如果您想对R列中的值求和,而不仅仅是计算行数,那么:
Sub Robby()
Dim B_black As Long, n As Long, i As Long
B_black = 0
n = Cells(Rows.Count, "R").End(xlUp).Row
For i = 83 To n
If Left(Cells(i, "K").Value, 1) = "B" And (Cells(i, "L").Value = 98 Or Cells(i, "L").Value = "98 (macro)") Then
B_black = B_black + Cells(i, "R").Value
End If
Next i
End Sub
不需要使用工作表函数。
编辑#1:
如果您已经在工作表单元格中有方程式,那么您已经完成了 75%。
假设我们正在使用:
=VLOOKUP(B1 & B2,F1:J16,2,FALSE)
在一个单元格中。要在 VBA 中执行此操作,请编写如下代码:
Sub DoItInAMacro()
Dim s As String
s = Evaluate("=VLOOKUP(B1 & B2,F1:J16,2,FALSE)")
MsgBox s
End Sub
推荐阅读
- selenium - 可以清除 Selenium IDE 中的日志
- python - Python - 使用正则表达式编写模仿 strip() 方法的函数
- google-analytics - 如何在谷歌分析中查找搜索词历史
- python - glVertexAttribPointer 给出 NameError: name 'ArrayDatatype' is not defined?
- excel - 将一维数组转换为动态维数组的最佳 VBA 方法是什么?
- javascript - react js在每一行中分别显示数据
- blueprism - 如何使用代码单击 BluePrism 中的按钮
- node.js - npm 没有安装 node-gyp,错误:'class v8::Object' 没有名为 'ForceSet' 的成员
- python - 如何提取特定键的值,并使用 Python 将其添加到变量中?
- bash - 在创建处理多个身份验证提示的 bash 脚本时需要帮助