在范围内计数负数

时间:2017-08-17 01:09:52

标签: google-sheets countif

我正在尝试使用Google表格中的*功能计算特定数值范围内包含COUNTIFS的出现次数。该函数适用于正范围,但在添加负数时失败。我试图逃避消极和添加parens但似乎没有任何作用。

Works - 正确返回值1,因为0.01 *介于0和.1之间并包含*

0.01*
.8*
*
-0.08
-0.08*
=COUNTIFS(J62:J66, ">0.000\*",J62:J66, "<0.1\*")

不起作用 - 预期返回值为1,因为-.08 *介于0和-1之间,并且包含*

-.3*
-.8*
-*
-0.08
-0.08*
=COUNTIFS(H62:H66, ">-0.1\*",H62:H66, "<0.000\*")

编辑以解决@pnuts评论

如果我将-.3*更改为-0.3*而将-.8*更改为-0.8*,则该函数会返回值2,这不是我所期望的。

2 个答案:

答案 0 :(得分:0)

问题是 负范围。问题只是*部分。

  

Works - 正确返回值1,因为0.01 *介于0和.1之间并包含*

   0.01*
   .8*
    *
    -0.08
    -0.08*
   =COUNTIFS(J62:J66, ">0.000\*",J62:J66, "<0.1\*")

这不起作用。它只给你1个,因为第4个条目-0.08没有*。这满足J62:J66, "<0.1\*",但不满足J62:J66, ">0.000\*".因此总共有1个到达。要进行测试,只需将第四个数字更改为-0.08*,您就不会获得1.这不是because 0.01* is between 0 and .1 and contains an *

您无法在countif中使用*。只需替换*COUNTIF就能很好地发挥作用。

       B1 =ARRAYFORMULA(--REGEXREPLACE(T(A1:A5),"\*",""))

这将从您的所有文本中删除*并将其放在帮助列B中。对于没有*的人,将会出现错误。但那没关系,因为你只想用那些数字来计算这些数字。现在只需在B列上使用COUNTIF

答案 1 :(得分:-1)

        = ARRAYFORMULA(COUNTIFS(ROUND(--REGEXEXTRACT(T(A1:A5),"((?:\+|\-){0,1}(?:\d+){0,5}(?:\.\d+))(?:\*)"),2),">0.0",ROUND(--REGEXEXTRACT(T(A1:A5),"((?:\+|\-){0,1}(?:\d+){0,5}(?:\.\d+))(?:\*)"),2),"<=0.8"))

这应该有效。原始公式的问题是:您不能将文本用作数字。应从文本中提取数字并计算。