【发布时间】:2017-05-26 19:00:56
【问题描述】:
例如,如果我有一个像这样的复杂函数:=IFERROR(CELL("address",INDEX(D:D,MATCH(A2;D3:D$750;0)+ROW(A2);1;1));"") 我想将其转换为指向该公式返回的单元格的超链接。是的,我知道这可以通过用=HYPERLINK("[file_name.xlsm]" & %formula%) 包装来完成,但首先,在大稀疏数据中读取看起来非常丑陋和不舒服,其次 - 复制这样的数据块非常不方便Excel 实例之间(然后替换文件名)。
所以我想知道 - 是否可以将此类输出转换为当前文件和工作表的单元格链接,并使用“D156”等可读文本代替“[long_file_name.xlsm]$ 156 美元”?
附:显然我可以创建一个返回当前文件名的自定义函数并将相同的公式放入 HYPERLINK 函数的第二个参数中,但显然它会适得其反,尤其是当我有大量数据时。所以我想把所有这些包装成一个函数......
附言不确定这是否合适(这个问题有点离题),但如果可以使用宏而不是自定义函数来完成相同的功能,那就没问题了。因此,宏应该找到当前选定范围内的所有重复项,并创建超链接(在具有相同偏移量的单元格中,偏移量为 +1 的不同工作表上,当前活动后的下一个工作表)到每个重复项的下一次出现。其余的我可以自己处理。
UPD1: 获取文件名不是问题,正如我在 P.S. 中所说的,我可以编写这样的函数:
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 个参数的类型(不确定是否存在)...
【问题讨论】: