【问题标题】:Excel to calculate if values in ranges meet certain criteria using VBAExcel 使用 VBA 计算范围中的值是否满足某些条件
【发布时间】:2013-03-18 21:21:25
【问题描述】:

我在 excel 中有两个范围,比如说:

x   |    y
------------
 5  |   -1
46  |   -4
 2  |    1
67  |   -1
22  |    1
 6  |    0
34  |    0
 7  |   -2

仅当第一列中的相应值小于 10 时,我才想计算小于 O 的第二列的总和(即 i<0x(i)<10sum(y(i))。因此,在这种情况下,总和将为 -3。

【问题讨论】:

  • 您是否尝试将其放入SUMIF 语句中?
  • 是“小于 O”,如某个数字 O 或 0,如零?
  • 对不起,我的意思是 0,就像零一样

标签: excel vba if-statement range


【解决方案1】:

假设您的标题在 A1:B1 中并且您的数据是 A2:B9 使用这个:

=SUMIFS(B2:B9,A2:A9,"<10",B2:B9,"<0")

【讨论】:

  • 感谢。但这怎么可能,因为 x(i)=1 然后 y(i)=-1 和 x(i)=7 然后 y(i)=-2。因此总共 -3
  • 我在工作表中输入了错误的数据 - 如果数据正确,它可以正常工作。 :o)
【解决方案2】:

试试类似的东西

Function calc() AS Integer

    Dim sum AS Integer: sum = 0
    Dim c AS Range

    For Each c In ThisWorkbook.Worksheets(1).Range("A1:A15")
        If c.Value < 10  And c.Offset(0, 1).Value < 0 Then
            sum = sum + c.Offset(0, 1).Value
        End If
    Next c

    calc = sum

End Function

【讨论】:

  • 感谢您的及时答复。但是,如果我们假设 range("a1:a15") 是第一列,那么偏移函数是否不会从右列的单元格中获取值?在这种情况下,它只会满足一个不是我想要的标准!此外,如何在不使用偏移量的情况下进行计算。我更喜欢有我会命名的范围。谢谢
  • 我假设我想要这样的东西: Function data_range() As Integer Dim sum As Integer: sum = 0 Dim c As Range Dim y As Range For Each c In Range("range_x") If c .Value
  • 我发现宏不是必需的,因为我可以使用 =SUMIFS(range_x;range_y;"
  • 你可以使用Worksheet Functions WorksheetFunction.SumIfs(...)
  • 您想要一些代码将公式插入单元格还是在代码中做同样的事情?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-13
  • 2021-03-07
  • 1970-01-01
  • 1970-01-01
  • 2011-10-07
  • 1970-01-01
相关资源
最近更新 更多