不知道如何处理这个问题。我有一个列(列A),其中有一个时间列表。该列有许多不一致之处,因此并非所有行都包含数值。
我需要做的是计算包含数值的时间(行)之间的差异。我需要将结果放置在该特定行分组的第一个值附近(列B)。
所附的照片描绘了一个更好的图片解释我需要做什么。Example Data
数据没有模式。因此,我需要Excel来搜索列,找到分组,从一组时间中的最后一个值减去第一个值,并将结果放在B列中。
感谢您的任何建议!
不知道如何处理这个问题。我有一个列(列A),其中有一个时间列表。该列有许多不一致之处,因此并非所有行都包含数值。
我需要做的是计算包含数值的时间(行)之间的差异。我需要将结果放置在该特定行分组的第一个值附近(列B)。
所附的照片描绘了一个更好的图片解释我需要做什么。Example Data
数据没有模式。因此,我需要Excel来搜索列,找到分组,从一组时间中的最后一个值减去第一个值,并将结果放在B列中。
感谢您的任何建议!
2条答案
按热度按时间cbjzeqam1#
这可能会过度使用Excel的let function,但它可以通过最大限度地减少所需的计算来显著提高性能。
把它放到
B4
单元格中,然后向下拖动,它应该会给予你想要的。您还可以通过在工作表中指定
lastUsedRow
,=MATCH(2,1/($A:$A<>""),1)
的命名Range,然后在公式中删除该行来改进这一点,这样它就不必不断重新计算它。zfciruhq2#
这里是一个数组版本,它溢出了整个结果,并且不需要额外的助手列(formula 1):
这里有一个较短的替代方案:
在上面的公式中,第二个
MAP
输入参数标识组的开始(first
)。该条件检查当前元素是否为数字,而前一个元素是否为数字。更短(类似的想法):
下面是输出:
SCAN
计数(cnts
)每个组上的元素(数值)(实际上我们只需要识别组的开始,即。1
值)。名称start
具有每个组的起始位置。名称end
,每个start
值对应的结束位置。IFERROR
条件,考虑只有一个组的情况,因此间隔的结束是n
(输入数组的最后一个索引位置)现在我们通过
MAP
迭代输入(seq
)的所有索引位置(i
)。对于每个i
-value,我们检查该值是否属于start
位置,如果不是,则返回空字符串。否则,我们获得给定迭代的相应区间(s
,e
)的开始和结束。现在,我们通过FILTER
过滤输入数据A
,以仅获得所选区间的数值,然后通过TAKE
获得最后一个和第一个进行减法。