我能否使用COUNTIF函数来比较两列的值?

11

我在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个回答

21

这可以通过使用Excel数组公式来完成。尝试做类似于以下的操作:

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

非常重要的一点是,在输入公式后,一定要按下CTRL-SHIFT-ENTER而不是只按ENTER。否则,Excel将无法理解你希望将数据作为数组处理。


2

实际上,这是我会使用程序完成的事情。

创建一个宏来:

  • 插入列C。
  • 对于所有N,将range("cN").value设置为"=bN-aN",其中range("aN").value <> ""。
  • 进行countif计算并将其放入单元格中(而不是放在列C中)。
  • 删除列C。

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


2

Shalom的Arrayformula解决方案非常好,但是我无法将其与嵌入到IF函数中的AND函数配合使用,因此我不得不寻找另一种解决方案,最终我找到了它!

沙洛姆的Arrayformula方案确实很好,但是我无法在其中嵌入AND函数。因此,我不得不寻找另一个解决方案,并最终找到了它!

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

这解决了问题的最初回答。另外,如果需要,您可以使用多个条件,在其他函数中使用过滤后的范围本身。 (这是Google表格的解决方案,在Excel中尚未尝试)

正是我所需要的。提示:通过逗号分隔添加更多条件到FILTER函数中,例如FILTER(A1:A4, A1:A4 > B1:B4, NOT(ISBLANK(A1:A4)))。 - Sigmatics

1

有一个解决方案,但仍需要额外使用两个单元格: DCOUNT。

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

A1:条件

A2:=B4>A4

A3:A

B3:B

A4:700

B4:5000

A5:700

B5:600

A6:7000

B6:6000

A7:700

B7:701

包含计数公式的单元格:=DCOUNT(A3:B7,"B",A1:A2)


完美——完成了任务。谢谢!我以前从未接触过DCOUNT。 - Ben
抱歉:我之前已经接受了你的回答,但实际上scraimer的答案对我更好一些。 - Ben
我同意,数组公式是一个很好的东西要知道!(直到现在我才知道它们)。 - FM.

0

我会使用SUMPRODUCT函数。

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

返回正确答案3


0

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接