【问题标题】:Calculate current streak in Excel row计算 Excel 行中的当前条纹
【发布时间】:2019-08-24 21:19:24
【问题描述】:

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

连续为 4 的示例数据集

1 0 1 0 1 1 1 1 0

有没有一种简单的方法可以做到这一点?我已经尝试过研究,但找不到任何具体的东西。

任何帮助将不胜感激。

【问题讨论】:

  • 我们可以使用辅助列吗?
  • 您是使用独立的 excel(2013 年及更早版本)还是使用 365 版本? (365有额外的公式,这就是我好奇的原因)
  • 我使用的是office 365,如何使用辅助栏?
  • 尽管stackoverflow.com/questions/30633434/… 很难改进这些答案

标签: excel excel-formula conditional


【解决方案1】:

假设您的数据像下图那样水平布局,以下两个公式应该可以为您解决问题。

第一个单元格需要不同的公式,因为左侧没有单元格可以引用。所以在 B2 中输入了一个简单的公式来检查第一个单元格是否为一个。

=--(A1=1)

括号中的部分要么为真,要么为假。 excel的一个怪癖是,如果您通过数学运算发送一个真或假值,它将被转换为1代表真,0代表假。这就是为什么你会看到前面的双倍。最后也可以做 *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】:

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

在单元格 C3 中,我输入了这个公式:

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

把这个拖到C8,然后取C列的最大值。

【讨论】:

  • 仅供参考,使用您的公式,如果 B2 到 B8 中的所有值都是 0,那么您最长的连续 1 秒是多少?
  • @ForwardEd:你是对的。如果只有零,则公式返回 1,这似乎是错误的。另一方面,这可以被Maximum() 捕获:只需取列的总和即可。如果为零,则结果应返回零,否则应返回公式列的最大值。
【解决方案3】:

这是一种只使用一个公式的方法,不需要辅助列/行:

使用的公式转换为:

{=MAX(FREQUENCY(IF(B1:K1=1,COLUMN(B1:K1)),IF(B1:K1=1,0,COLUMN(B1:K1))))}

注意:这是一个数组公式,需要通过CtrlShiftEnter

输入

【讨论】:

  • 谢谢,这正是我所追求的!当我可以在 Windows 上运行 Office 365 时,我会尝试一下。 (不允许我从浏览器添加数组公式)
猜你喜欢
  • 1970-01-01
  • 2023-03-27
  • 1970-01-01
  • 1970-01-01
  • 2018-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多