计算Excel行中的当前条纹

时间:2019-04-03 11:00:05

标签: excel excel-formula conditional

我在excel行中有一个1和0的列表,范围是B2:K2,我想计算单元格M2中1的当前条纹,

条纹为4的示例数据集

1 0 1 0 1 1 1 1 0

是否有一种简单的方法?我曾尝试研究,但未能找到任何具体的东西。

任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:4)

这是一种仅使用一个公式即可完成此操作的方法,不需要辅助列/行:

enter image description here

所用公式转换为:

{=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

现在上面的代码虽然可以正常工作并且可以保存一些字符,但对于大多数人来说并不一定很直观。转到选项将是使用IF函数。可以将以下公式替换为以下公式:

A3
=IF(A1=1,1,0)

B3 ->Copied right
=IF(B1=1,A3+1,0)

最长的条纹

要获得最长的条纹,辅助行中的最大值就是您想要的。您可以在空白单元格中使用以下公式来获取它。

=MAX(2:2)

=MAX(A2,I2)

如果辅助行中没有其他数字,则可以使用在整个行中显示的第一个公式。例如,如果由于计算结果左右有其他数字,那么您将需要像第二个公式那样将范围限制为数据。

POC

答案 2 :(得分:0)

我将这些值放在单元格B2到B8中。

在C3单元格中,我输入了以下公式:

=IF(AND(B3=1;B2=1);C2+1;1)

将其拖到C8,然后使用C列的最大值。