我有一个excel表格A1 = "YES"
,B1 = "YES"
和C1 = "YES"
。我想知道我的表中有多少“YES”,这可以通过=COUNTIF(A1:C1,"YES")
轻松解决,它会准确地给出3的答案。
A B C
1 YES YES YES
但是如果想知道在A1和C1中有多少“YES”而忽略了B1有什么变得棘手。同样的功能给了我3,而我希望它给我2作为答案,因为我想只计算A1和C1。
我想知道是否有办法管理数据,所以我只能使用那种非连续的单元格?我发现一个解决方案是使用类似=if(A1="YES",1)+if(C1="YES",1)
的东西,它就像一个魅力,因为它总能给我正确的答案;然而,这并不是一个令人满意的解决方案,因为尽管我的例子很简单,但我的实际情况需要从500个范围内写出大约100个单元格,这些单元格可能会变得有些沉重。
我尝试使用名称范围,但似乎if函数不允许我按照我想要的方式使用它们。所以任何帮助都会被贬低,谢谢。
答案 0 :(得分:0)
如果VBA是一个选项,那么" excel函数中的非连续范围"是问题,那么你可以创建一个User Defined Function
,它接受ParamArray
并从所有给定参数中返回一个数组。
实施例
Public Function getMatrix(ParamArray aValues() As Variant) As Variant
Dim i As Long
Dim aReturnValues() As Variant
For Each vValue In aValues
For Each vSingleValue In vValue ' possible the vValue is also an array
ReDim Preserve aReturnValues(i)
aReturnValues(i) = vSingleValue
i = i + 1
Next
Next
getMatrix = aReturnValues
End Function
然后可以使用它:
A4
中的公式:
=SUMPRODUCT(--(getMatrix(A1,C1,E1:G1,D2:E3)="Yes"))
注意,UDF
返回一个数组,而不是Range
。这就是为什么我们不能使用COUNTIF
。 COUNTIF
需要Range
作为第一个参数。
答案 1 :(得分:0)
为什么在Excel中有其他功能时要查找公式?添加一行(#2),并且A2 = 1,B2 = 0,C2 = 1直到最后一列[拖动它以填充,确保复制单元格]。然后选择行并查看状态栏中的总和。
答案 2 :(得分:0)
查看this主题。基本上你需要的是这样的东西:
=SUM(COUNTIF(INDIRECT({"A1:A10","C1:c10"}),"a"))
或者只使用多个COUNTIF,然后添加它们。 (Countif(...)+ countif(...)等。)