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

时间:2009-02-05 10:35:39

标签: excel-formula

我在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")来实现此目的,但我想知道是否有办法在不添加额外列的情况下执行此操作。

我意识到这是人们可能会考虑编程的边缘,但希望它只是在线的右侧,而不是错误的一面。

6 个答案:

答案 0 :(得分:19)

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

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

非常非常 重要部分,是在您输入公式后按CTRL-SHIFT-ENTER而不是ENTER。否则,它不会理解您希望将数据视为数组。

答案 1 :(得分:1)

有一个解决方案,但它仍然涉及2个额外的单元格:DCOUNT。

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

A1:条件

A2:= B4&GT; A4

A3:A

B3:乙

A4:700

B4:5000

A5:700

B5:600

A6:7000

B6:6000

A7:700

B7:701

具有计数公式的单元格:= DCOUNT(A3:B7,“B”,A1:A2)

答案 2 :(得分:1)

实际上这是我 对程序做的事情。

创建一个宏:

  • 插入C列。
  • 将范围(“cN”)。值设置为“= bN-aN”,对于所有N,其中范围(“aN”)。值&lt;&gt; “”。
  • 进行你的countif计算并将其推入一个单元格( C列)。
  • 删除C列。

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

答案 3 :(得分:0)

抓手解决方案没问题。但为了好玩,

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

=myOwnFunction(A1:A5,B1:B5)

这种方法可以扩展到任何其他逻辑功能,例如A * B + C&lt; 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

答案 4 :(得分:0)

Shalom的Arrayformula解决方案确实很好,但是我无法使其与嵌入IF的AND函数一起使用,因此我不得不找到另一个解决方案,最后我找到了它!

=ROWS(FILTER(A1:B4, A1:A4 > B1:B4))

这解决了问题中的原始问题。另一方面,您可以使用多个条件,必要时在其他函数中使用过滤范围本身。

(这是Google表格解决方案,尚未在Excel中尝试过)

答案 5 :(得分:0)

我会使用 sumproduct。

=sumproduct(--(B:B>A:A))

给出正确答案 3