我有一个工作簿,其中有一列包含发布到网站的不同文档的标题 (B4:B6)。另一列包含这些文档的 URL (C4:C6)。该 URL 是在文档上传时由网站创建的,并且始终会在 URL 后附加一个事先无法预测的数字。
我有一个用户,他习惯于手动将超链接插入包含标题的单元格,以便标题单元格指向 URL。他希望标题单元格具有超链接,理解需要将超链接放在自己的单元格中以供参考,但不想重新输入或复制粘贴 URL。我如何设置 URL 单元格 (C4:C6) 以检查标题单元格中是否有嵌入的超链接,如果找到,则将其复制到相应的 URL 单元格中?
或者,我如何设置标题单元格来检查 URL 单元格中的文本,如果找到文本,则自动将该文本作为超链接应用到相应的标题单元格中?
最糟糕的是,如果不使用 VBA/宏,我该如何做到这一点?
换一种方式:
当前状态:用户手动将超链接应用于 B 列中的标题。用户还在 C 列中手动输入 URL 文本。
期望状态(选项 1):用户手动将超链接应用于 B 列中的标题。URL 文本会自动从超链接中提取(而不是标题文本),并放置在 C 列中。
期望状态(选项 2):用户在 C 列中手动输入 URL 文本。该 URL 将自动作为嵌入的超链接应用于 B 列中包含标题的单元格中。
如果有必要的话,辅助列也是很好的。
答案1
如果您想使用公式和链接不遵循简单的模式,那么您需要将标题复制到另一列(或工作表)中并在公式中引用它们hyperlink
。
HYPERLINK("link","copied_title")
对于其他所需选项,您仍然必须使用,VBA
但也许只有用户定义的选项就足够了,正如本文中的一个答案中所述主题:从超链接中提取 URL
VBA 解决方案
如果您对 VBA 感兴趣,那么以下内容会有所帮助:
Sub hyperlink_title()
Dim i As Integer
Dim wsh as Worksheet
Set wsh = ThisWorkbook.ActiveSheet
i = 4
With wsh
While .Cells(i, 2) <> ""
ActiveSheet.Hyperlinks.Add Anchor:=.Cells(i, 2), Address:=.Cells(i, 3).Value, _
TextToDisplay:=.Cells(i, "B").Value2
i = i + 1
Wend
End Sub
答案2
此公式将查看单元格,如果存在超链接(使用公式Hyperlink()
),则将返回 URL。如果没有链接,只有文本,则它会创建一个指向的链接http://www.fakewebsite.com/[text]
:
=IFERROR(MID(FORMULATEXT(A2),SEARCH("http",FORMULATEXT(A2)),SEARCH(",",FORMULATEXT(A2))-SEARCH("http",FORMULATEXT(A2))-1),HYPERLINK("http://www.fakewebsite.com/"&SUBSTITUTE(A2," ","-")))
注意:如果没有“http”,只需将上述公式中的“http”替换为“www”即可。其工作原理如下:
编辑:根据澄清,这将从“文档标题”列中提取一个链接,如果没有链接,则只放置一些文本:
=IFERROR(MID(FORMULATEXT(A2),SEARCH("http",FORMULATEXT(A2)),SEARCH(",",FORMULATEXT(A2))-SEARCH("http",FORMULATEXT(A2))-1),"No Link")