如何在Excel中将文本URL列转换为活动超链接?

355

我在Excel中有一列,其中包含所有网站URL的值。我的问题是,我想将这些URL值转换为活动链接。该列中有大约200个条目,所有单元格中的URL都不同。是否有一种方法可以在不编写宏的情况下为所有单元格创建活动超链接。

24个回答

383

如果您不想创建宏,并且只要没有额外的列,那么就在URL列旁边创建新列。

在新列中输入公式=HYPERLINK(A1)(将A1替换为您感兴趣的任何单元格)。然后复制该公式到其余200个条目。

注意: 如果单元格A1包含超过255个字符的字符串,则此解决方案无法正常工作。 它会导致#VALUE!错误。


5
如果我的A列包含200个链接值,是否可能编写一个公式将这200个值超链接并重写到A列中,而不是创建新的列? - developer
1
太好了!最棒的是,这一步非常简单,我可以将CSV文件传递给一个非专业人士,他也能轻松地生成URL。 - Cardin
4
要将其变为单列,只需将超链接列复制并“粘贴值”到您想要保留的任何列中即可。 - Mike
1
这应该是被接受的答案,因为它解决了大多数使用情况。 - Jay
1
隐藏非超链接的原始列。 - RickAndMSFT
显示剩余3条评论

112

按照以下步骤创建宏:

在Microsoft Excel的“工具”菜单中,将鼠标指向“宏”,然后单击“Visual Basic Editor”。 在“插入”菜单中,单击“模块”。 将此代码复制并粘贴到模块的代码窗口中。 它将自动命名为HyperAdd。

Sub HyperAdd()

    'Converts each text hyperlink selected into a working hyperlink

    For Each xCell In Selection
        ActiveSheet.Hyperlinks.Add Anchor:=xCell, Address:=xCell.Formula
    Next xCell

End Sub

当您完成粘贴宏后,请单击“文件”菜单上的“关闭并返回到Microsoft Excel”。

然后选择所需的单元格,单击宏,再单击运行。

注意:不要选择整个列!仅选择您希望更改为可点击链接的单元格,否则您将陷入无休止的循环并不得不重启Excel!完成!


2
如果您使用显式选项,请添加Dim xCell As Range。提供更改单元格(如所要求)并提供执行此操作的代码的解决方案将获得+1分。 - Praesagus
2
将电子邮件地址转换为超链接,请将 Address:=xCell.Formula 更改为 Address:="mailto:" & xCell.Formula - Danny Beckett
此外,对于不以 http:// 开头的 URL,需要添加该前缀(使用上述更改,但将 mailto: 替换为 http://)。否则,超链接将无法正常工作。 - Danny Beckett
运行顺畅。有没有办法改进循环,使其只遍历具有值的单元格? - Daniele D.
1
运行良好。请注意,Excel 2016每个工作表的超链接数量限制为66,530个,如果超过此限制,最终会出现运行时错误。https://support.office.com/en-us/article/Excel-specifications-and-limits-1672b34d-7043-467e-8e27-269d656771c3 - Christopher O'Brien
显示剩余5条评论

40

对于相当短的列表,有一个很简单的方法:

  1. 双击URL所在框
  2. 输入

您现在已经获得了您的链接;)


28
我使用 F2 编辑单元格,然后重复按回车键来快速向下滚动列表。简单易行。谢谢! - Bryan Ash
3
这个加上关于F2的注释让我在大约一分钟内得到了一个包含160个超链接的列。所以,如果列够短的话,这就是正确的方法。 - Trevor Brown
3
我认为这并不是一个解决方案,对于需要转换成百余个单元格的人来说。 - Ma3x
17
我有287,000行数据。哭。 - thejohnbackes
4
对于较新版本的Excel,只需将一行转换为超链接,并使用格式刷将URL格式应用到其他行即可。@thejohnbackes - Alexei - check Codidact
显示剩余2条评论

27

我发现了一种方法。我使用的是Mac并且使用Excel 2011。 如果B列包含你想要变成超链接的文本值,将以下公式放入C1单元格(或D1或任何空闲列中):=HYPERLINK(B1,B1) 这将插入一个以位置作为链接文本和“友好名称”作为链接文本的超链接。如果你有另一列每个链接的友好名称,也可以使用它。 然后,如果你不想看到它,可以隐藏文本列。

如果你有某些东西的ID列表,并且所有的URL都是http://website.com/folder/ID,例如:

A1  | B1
101 | http://website.com/folder/101
102 | http://website.com/folder/102
103 | http://website.com/folder/103
104 | http://website.com/folder/104

你可以使用类似于=HYPERLINK("http://website.com/folder/"&A1,A1)这样的方法,不需要列举URL。这正是我的情况,并且效果很好。

根据这篇文章:http://excelhints.com/2007/06/12/hyperlink-formula-in-excel/,这种方法也适用于Excel 2007。


适用于Windows、Excel 2013,是一个很好的替代额外列的选择。 - mdisibio
FYI,对于Open Office,上述内容会出现错误,但是如果只提供一个参数,则似乎=HYPERLINK(C1)可以正常工作。 - tonypdmtr
我想要一个只有在有链接需要显示时才显示的东西:=IF(NOT(ISBLANK(A2)),HYPERLINK("https://jirasite.atlassian.net/browse/PROJECT-"&A2,"PROJECT-"&A2),"") - undefined

22

