【发布时间】:2014-03-26 14:19:22
【问题描述】:
有答案的更新:
我误解了MATCH和LOOKUP的操作;他们显然不会自动选择最后一个值。
更新后的公式如下:
=IF(
ISNUMBER( MATCH(2,INDEX(1/($D2=$D$1:$D1),0)) ),
($A2+$B2) - (LOOKUP(2,1/($D2=$D$1:$D1),$A$1:$A1)+LOOKUP(2,1/($D2=$D$1:$D1),$B$1:$B1))
,0 )
主要区别在于 MATCH 现在是 MATCH(2,INDEX(1/($D2=$D$1:$D1),0)) 和 LOOKUP 现在是 LOOKUP(2,1/($D2=$D$1:$D1),$A$1:$A1)。
感谢 barry houdini 和 Nanashi 的帮助!
我正在处理本应是一个简单的电子表格,但我的一个公式给了我意想不到的结果。我的数据截图如下:
![电子表格截图][1]
在C列中,我试图获取具有相同类型的前一个数据点与当前数据点之间的时间差。我的公式(格式为便于阅读,取自 C11 单元格)如下:
=IF(
NOT( ISNA( MATCH($D11,$D$1:$D10,1) ) ),
($A11+$B11)-(
LOOKUP($D11,$D$1:$D10,$A$1:$A10)+LOOKUP($D11,$D$1:$D10,$B$1:$B10)
),FALSE)
相应单元格的单元格编号发生变化——例如,C10 引用 $D10 和范围 $D$1:$D9 等。
- 条件 (
NOT( ISNA( MATCH($D11,$D$1:$D10,1) ) )检查以确保在 C 列中存在与当前值相等的先前值;否则返回FALSE,就像在第 1 行和第 12 行中一样。 -
($A11+$B11)-(LOOKUP($D11,$D$1:$D10,$A$1:$A10)+LOOKUP($D11,$D$1:$D10,$B$1:$B10)的计算采用当前行日期和时间,并减去与上一个相同类型实例对应的行中的日期和时间(LOOKUP函数应该返回最后一次出现的值一个数组,根据文档)。
我的问题是:在第 12 行之后,MATCH 和 LOOKUP 函数都将第 11 行作为 C 列值为 1 的最后一行。我'我试过分别测试它们,两个函数都从第 11 行返回相应的值。例如,将以下公式放入 E16:=MATCH(1,$D$1:$D16,1) 返回 11,而我预计值为 16。
我做错了什么?
【问题讨论】:
-
D11 指的是这个电子表格中的值,在这个电子表格中是 1——我正在 D1:D10 范围内搜索最后一个等于 1 的值。我不相信这是我使用的问题经常使用类似的技术,如果我明确输入 1 而不是 D11,差异仍然存在。
-
是的,注意到了很多,这就是我的评论不适用的原因。嗯。它看起来在公式上是正确的。我将尝试重新创建您的数据集。
Type是硬编码的还是有方法的? -
您现在的预期输出是什么?例如,在 C17 中,应该显示什么?
标签: excel excel-formula worksheet-function