ColA Col B ColC
Project A A.pdf A.pdf
Project B No Link
我有一份项目记录列表。其中一列(例如 B)可能引用了 pdf 文件。如果我创建一个公式
=if(isblank(B2),"No Link",hyperlink(folderURL + B2),B2)
我想要的是仅在 B 列包含 pdf 引用的行上放置超链接,并插入文本“无链接”。我得到了正确的文本值,但所有行都具有 hyperlnk 默认外观和行为 - Excel 似乎在“无链接”单元格中创建了“幻像链接”。
单击 C 列中的“无链接”值将尝试打开 B 列中列出的文件,但会返回未找到文件的错误。
答案1
目前尚不清楚这是否是一个错误;但 Excel 似乎只是因为公式中有一个函数而使整个单元格可点击,HYPERLINK
以便它能够正常工作。右键单击单元格并选择移除超链接似乎也不起作用。
我似乎找不到非 VBA 解决方案来阻止 Excel 创建那些“幻影”超链接,但这里有一个解决“无法打开指定文件”错误的权宜之计:
=IF(ISBLANK(B2),HYPERLINK("#"&CELL("address"),"NO LINK"), HYPERLINK(folderURL & B2,B2))
如果单元格为空,公式不会只显示“无链接”,而是B2
创建一个指向单元格本身的超链接。单元格仍可点击,但不会显示错误消息。
来源:http://www.excelforum.com/excel-programming-vba-macros/340575-solved-conditional-hyperlink.html
答案2
这并不是原作者想要做的,但对我来说很有用
=IF(ISBLANK(B2),HYPERLINK("#"&CELL("address"),""), HYPERLINK("http://someurl","friendly_link_name"))
当没有链接时,您会得到一个空的、不可点击的单元格。
答案3
对我来说有效:
=IF(ISBLANK(B2);HYPERLINK(CONCATENATE("#"; ADDRESS(ROW();COLUMN()));"NO LINK"); HYPERLINK(folderURL & B2;B2))
使用CONCATENATE("#"; ADDRESS(ROW();COLUMN()))
虚拟超链接使得完整的公式可以感知上下文。