提问人:MD2132 提问时间:10/31/2023 最后编辑:Foxfire And Burns And BurnsMD2132 更新时间:11/1/2023 访问量:65
Excel - 确定单元格区域中的零是否是结果的一部分
Excel - Determine if the zeros in a range of cells are part of the result or not
问:
我目前正在尝试在 Excel 中自动执行重心数据集的计步器。
提供的数据分为三列。第 1 列包含时间(始终以 5 为步长),而第 2 列和第 3 列包含 x 轴和 y 轴的值。这些值为人在一系列步骤中重心的移动方式创建了一条线(数据始终是右脚或左脚)。
在数据再次开始之前,数据集中的不同步骤(大多数每边大约需要 20 步)可以通过大范围的零(可能连续大约 70 个)看到。因此,如果两列都有数字,则我们处于第 1 步。如果两列各有大约 70 个零,那么我们处于暂停状态。一旦数字再次开始,我们就进入了第 2 步。这是新步骤的开始:
我被要求创建一个公式来自动执行步骤检测。由于传感器只检测到 0 的数字之间存在很大的差距,因此这不是太大的问题。我相信它可以做得更好,但我的理解有限。这是我的公式,最初的 1 是手动的,但随后它识别步骤 1(表示为 2):
然而,在进一步检查不同主题的数据集时,我意识到即使在步骤中,有时也会有一个或多个零,之后“正常”数字继续。这些零很重要,因为它们表明重心正在远离观察到的脚。我的公式现在将检测到新步骤的开始,这是错误的,因为我们仍然处于同一步骤中,即使重心已经短暂改变。正如你所看到的,零是步骤的一部分,但显然公式认为一个新的步骤已经开始:
只有 50 个主题,因此可以手动调整,因为公式会做很多工作。
但是,我想知道是否有一种智能的方法来调整公式以识别如果零的范围小于 10 行,那么我们仍然处于同一步骤,但如果范围更大,那么我们就处于暂停状态。
最初,我添加了一个 CountIF 条件,如果三行中只有一个零,则应忽略新步骤并保留旧步骤。但是,由于中心偏移通常需要三条以上的线,但永远不会超过五条线,因此我对这种检测是否可能感到茫然。快速中心偏移的示例,需要三条线才能让传感器重新拾取活动:
答:
非常具有挑战性您的需求。如果没有手动输入,我无法制作公式。我能得到的最好的方法是您需要手动设置数据的前 10 行,其值为 step(如果该零不是步骤的一部分,则为空)。
从 B1 到 B10 的单元格是手动输入:1 是因为这些值将是步骤 1,空白是因为这些零不是步骤 1 的一部分。然后在单元格 B11 中,我得到了这个公式:
=IF(A11<>0;IF(B10="";MAX($B$1:B10)+1;MAX($B$1:B10));IF(COUNTIF(A1:A10;0)+COUNTIF(A12:A21;0)>=10;"";MAX($B$1:B10)))
请注意,我用黄色突出显示了 8 个连续的零。因为 8 小于 10,所以公式认为它仍然是相同的步骤。该公式为不属于任何步骤的零返回空白,因此更容易查看每个步骤
评论
用值 1 填充 D 列中的前十个单元格,然后用其余行填充:。=IF(SUM(B2:B11)>0,D11,IF(B12=0,D11,D11+1))
(如果前十行中的任何一行不为零,则保持在同一步上;如果当前行为零,则 ALS 保持在同一步上,否则转到下一步。
地方:
在单元格 E1 中,分隔步骤的连续“零”行数
在单元格 D2 中,以下公式
=IF(SUM(OFFSET(B2;-MIN(ROW()-1;$E$1);0;MIN(ROW()-1;$E$1);2))=0;MAX($D$1:D1)+1;D1)
并将其向下拖动
评论