例如,如果我有一个像这样的复杂函数:=IFERROR(CELL("address",INDEX(D:D,MATCH(A2;D3:D$750;0)+ROW(A2);1;1));"")
我想将它转换为指向由该公式返回的单元格的超链接。是的,我知道这可以通过用=HYPERLINK("[file_name.xlsm]" & %formula%)
来包装它,但首先,它看起来非常难看,并且难以阅读稀疏的大数据,其次 - 在Excel之间复制这样的数据块是非常不方便的实例(然后替换文件名)。Excel中的自定义函数用于单元超级链接创建
所以我不知道 - 是有可能这样的输出转换成细胞链接,当前文件和片材来代替“[long_file_name.xlsm] $ d $ 156”可读的文本,如“D156”?
P.S.显然我可以创建一个返回当前文件名的自定义函数,并将相同的公式放入HYPERLINK函数的第二个参数中,但显然这将是反效果的,特别是当我有大量数据时。所以我想把所有这一切换成1个功能...
P.P.S.不知道这是否合适(对于这个问题它有点偏离),但如果可以使用宏而不是自定义函数完成相同的功能,那将很好。因此,宏应该在当前所选范围内找到所有重复项,并在每个重复项的下一次出现时创建超链接(在具有相同偏移量的单元格中,偏移量+1,即当前活动后的下一张)。其余的我可以自己管理。
UPD1: 获取文件名不是一个问题,因为我在PS中说,我可以写这样的功能:
Function GetCurFilename()
GetCurFilename= "[" & ActiveWorkbook.Name & "]"
End Function
,但我仍然需要以某种方式发送的第一HYPERLINK
部分作为第二个人的论点!
UPD2: 我想它应该做的事是这样的:
Function MakeLinkArgs(cAdrs) As SomeType_interpreted_as_2_arguments
If (cAdrs = "") Then
MakeLinkArgs(1) = ""
MakeLinkArgs(2) = ""
Else
MakeLinkArgs(1) = "[" & ActiveWorkbook.Name & "]" & cAdrs
MakeLinkArgs(2) = Replace(cAdrs, "$", "")
End If
End Function
所以本功能,可以使用这样的:=HYPERLINK(MakeLinkArgs(IFERROR(CELL("address",INDEX(D:D,MATCH(A2;D3:D$750;0)+ROW(A2);1;1));"")))
但还是因为它可以解释没有运气找到类型作为2个参数(不知道这是否存在)...
直到最后(至少到第一个P.S.结束)读取问题,获取文件名不是问题,我需要将第一个参数传递为HYPERLINK函数的第二个参数。 –