excel - 在 2 列前任-后继列表中查找最新项目

标签 excel excel-formula formula

我在 Excel 中有两列,其中包含逐步淘汰和逐步引入的项目:

<表类=“s-表”> <标题> 旧项目 新项目 <正文> AAAAAAAAA BBBBBBBBBB GGGGGGGGGG DDDDDDDDDD BBBBBBBBBB KKKKKKKKKK KKKKKKKKKK CCCCCCCCCC

我正在尝试编写一个公式,当我在另一个单元格中输入项目代码时,它会返回最新的项目代码。

示例: 如果我插入 AAAAAAAAA它应该返回 CCCCCCCCC ,或者如果我写 GGGGGGGGG它应该返回:DDDDDDDDD .

我尝试使用MATCH功能和VLOOKUP但什么也没发现。

最佳答案

我发现您还没有得到任何答复,所以让我澄清一下我的评论。在我看来,你需要某种形式的递归;一个非常适合可以调用自身的 LAMBDA() 的机制。 MS 设计了一个有用的辅助函数,名为 REDUCE():

enter image description here

E2中的公式:

=LET(X,$A$2:$A$5,Y,$B$2:$B$5,REDUCE(D2,X,LAMBDA(a,b,FILTER(Y,X=a,a))))

或者,如果您想对要查找的整个范围的项目进行相同的计算:

enter image description here

E2 中的公式:

=BYROW(D2:D3,LAMBDA(Z,LET(X,A2:A5,Y,B2:B5,REDUCE(Z,X,LAMBDA(a,b,FILTER(Y,X=a,a))))))

重要说明:

REDUCE() 将运行直到第二个参数中给出的矩阵的最末尾。对于非常广泛的数组,这可能需要比实际需要更多的处理时间。想象一下,当第二行数据中只找到 1 个新项目时,运行 10k 行。因此,您也可以编写自己的递归函数。这可以通过两种方式完成:

  • 管理器中的命名函数,用于在单元格中调用;
  • 通过使用LET()

第二个选项是我个人的偏好,例如在 E2 中:

=LET(NEWEST,LAMBDA(ME,TXT,IF(COUNTIF(A$2:A$5,TXT),ME(ME,XLOOKUP(TXT,A$2:A$5,B$2:B$5,,0)),TXT)),NEWEST(NEWEST,D2))

尽管更加冗长,但这可能需要更少的资源,具体取决于您的数据,因为当找不到更多新值时,它会停止递归调用。

关于excel - 在 2 列前任-后继列表中查找最新项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71627425/

相关文章:

Java/Pawn 数学公式返回 0

excel - 复选框 "Trust access to the VBA Project Model"是什么意思?

Excel - 如何获得最后一个由数字和 "N/A"随机混合组成的行中最后10个值的平均值

java - 保存 Excel 表的数据透视缓存

vba - excel中如何即时刷新计算结果

excel - 计算组中的值

excel - 从动态数组中提取 Excel 单元格值

excel - 需要Excel表格公式

excel - VBA 共享工作簿和非共享工作簿

python - 通过 Python 模块 xlwt 更改 xls 文件中的默认分页符