【发布时间】:2018-08-29 14:32:38
【问题描述】:
Stack Overflow 上有很多很好的答案,描述了如何使用 Excel 的 VLOOKUP() 函数。在问这个问题之前我研究过的一些在这里:
看起来VLOOKUP() 默认返回表中的第一个匹配条目(即“顶部优先”搜索)。我需要返回表中的 last 条目(即“底部优先”搜索)——有没有办法使用 VLOOKUP() 指定搜索方向函数,或者除此之外的替代函数,类似于VLOOKUP(),但允许指定搜索方向?
编辑: 这是我的数据示例。我有网络流量,我试图计算具有相同标识符的数据包之间的时间戳差异。
Packet ID Timestamp (ms)
A 0.0
B 1.0
C 2.0
C 3.0
A 4.0
B 5.0
. .
. .
. .
我需要计算类似于下面的时间戳差异
Packet ID Timestamp (ms) Timestamp Difference (ms, packet ID basis)
A 0.0 0.0
B 1.0 0.0
C 2.0 0.0
C 3.0 1.0 (i.e. "3.0 - 2.0")
A 4.0 4.0 (i.e. "4.0 - 0.0")
B 5.0 4.0 (i.e. "5.0 - 1.0")
C 6.0 3.0 (i.e. "6.0 - 3.0")
. . .
. . .
. . .
为此,我尝试在Packet ID 上创建一个VLOOKUP(),以查找具有相同ID 的前一个数据包的时间戳。
【问题讨论】:
-
从纯关系代数的角度讲,您有一些包含多个匹配项的查找列通常不是一件好事。例如,如果某天数据的顺序发生了变化,以至于最后一个(或第一个)匹配在逻辑上不再正确,该怎么办?我投票赞成通过在查找列中只有一个匹配键来完全避免这种情况。但是对您的问题 +1。
-
您可以使用
Index/Match并在Match上嵌套一个Match,让您稍后从列表中开始。此外,@TimBiegeleisen 提出了一个很好的观点。如果您有这么多重复数据,应该(希望)有另一个变量可以用来缩小搜索范围。 -
另外,只有searching around 有this page、this one 和this one。这些都没有帮助吗?
-
感谢@TimBiegeleisen。通常我会同意分类数据,但是我正在分析时间序列数据(具有周期性数据包标识符的网络流量),并且需要计算具有相同标识符的数据包之间的时间偏移量。我正在使用
VLOOKUP直接搜索相同标识符的前一个数据包并获取它们的时间戳之间的差异。 -
@BruceWayne, This link 你的评论给了我我需要的东西。如果您将其添加为答案,我会接受;否则我稍后会添加它作为答案。
标签: excel excel-formula vlookup