我在excel行中有一个1和0的列表,范围是B2:K2,我想计算单元格M2中1的当前条纹,
条纹为4的示例数据集
1 0 1 0 1 1 1 1 0
是否有一种简单的方法?我曾尝试研究,但未能找到任何具体的东西。
任何帮助将不胜感激。
答案 0 :(得分:4)
这是一种仅使用一个公式即可完成此操作的方法,不需要辅助列/行:
所用公式转换为:
{=MAX(FREQUENCY(IF(B1:K1=1,COLUMN(B1:K1)),IF(B1:K1=1,0,COLUMN(B1:K1))))}
注意:这是一个数组公式,应通过 Ctrl Shift Enter
输入答案 1 :(得分:2)
假设您的数据像下面的图片一样水平放置,则以下两个公式应该可以满足您的需求。
第一个单元格需要使用不同的公式,因为左侧的no单元格是不可引用的。因此在B2中输入了一个简单的公式来检查第一个单元格是否为一个。
=--(A1=1)
括号中的部分为true或false。 excel的一个怪癖是,如果通过数学运算发送的是true或false值,则它将转换为1表示true,0表示false。这就是为什么您在前面看到双重标记的原因。最后也可以完成* 1,/ 1,+ 0,-0。
在B2中放置以下公式,并根据需要复制:
=(A2+1)*(B1=1)
基本上将1加到序列中,然后检查序列中的数字是1还是0。如果是1,则保留通过数学运算符*发送的TRUE值。如果为假,则通过用数学运算符*乘以False来将序列设置回零。
现在上面的代码虽然可以正常工作并且可以保存一些字符,但对于大多数人来说并不一定很直观。转到选项将是使用IF函数。可以将以下公式替换为以下公式:
A3
=IF(A1=1,1,0)
B3 ->Copied right
=IF(B1=1,A3+1,0)
要获得最长的条纹,辅助行中的最大值就是您想要的。您可以在空白单元格中使用以下公式来获取它。
=MAX(2:2)
=MAX(A2,I2)
如果辅助行中没有其他数字,则可以使用在整个行中显示的第一个公式。例如,如果由于计算结果左右有其他数字,那么您将需要像第二个公式那样将范围限制为数据。
答案 2 :(得分:0)
我将这些值放在单元格B2到B8中。
在C3单元格中,我输入了以下公式:
=IF(AND(B3=1;B2=1);C2+1;1)
将其拖到C8,然后使用C列的最大值。