【问题标题】:Sum range with sumif for criteria from InputBox使用 sumif 对 InputBox 中的条件求和范围
【发布时间】:2020-05-08 09:18:32
【问题描述】:

我想对列中的一系列行求和,对于来自 InputBox 的条件输入值,其值等于或小于输入值。它在 excel 电子表格中很简单,例如=SUMIF(A2:A20;"

Dim A, B, AB As Variant
Dim criteriaRng As Range
Dim sumRng As Range


A = Application.InputBox("Enter the amount of A per year", "A", "A/year", Type:=1)
Worksheets("Sheet").Range("M12").Value = A
B = Application.InputBox("Enter the amount of years B", "B", "Years", Type:=1)
Worksheets("Sheet").Range("N12").Value = B
AB = Worksheets("Sheet").Cells(12, 13) * Worksheets("Sheet").Cells(12, 14)
Worksheets("Sheet").Range("O12").Value = AB

Set criteriaRng = Worksheets("Sheet2").Range("A2:A20")
Set sumRng = Worksheets("Sheet2").Range("C2:C20")

Worksheets("Sheet").Range("P12").Value = WorksheetFunction.SumIf(criteriaRng, "<= AB", sumRng)

End Sub```


【问题讨论】:

  • 试试WorksheetFunction.SumIf(criteriaRng, "&lt;= " &amp; AB, sumRng)

标签: excel vba


【解决方案1】:

您当前在字符串中使用了您的变量,因此 VBA 无法识别该变量。沟,AB 变量一起使用:

Worksheets("Sheet").Range("O12").Value = A*B

&

Worksheets("Sheet").Range("P12").Value = WorksheetFunction.SumIf(criteriaRng, "<=" & A*B, sumRng)

旁注:Dim A, B, AB As Variant 将使所有三个变量变暗为Variant。但是,您正在返回 Type:=1 数据(数字),因此请更改为 DoubleLong。此外,您当前使用的构造应该是Dim A as Long, B as Long, AB As Long,以防止前两个再次变为Variant

【讨论】:

  • 感谢您的回答,上面的答案没有问题,如果您知道的话,您的解决方案和 FunThomas 的解决方案有什么区别 - 语法方面。
  • 主要区别是使用另一个变量> AB。两种选择都很好。我只是选择刮掉那个变量,因为你只使用了两次@mauss。很高兴它对你有用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多