简单地说,我在 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)),"") 应该会再次找到它,但显然我没有不明白。
感谢您的帮助,如果您写下答案,请解释为什么您的方法有效,我很感兴趣。
建议仅使用实际使用的范围。 在此示例中使用 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列中的相应值。