【问题标题】:Count cells with certain values which appear between cells with other values计算出现在具有其他值的单元格之间的具有某些值的单元格
【发布时间】:2020-05-13 15:43:57
【问题描述】:

我在 Excel 中有一行这样的数字模式(每个数字在不同的单元格中)。

1 0 0 0 2 0 0 1 0 0 0 0 0 3 0 0 0 0 0 0 0 0 2 0 0 0 1

(我的行有 300 个单元格)。

定义:

  • 我将非零值之间的零序列称为“0 序列”。
  • 我将标记 0 序列开始和结束的非零值称为“标记值”

我要计算:

  • 对0序列计数0的个数。在上面这个例子中,结果是:3,2,5,8,3
  • 确定最小的 0 序列。在上面的例子中,它是 2
  • 确定最大的 0 序列。在上面的例子中,它是 8
  • 确定每个0序列的频率。在上面的例子中是:

    • 整行长度为1的0序列个数:0

    • 长度为2的整行0序列个数:1

    • 整行长度为3的0序列个数:2

    • 长度为4的整行0序列个数:0

    • 整行长度为5的0序列个数:1

    • 整行长度为6的0序列个数:0

    • 整行长度为7的0序列个数:0

    • 长度为8的整行0序列个数:1

我尝试了不同的 Excel 公式,例如:

=ABS(MATCH(D13, B2:B11, 0)-MATCH(D14, B2:B11, 0))-1

此公式不适用于具有相同值的标记值(“D13”、“D14”)。它也不会为多个 0 序列计算它。

任何提示,最好没有 VBA,将不胜感激。

【问题讨论】:

  • 我发现的 Google 结果是将单元格值与参考值进行比较,独立于其他单元格值(例如,一行/列/矩阵中有多少个值为 x 的单元格?大于/小于 y 的值在行/列/矩阵中?)。我找不到考虑单元格值之间依赖关系的机制。

标签: excel excel-formula sequence


【解决方案1】:

假设您的值在 A1:AA1 中并且外部值是 0:

获得正确频率的核心:

=FREQUENCY(IF(B1:Z1=0,COLUMN(B1:Z1)),IF(B1:Z1=0,"",COLUMN(B1:Z1)))

这将评估为一个数字数组 > 3,2,5,8,3

  • 序列计数(在我的示例中返回到B3):

    =TEXTJOIN(",",1,FREQUENCY(IF(B1:Z1=0,COLUMN(B1:Z1)),IF(B1:Z1=0,"",COLUMN(B1:Z1)))
    
  • 最小序列(返回B4):

    =MIN(FREQUENCY(IF(B1:Z1=0,COLUMN(B1:Z1)),IF(B1:Z1=0,"",COLUMN(B1:Z1))))
    
  • 最大序列(返回B5):

    =MAX(FREQUENCY(IF(B1:Z1=0,COLUMN(B1:Z1)),IF(B1:Z1=0,"",COLUMN(B1:Z1))))
    
  • 每个频率的计数(返回B5:B13):

    =COUNT(FILTERXML("<t><s>"&SUBSTITUTE(B$3,",","</s><s>")&"</s></t>","//s[.='"&ROW(A1)&"']"))
    

或者如果您没有选择使用TEXTJOIN 代替B3

=SUM(IF(FREQUENCY(IF(B$1:Z$1=0,COLUMN(B$1:Z$1)),IF(B$1:Z$1=0,"",COLUMN(B$1:Z$1)))=ROW(A1),1,0))

向下拖动...

注意:所有这些公式都是通过CtrlShiftEnter

输入的数组

如您所见,我通过设置返回值的方式对您的查询进行了一些修改。

如果您愿意等待一段时间,我相信有人可以想出更简单的东西(也许使用 Excel O365 及其 DA-Functions)

【讨论】:

  • 谢谢@JvdV,非常感谢。
猜你喜欢
  • 2019-10-23
  • 1970-01-01
  • 1970-01-01
  • 2011-08-12
  • 1970-01-01
  • 1970-01-01
  • 2018-05-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多