例如,如果我有一個像這樣的複雜函數:=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函數的第二個參數。 –