好的,这里有一个不太正式的解决方案,但我就是想不出如何让Excel批量将URL列评估为超链接。

  1. 创建公式:="=超链接(""" & A1 & """)"
  2. 向下拖动
  3. 复制新的公式列
  4. 通过"粘贴特殊值-仅"覆盖原始列
  5. 高亮列,点击 Ctrl-H(替换),找到并替换== (某种方式强制重新评估单元格)。
  6. 现在单元格应该可以作为超链接进行单击。如果要蓝色/下划线样式,只需突出显示所有单元格,然后选择超链接样式即可。

仅使用超链接样式无法转换为可单击的链接,而“插入超链接”对话框似乎无法将文本用作大量单元格的地址。除此之外,F2Enter 可以完成所有单元格的操作,但是对于大量单元格来说这很繁琐。


3
只需执行=(HYPERLINK(INDIRECT(ADDRESS(ROW(),COLUMN()+1)),"Dress" & ROW())) 即可,这样更容易。 - Nick Turner
同意,这是最好的答案,不需要维护两列。 - matt
+1 针对“=” -> “=”的替换。这正是我所寻找的。谢谢。 - Developer

20

如果无法通过添加带有超链接的额外列来完成,另一种方法是使用外部编辑器将您的超链接括起来为=hyperlink(""),以获得=hyperlink("originalCellContent")

如果您有Notepad++,可以使用以下步骤半自动地执行此操作:

  • 将地址列复制到Notepad++中
  • 按住ALT-SHIFT键,从左上角延伸光标至左下角,并输入=hyperlink("。这会在每个条目的开头添加=hyperlink("
  • 打开"替换"菜单(Ctrl-H),激活正则表达式(ALT-G),并将$(行末)替换为"\)。这会在每行末尾添加一个闭合引号和一个闭合括号(当激活正则表达式时需要用\转义)。
  • 将数据粘贴回Excel。实际上,只需复制数据,然后选择要将数据放置在其中的列的第一个单元格。

很好的答案。如果您不想要任何额外的列,这是唯一的方法。该解决方案可用于任何类型的编辑器或编程语言(不仅限于Notepad ++)。在Excel 2010中,这确实会创建可点击的链接,但我必须手动应用“超链接格式样式”才能使它们真正看起来像链接(即蓝色下划线)。 - absurd
注意:这不需要notepad++...只是为了清晰起见,您可以使用任何文本编辑器来完成此操作。诀窍是只需用=hyperlink("__linecontentgoeshere__")将每行包装起来...对于那些可能会被提到notepad++所误导的人们。 - dreftymac
@dreftymac 这提供了一个几乎自动化的操作步骤,而不是逐行编辑。它利用了Notepad ++扩展光标到多行和支持正则表达式的能力;其他编辑器可能具有类似的功能。我在回答开始澄清了预期结果,这应该消除误解。 - Antonio
1
//我在回答开始时澄清预期结果// 感谢您强调您的观点。我并不是在批评您的回答,只是为那些可能对Notepad++一无所知,并且可能没有意识到它只是许多文本编辑器之一,可以做到这种事情的人提供更清晰的解释。我知道意识到了这一点,但并非每个人都知道。 - dreftymac
1
你也可以在Excel中使用="=HYPERLINK("""&A1&""")"的公式(假设URL在A1中)来组合公式。然后将结果复制到记事本中,再回到Excel中(可能有更好的方法)。现在你有了可工作的超链接 - 你可以从样式面板中应用超链接样式,以获得蓝色下划线的外观。如果你在B列中有链接标签,你可以使用这个公式:="=HYPERLINK("""&A1&""";"""&B1&""")" - Jonáš Jančařík

18
我很震惊Excel没有自动完成这个功能,所以这是我的解决方案,希望对其他人有用,
1. 在Chrome或Firefox上打开此链接 data:text/html,<button onclick="document.write(document.body.querySelector('textarea').value.split('\n').map(x => '<a href=\'' + x + '\'>' + x + '</a>').join('<br>'))">Linkify</button><br><textarea></textarea>
2. 将整个列复制到剪贴板 3. 将列粘贴到刚刚在浏览器中打开的页面上,然后点击"Linkify" 4. 将结果从选项卡复制到Excel的列中

Instead the first step, you can use the below page, first, click on "Run code snippet" then paste the column on it

<button onclick="document.write(document.body.querySelector('textarea').value.split('\n').map(x => '<a href=\'' + x + '\'>' + x + '</a>').join('<br>'))">Linkify</button><br><textarea></textarea>


3
哇!这是最简单和最好的答案! - Vincent
3
与其他答案非常不同,但却非常聪明。 - Sergii Volchkov
2
这段代码可以用于电子邮件:data:text/html,<button onclick="document.write(document.body.querySelector('textarea').value.split('\n').map(x => '<a href=\'mailto:' + x + '\'>' + x + '</a>').join('<br>'))">Linkify</button><br><textarea></textarea> - Max Makhrov
我编辑了这个,只保留地址的最后一部分作为超链接的文本,以适应我的用例:<button onclick="document.write(document.body.querySelector('textarea').value.split('\n').map(x => '<a href=\'' + x + '\'>' + x.split('/').at(-1) + '</a>').join('<br>'))">Linkify</button><br><textarea></textarea> - Shivam Sharma

7

对于我来说,使用超链接功能可以实现以下方法:

=HYPERLINK("http://"&B10,B10)

B10 是包含URL文本版本的单元格(在此示例中)。


=HYPERLINK("http://"&B10,B10) 在我的Excel 2013中无法工作,然而 =HYPERLINK("http://"&B10) 却可以。 - agibsen

6
  1. 使用公式=HYPERLINK()创建一个临时的超链接列
  2. 将该列复制到Microsoft Word中(只有在运行Word后才能复制到剪贴板)。
  3. 复制新Word文档中的所有内容(ctrl+a,然后ctrl+c)。
  4. 粘贴到Excel中,替换原始的文本列。删除带有公式的临时列。

5

对于 Windows 上的 Excel 2007,我发现以下步骤最简单:

  1. 选择非活动 URL 的单元格
  2. 复制
  3. 粘贴为超链接

1
在较新的版本中(我使用的是Office 2011),这种方法不起作用 - 我只会得到一个指向桌面文件(如下所示)的超链接,而不是单元格中显示的URL。例如:file://localhost/Users/xxxx/Desktop/Blahblahblah File Name.xlsx - Sheet1!A2 - Dannid

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接