我有一个 Excel 文件,我已对其执行了操作。我现在有一列,其值要么为 1,要么为 0。
我需要做什么来计算连续序列中出现的“1”的数量。
我的数组如下所示:
1
0
0
0
1
1
1
1
1
0
1
1
0
我需要提取的是我们看到连续 5 个 1,然后连续 2 个 1。我该怎么做?
答案1
这并不优雅,但它可以工作:
在你的“1”和“0”列之后,
制作第二列:
0
=(A2+B1)*A2 <-- You can just drag-fill this downward
=(A3+B2)*A3
=(A4+B3)*A4
.
.
.
...并制作第三列:
0
=SUMIF(B3,0,B2) <-- You can just drag-fill this downward as well
=SUMIF(B4,0,B3)
=SUMIF(B5,0,B4)
.
.
.
第三列将显示每组中“1”的数量,以及运行中最后一个“1”旁边的总和。
答案2
使用计数函数可以告诉 Excel 计算给定范围内特定条件的出现次数。
COUNTIF(range,criteria)
假设您的数据在 A 列和第 1 至 13 行,您将使用以下内容来计算“1”出现的次数。
=COUNTIF(A1:A13, 1)
将范围调整为您想要计算的范围,并将标准调整为您想要计算的内容。
答案3
我遇到了类似的问题。我的方法很丑陋且效率低下,但确实有效。
我制作了第二列,查看相邻单元格的值是否是我想要的,如果是,则给出第二列中其上方单元格的值 0+ 的数字。
我创建了第三列,其中每个单元格查看第二列中的相邻单元格,如果值大于其下方的值,则将第三列中最大值的值赋给该单元格所在行。如果不是,则它会输出一个空值 ("") 这样,我就可以放置一个连续的标识符编号。
我制作了第四列,查看第 3 列中的相邻单元格,如果它是除空白以外的任何值,则放置第 2 列中该行的值。
然后我创建了第五列,从 1 开始,每一行都比前一行高一行,直到第 3 列的最大值。
最后,我制作了第六列,并使用了查找功能。查找值将是第 5 列中的相邻单元格。范围将是第 3 列和第 4 列。我会让它从第 4 列中取出值。
我将一系列相同的值定义为一次运行。第 5 列中的每个数字代表一次运行。第 6 列中的每个数字代表该运行的大小。这允许您生成每次运行的大小。
就像我说的,这是一种很糟糕的解决方法,用 VBA 可能可以写得更干净,但它是有效的。
答案4
不要把它想象成计数连续的数字。把它想象成找到第一个 0 的位置。
=匹配(0,A1:A14,0)-1
向下拖动公式,让范围随着向下拖动而调整。它将为您提供数据中任意给定点的连续 1 的数量。