希望你们中的一位可以帮助我。
我正在制作一个 Excel 电子表格,它导入一个数据文件,并将数据与一个非常大的文件夹中的其他几个源(包括文件名)进行比较。现在的目标是获取零件编号(文本),在文件夹查询中找到该零件编号,将文件夹路径与文件名组合起来,然后创建超链接。
我已经快完成电子表格了,但我不知道超链接功能。问题是我们有一个修订过程,因此第一个修订版是“Rev01 (a)(b), PartNumber”,然后是“Rev02 (a)(b), PartNumber”。 我见过的大多数搜索/索引功能都使用
MAX()
,它仅适用于值而不是文本。其余的根本不起作用。
要查找的零件编号 | 文件名 | 路径 |
---|---|---|
零件编号1 | Rev01 (a)(b),零件编号 1 | C:\ |
零件编号2 | Rev02 (a)(b),零件编号 1 | C:\ |
Rev01 (a)(b),零件编号 2 | C:\ |
(对我来说一件大事是我只使用溢出公式,这样我就可以重复使用工作表,而不必担心拖拽公式)
经过几个小时的搜索和尝试新公式后,我发现如果您使用
=IF(ISNUMBER(SEARCH(A2,B2:B4)),B2:B4,"")
,您将获得带有第一个 PartNumber 的所有文件名。
结果1 |
---|
Rev01 (a)(b),零件编号 1 |
Rev02 (a)(b),零件编号 1 |
所以,使用
BYROW
和 LAMBDA
我建造了这个怪物:
=HYPERLINK(BYROW(A2:A3,LAMBDA(row,LET(partnum,IF(ISNUMBER(SEARCH(row,B2:B4)),C2:C4&B2:B4,""),filtered,FILTER(partnum,partnum<>""),INDEX(filtered,COUNTA(filtered))))))
对我来说,关键的想法是使用 Result1 作为数组和
INDEX
新数组来获取数组中的最后一个值(在这种情况下必须按升序排序,这很容易使用 LET
:
INDEX(filtered,COUNTA(filtered))
标题 1 |
---|
C:\Rev02 (a)(b),零件编号 1 |
C:\Rev01 (a)(b),零件编号2 |
现在,我的问题是
HYPERLINK()
只是超链接第一个单元格,有没有办法超链接所有单元格?另外,有没有更简单的方法来做到这一点?这看起来有点复杂,但我在网上找不到任何东西。
如果你还没有,你可以尝试一下吗:
=BYROW(A2:A3, LAMBDA(row,
LET(partnum, IF(ISNUMBER(SEARCH(row, B2:B4)), C2:C4 & B2:B4, ""),
filtered, FILTER(partnum, partnum <> ""),
HYPERLINK(CONCAT("[", INDEX(filtered, COUNTA(filtered)), "]")))))
[]
中。请测试并告知。