我在 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
否则它将无法理解您要将数据视为数组。
Shalom 的 Arrayformula 解决方案非常好,但我无法使其与嵌入 IF 的 AND 函数一起使用,所以我不得不寻找另一个解决方案,终于找到了!
=ROWS(FILTER(A1:B4, A1:A4 > B1:B4))
这解决了问题中的原始问题。另一方面,您可以使用多个条件,如有必要,在其他函数中使用过滤范围本身。
(这是一个 Google Sheet 解决方案,没有在 Excel 中尝试过)
有一个解决方案,但它仍然涉及 2 个额外的单元格: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)
实际上,这是我会用程序做的事情。
创建一个宏来:
可能有一种更简单的非编程方式,但我不知道(然后你的问题无论如何都会被关闭)。
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
我会使用 sumproduct。
=sumproduct(--(B:B>A:A))
给出正确答案 3