我有一个带有数值和空白记录的表。我正在尝试计算不为空且大于20的行数。
+--------+
| VALUES |
+--------+
| 2 |
| 0 |
| 13 |
| 40 |
| |
| 1 |
| 200 |
| 4 |
| 135 |
| |
| 35 |
+--------+
我尝试了不同的选项,但不断收到下一个错误:“无法将Text类型的value转换为Number类型”。我知道空白单元格被视为文本,因此我的过滤器(> 20)不起作用。将空格转换为“ 0”不是一种选择,因为我以后需要使用相同的值来计算AVG和中位数。
CALCULATE(
COUNTROWS(Table3),
VALUE(Table3[VALUES]) > 20
)
或得到“ 10”的结果:
=CALCULATE(
COUNTROWS(ALLNOBLANKROW(Table3[VALUES])),
VALUE(Table3[VALUES]) > 20
)
示例表中的最终结果应为:4
感谢您的帮助!
答案 0 :(得分:1)
首先,VALUE
函数需要一个字符串。它将"123"
之类的字符串转换为整数123
,所以我们不要使用它。
最简单的方法是使用COUNTX
之类的迭代器函数。
CountNonBlank = COUNTX(Table3, IF(Table3[Values] > 20, 1, BLANK()))
请注意,由于BLANK()
的值为BLANK() > 20
,因此我们不需要为False
(空)加上大小写。
还有很多其他方式可以做到这一点。另一个迭代器解决方案是:
CountNonBlank = COUNTROWS(FILTER(Table3, Table3[Values] > 20))
您可以在FILTER
内使用相同的CALCULATE
,但这并不那么优雅。
CountNonBlank = CALCULATE(COUNT(Table3[Values]), FILTER(Table3, Table3[Values] > 20))
修改
我不建议使用CALCULATE
版本。如果您有更多列且条件更多,只需将其添加到FILTER
中即可。例如
CountNonBlank =
COUNTROWS(
FILTER(Table3,
Table3[Values] > 20
&& Table3[Text] = "xyz"
&& Table3[Number] <> 0
&& Table3[Date] <= DATE(2018, 12, 31)
)
)
您也可以使用||
进行“或”运算,而不用使用&&
进行“与”运算。