我在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")
来完成此操作,但我想知道是否有一种方法可以不添加额外的列就实现此操作。
我意识到这可能不完全属于编程范畴,但希望它能够站在正确的一边而不是错误的一边。
我在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")
来完成此操作,但我想知道是否有一种方法可以不添加额外的列就实现此操作。
我意识到这可能不完全属于编程范畴,但希望它能够站在正确的一边而不是错误的一边。
这可以通过使用Excel数组公式来完成。尝试做类似于以下的操作:
=SUM(IF(A1:A5 > B1:B5, 1, 0))
非常重要的一点是,在输入公式后,一定要按下CTRL-SHIFT-ENTER
而不是只按ENTER
。否则,Excel将无法理解你希望将数据作为数组处理。
实际上,这是我会使用程序完成的事情。
创建一个宏来:
可能有更简单的非编程方法,但我不知道它(然后你的问题无论如何也会被关闭)。
Shalom的Arrayformula解决方案非常好,但是我无法将其与嵌入到IF函数中的AND函数配合使用,因此我不得不寻找另一种解决方案,最终我找到了它!
沙洛姆的Arrayformula方案确实很好,但是我无法在其中嵌入AND函数。因此,我不得不寻找另一个解决方案,并最终找到了它!
=ROWS(FILTER(A1:B4, A1:A4 > B1:B4))
有一个解决方案,但仍需要额外使用两个单元格: 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)
我会使用SUMPRODUCT函数。
=sumproduct(--(B:B>A:A))
返回正确答案3
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