代码之家  ›  专栏  ›  技术社区  ›  Ben

我可以在两列上使用countif比较值吗?

  •  8
  • Ben  · 技术社区  · 17 年前

    我在Excel中有两列,如下所示:

     A   B
    0.5  0.4
    0.6  0.59
    0.1  0.2
    0.3  0.29
    

    我想计算B中有多少值小于A中相应的值。在这种情况下,答案是3。

    我可以通过添加一个额外的列来做到这一点, B-A 然后做 COUNTIF(RANGE, "<0") 但是我想知道是否有一种方法可以做到这一点而不需要添加额外的列。

    我知道这是在人们可能认为编程的边缘,但希望它只是在行的右侧,而不是在错误的一侧。

    4 回复  |  直到 14 年前
        1
  •  19
  •   Shalom Craimer    17 年前

    这可以使用Excel数组公式完成。尝试这样做:

    =SUM(IF(A1:A5 > B1:B5, 1, 0))
    

    非常 非常 重要的 部分,是要按 CTRL-SHIFT-ENTER 而不仅仅是 ENTER 输入完公式后。否则,它将无法理解您要将数据视为数组。

        2
  •  1
  •   FM.    17 年前

    有一个解决方案,但它仍然涉及两个额外的单元:数据计数。

    以下是一个示例(将冒号后的准确文本插入指定单元格):

    A1:条件

    A2:=B4>A4

    A3: A

    B3:B

    A4:700

    B4:5000

    A5:700

    B5:600

    A6:7000

    B6:6000

    A7:700

    B7:701

    计数公式为:=d计数的单元格(a3:b7,“b”,a1:a2)

        3
  •  1
  •   paxdiablo    17 年前

    实际上这是我 做一个程序。

    创建宏以:

    • 插入C列。
    • 对于所有n个where range(“an”),将range(“cn”).value设置为“=bn an”。value<gt;“”。
    • 计算一下,然后把它塞进一个牢房( C柱)。
    • 删除C列。

    可能有一种更简单的非编程方法,但我不知道(然后你的问题无论如何都会被解决)。

        4
  •  0
  •   Shalom Craimer    14 年前

    Scraimer解决方案正常。但为了好玩,

    您还可以编写如下宏并指定

    =myOwnFunction(A1:A5,B1:B5)
    

    这种方法可以扩展到任何其他逻辑函数,如a*b+c<c+d*e等。

    Function myOwnFunction(R1 As Range, S1 As Range)
    
       Dim J As Integer
    
       Dim Size As Integer
    
       Dim myCount As Integer
    
    
       Size = R1.Cells.Count
    
       myCount = 0
    
           For J = 1 To Size
    
               If (R1.Cells(J) > S1.Cells(J)) Then
    
                myCount = myCount + 1
    
               End If
    
           Next J
    
    
        myOwnFunction = myCount
    
    End Function
    
    推荐文章