获取excel中数字第n次迭代的值

问题描述 投票:0回答:1

简单地说,我在 Z 列中有一个数字,在 B 中有一个时间,我的目标是检索 Z 中数字第二次迭代的时间。如果数字 x 第一次出现在下午 2 点第二次发生在下午 3 点,我希望检索的时间是下午 3 点。

我通过一堆波动公式实现了这一目标,由于我的文件有 9000 行,因此需要 5 分钟才能运行,同时会锁定我的计算机。我也无法运行宏,因为它们被禁止了。

从那以后我一直试图通过索引和匹配来实现它,但到目前为止我还做不到。 这是我所拥有的: =IF(COUNTIF($Z:$Z, Z2)>1, Z2,"") 查找一次值。 =IFERROR(INDEX(B:B,MATCH(Z2,Z:Z,MATCH(Z2,Z:Z,0)+1)),"") 应该会再次找到它,但显然我没有不明白。

感谢您的帮助,如果您写下答案,请解释为什么您的方法有效,我很感兴趣。

excel indexing match
1个回答
0
投票

建议仅使用实际使用的范围。 在此示例中使用 B1:B11 和 Z1:Z11。将范围调整至所需值。

=INDEX(B$1:B$11,SMALL(IF(ROW(Z$1:Z$11)*(Z$1:Z$11=J$1)=0,"",ROW(Z$1:Z$11)*(Z$1:Z$11=J$1)),2),0)

描述

ROW(Z$1:Z$11)*(Z$1:Z$11=J$1)
生成一个包含找到匹配项的绝对行号的数组。

IF(ROW(Z$1:Z$11)*(Z$1:Z$11=J$1)=0,"",ROW(Z$1:Z$11)*(Z$1:Z$11=J$1))
将 0 值设置为空字符串。

SMALL(..... ,2)
函数返回行号中的第二个值。

INDEX(B$1:B$11, ...... ,0)
函数返回计算行的B列中的相应值。

© www.soinside.com 2019 - 2024. All rights reserved.