确定相等项数组的大小 Excel

Determine Size Of Array of Equal Items Excel

我有一个看起来像这样的数组

11100100110

本质上,一个固定大小的数组,每一项为 1 或 0,最后一项始终等于 0。

将每组连续的 1 视为一个“桶”。我想要一个公式来确定每个桶的大小。所以上面序列的这个公式的输出应该是

312

作为数组。理想情况下,这适用于 excel 和 google 工作表。

如果您有兴趣,这是 stars and bars 配置列表的结果,其中我序列中的 0 代表条,1 代表星(最终值是虚拟 0 以使事情更容易工作和)。我想要在给定的星形和条形配置中每个非空桶的大小。

提前致谢。

尝试:

=INDEX((JOIN(, LEN(SPLIT(A1, 0)))))


更新:

=INDEX(IFERROR(1/(1/SUBSTITUTE(FLATTEN(QUERY(TRANSPOSE(IFERROR(1/(1/
 LEN(SPLIT(SUBSTITUTE(FLATTEN(QUERY(
 TRANSPOSE(A1:K),, 9^9)), " ", ), 0))))),, 9^9)), " ", ))))

您也可以将标准方法与频率一起使用,它将与 Excel 365 和 GS:

一起使用
=FILTER(FREQUENCY(IF(A1:A11=1,ROW(A1:A11)),IF(A1:A11=0,ROW(A1:A11))),FREQUENCY(IF(A1:A11=1,ROW(A1:A11)),IF(A1:A11=0,ROW(A1:A11))))

假设A2:A9包含数据,

=ARRAYFORMULA(QUERY(FREQUENCY(IF(A2:A9,ROW(A2:A9)),IF(NOT(A2:A9),ROW(A2:A9))),"where Col1>0",))
  • FREQUENCY(data,classes)得到dataclasses
  • 中的频率
  • 如果1
  • ,则将行号顺序设为data
  • 如果不是1
  • ,则将行号顺序设为classes
  • QUERY 去掉零