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


274

我在excel中有一列,其中有所有网站的url值。我的问题是我想将url值转换为活动链接。该列中大约有200个条目,所有单元格中都有不同的url。有没有一种方法可以创建到所有单元的活动超链接而无需编写宏。

Answers:


314

如果您不想创建一个宏,并且只要您不介意其他列,那么只需在URL列旁边创建一个新列即可。

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

注意:如果单元格A1包含一个长度超过255个字符的字符串,此解决方案将不起作用。导致#VALUE!错误


2
如果我的A列包含200个链接值,是否可以编写一个公式,使200个值超链接并在A列中重写它,而不用创建一个新列?
开发人员2010年

1
优秀的!最好的事情是,此步骤非常简单,我可以将CSV文件传递给外行人,他可以轻松地从中生成URL。
Cardin Lee JH 2015年

3
要使其成为一列,只需将超链接列和“粘贴值”复制到要保留的任何列中。
迈克

1
这是可以接受的答案,因为它可以解决大多数用例。
杰伊(Jay)

隐藏不是超链接的原始列
RickAndMSFT

94

创建宏,如下所示:

在Microsoft Excel的“工具”菜单上,指向“宏”,然后单击“ Visual Basic编辑器”。在插入菜单上,单击模块。将此代码复制并粘贴到模块的代码窗口中。它将自动将自身命名为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作为范围添加。+1表示更改单元格(按要求)并提供执行该操作的代码的解决方案。
Praesagus

这对我来说很好用,因为我在电子表格中有大约50,000个链接,需要更新并且必须成块地执行,否则excel会崩溃。
ATek

2
要将电子邮件地址转换为超链接,请更改Address:=xCell.FormulaAddress:="mailto:" & xCell.Formula
Danny Beckett

另外,对于不http://以此开头的URL,则需要添加(使用上述更改,但替换mailto:http://。否则,超链接将不起作用。)
Danny Beckett 2015年

1
效果很好。FYI Excel 2016每个工作表的超链接数限制为66,530,因此,如果超出该范围,则可能会导致最终的运行时错误。support.office.com/en-us/article/...
克里斯托弗·奥布莱恩

24

这是我找到的方法。我在使用Excel 2011的Mac上。如果B列具有您要作为超链接的文本值,请将此公式放在单元格C1中(或D1或任意列,只要它是自由列):=HYPERLINK(B1,B1) 这将插入带有位置作为链接文本,“友好名称”作为链接文本。如果您在另一列中为每个链接使用一个友好名称,则也可以使用该名称。然后,如果您不想看到文本列,则可以隐藏它。

如果您具有某件商品的ID列表,且网址均为all 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)并且不需要网址列表。那是我的情况,工作得很好。

根据这篇文章:http : //excelhints.com/2007/06/12/hyperlink-formula-in-excel/此方法也将在Excel 2007中起作用。


在Windows,Excel 2013中均可使用,是替代其他专栏的理想选择。
mdisibio

仅供参考,对于Open Office,上面给出了一个错误,但是= HYPERLINK(C1)如果仅给出一个参数,则可以正常工作
tonypdmtr

19

好的,这是一个骗人的解决方案,但我只是想不通如何让Excel将URL列评估为大量超链接。

  1. 创建一个公式, ="=hyperlink(""" & A1 & """)"
  2. 拖累
  3. 复制新的公式列
  4. 仅将特殊值粘贴在原始列上
  5. 突出显示列,单击Ctrl- H(以替换),查找并替换==(以某种方式强制重新评估单元格)。
  6. 现在,单元格应可作为超链接单击。如果要使用蓝色/下划线样式,则只需突出显示所有单元格并选择“超链接”样式即可。

仅超链接样式不会转换为可单击的链接,并且“插入超链接”对话框似乎无法将文本用作大量单元格的地址。除此之外,F2Enter通过所有细胞会做到这一点,但这是很多细胞的繁琐。


3
只需=(HYPERLINK(INDIRECT(ADDRESS(ROW(),COLUMN()+ 1)),“ Dress”&ROW()))便容易了
Nick Turner

同意,这是最好的答案,不需要维护2列。
马特

+1对于替换'='->'='。那是我寻找的。谢谢。
开发人员

18

很短的清单很简单的方法:

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

你有你的链接;)


14
我使用F2编辑一个单元格,然后反复输入以快速运行我的列表。简单。谢谢!
布莱恩·阿什

1
加上有关F2的评论,大约一分钟后,我就进入了160个超链接的专栏中。是的,如果色谱柱足够短,这就是方法。
Trevor Brown

对于以数百个细胞进行转换的人,我认为这不是解决方案。
Ma3x 17-10-11

我有287,000行。哭。
thejohnbackes

12

如果不能在超链接中添加额外的列,则可以选择使用外部编辑器将超链接包含在=hyperlink("和中"),以获取=hyperlink("originalCellContent")

如果您具有Notepad ++,则可以使用以下食谱半自动执行此操作:

  • 将地址列复制到Notepad ++
  • 保持ALT- SHIFT按下时,延长你的光标从左上角到左下角,和类型=hyperlink("。这将添加=hyperlink("到每个条目的开头。
  • 打开“替换”菜单(Ctrl- H),激活正则表达式(ALT- G),然后用替换$(行尾)"\)。这会\在每行的末尾添加一个封闭的引号和一个封闭的括号(激活正则表达式时必须将其转义)。
  • 将数据粘贴回Excel中。实际上,只需复制数据并选择要结束数据的列的第一个单元格。

好答案。如果您不需要任何额外的列,这是唯一的方法。该解决方案可用于任何类型的编辑器或编程语言(不仅限于Notepad ++)。在Excel 2010中,这确实会创建可单击的链接,但是我必须手动应用“超链接格式样式”才能真正使它们看起来像链接(即带蓝色下划线的链接)。
荒谬

注意:这不需要notepad ++ ...只是为了清楚起见,您可以使用任何文本编辑器执行此操作。诀窍是只在每一行上都加上=hyperlink("__linecontentgoeshere__")...,以便那些可能被记事本++误导的人
dreftymac

@dreftymac这给出了一个几乎自动执行此操作的方法,而不是逐行编辑。它利用Notepad ++功能将光标扩展到多行并支持正则表达式。其他编辑器可能具有类似的功能。我在回答之初就澄清了预期的结果是什么,应该消除误解。
安东尼奥

1
///我将在回答的开始部分澄清预期的结果///感谢您强调您的观点。我并不是在批评您的答案,只是让那些可能对Notepad ++一无所知的人更加清楚,并且可能不会意识到它仅仅是可以做这种事情的众多文本编辑器之一。我知道意识到这一点,但并非所有人都知道。
dreftymac '19

1
您还可以在Excel中用编写公式="=HYPERLINK("""&A1&""")"(假设URL在A1中)。然后将结果复制到记事本,然后再返回到Excel(可能会有更好的方法)。现在,您可以使用超链接了-您可以将“样式”面板中的超链接样式应用于它们,以得到带蓝色下划线的外观。如果您在B列中有链接标签,则可以使用以下公式:="=HYPERLINK("""&A1&""";"""&B1&""")"
乔纳斯Jančařík

7

使用超链接功能,此方法对我有用:

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

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


= HYPERLINK(“ http://”&B10,B10)在我的Excel 2013中不起作用,但是= HYPERLINK(“ http://”&B10)DID起作用。
2013年

5

使用Windows上的Excel 2007,我发现这些步骤最简单。

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

1
在更高版本中(我正在使用Office 2011),此方法不起作用-我只是获得了指向桌面文件(此文件)的超链接,而不是指向单元格中显示的URL的超链接。例如file:// localhost / Users / xxxx / Desktop / Blahblahblah文件名.xlsx-Sheet1!A2
Dannid 2014年

4

我很震惊Excel无法自动执行此操作,因此这是我的解决方案,希望对其他人有用,

  1. 将整列复制到剪贴板
  2. 在您的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>

  1. 将列粘贴到您刚刚在浏览器中打开的页面上,然后按“ Linkify”
  2. 将结果从选项卡复制到Excel上的列

代替第二步,您可以使用下面的页面,首先,单击“运行代码段”,然后将其粘贴到该列上

<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

对我来说,我只是将包含URL文本格式的整个列复制到另一个应用程序中(例如Evernote),然后将它们粘贴到那里成为链接,然后将它们复制回Excel。

这里唯一的事情是您需要确保将复制回的数据与其余列对齐。


2

试试这个:

= HYPERLINK(“ mailto:”&A1,A1)

用您的电子邮件地址单元格文本替换A1。


2

我发现,如果超链接链接到本地​​位置时不包含http://,则这里的方法均无效。

我还想对脚本进行防呆,因为用户将无法自己维护它,因此我将无法使用。

如果它们包含一个点且没有空格,则它将仅在选定范围内的单元格上运行。它最多只能运行10,000个单元。

Sub HyperAdd()
Dim CellsWithSpaces As String
    'Converts each text hyperlink selected into a working hyperlink
    Application.ScreenUpdating = False
    Dim NotPresent As Integer
    NotPresent = 0

    For Each xCell In Selection
        xCell.Formula = Trim(xCell.Formula)
        If xCell.Formula = "" Or InStr(xCell.Formula, ".") = NotPresent Then
        'Do nothing if the cell is blank or contains no dots
        Else
            If InStr(xCell.Formula, " ") <> 0 Then
                CellsWithSpaces = CellsWithSpaces & ", " & Replace(xCell.Address, "$", "")
                 GoTo Nextxcell
            End If

            If InStr(xCell.Formula, "http") <> 0 Then
                Hyperstring = Trim(xCell.Formula)
            Else
                Hyperstring = "http://" & Trim(xCell.Formula)
            End If

            ActiveSheet.Hyperlinks.Add Anchor:=xCell, Address:=Hyperstring

        End If
        i = i + 1
        If i = 10000 Then Exit Sub
Nextxcell:
      Next xCell
    If Not CellsWithSpaces = "" Then
        MsgBox ("Please remove spaces from the following cells:" & CellsWithSpaces)
    End If
Application.ScreenUpdating = True
End Sub

1
谢谢,此方法适用于excel文档中的电子邮件地址-我尝试了其他几种方法,但这是有效的方法,尽管我需要将http://更改为mailto:
bawpie

2
  1. 使用公式= HYPERLINK()创建超链接的临时新列
  2. 将该列复制到Microsoft Word(仅在Word运行后复制到剪贴板)。
  3. 复制新单词文档中的所有内容(按Ctrl + A,然后按Ctrl + C)。
  4. 粘贴到Excel中,替换文本的原始列。用公式删除临时列。

1

您可以将公式插入=HYPERLINK(<your_cell>,<your_cell>)到相邻的单元格中,并将其一直拖动到底部。这将为您提供所有链接的列。现在,您可以通过单击标题,右键单击并选择来选择原始列Hide


1

将URL放入HTML表中,将HTML页面加载到浏览器中,复制该页面的内容,粘贴到Excel中。此时,URL被保留为活动链接。

http://answers.microsoft.com/zh-CN/mac/forum/macoffice2008-macexcel/how-to-copy-and-paste-to-mac-excel-2008-a-list-of/上提出了解决方案(Jim Gordon Mac MVP)制作的c5fa2890-acf5-461d-adb5-32480855e11e [ http://answers.microsoft.com/en-us/profile/75a2b744-a259-49bb-8eb1-7db61dae9e78]

我发现它有效。

我有以下网址:

https://twitter.com/keeseter/status/578350771235872768/photo/1 https://instagram.com/p/ys5ASPCDEV/ https://igcdn-photos-ga.akamaihd.net/hphotos-ak-xfa1/t51 .2885-15 / 10881854_329617847240910_1814142151_n.jpg https://twitter.com/ranadotson/status/539485028712189952/photo/1 https://instagram.com/p/0OgdvyxMhW/ https://instagram.com/p/1nynTiiLSb/

我将它们放入这样的HTML文件(links.html)中:

<table>
<tr><td><a href="https://twitter.com/keeseter/status/578350771235872768/photo/1">https://twitter.com/keeseter/status/578350771235872768/photo/1</a></td></tr>
<tr><td><a href="https://instagram.com/p/ys5ASPCDEV/">https://instagram.com/p/ys5ASPCDEV/</a></td></tr>
<tr><td><a href="https://igcdn-photos-g-a.akamaihd.net/hphotos-ak-xfa1/t51.2885-15/10881854_329617847240910_1814142151_n.jpg">https://igcdn-photos-g-a.akamaihd.net/hphotos-ak-xfa1/t51.2885-15/10881854_329617847240910_1814142151_n.jpg</a></td></tr>
<tr><td><a href="https://twitter.com/ranadotson/status/539485028712189952/photo/1">https://twitter.com/ranadotson/status/539485028712189952/photo/1</a></td></tr>
<tr><td><a href="https://instagram.com/p/0OgdvyxMhW/">https://instagram.com/p/0OgdvyxMhW/</a></td></tr>
</table>

然后,将links.html加载到浏览器中,进行复制,粘贴到Excel中,并且链接处于活动状态。


1

谢谢仙后座的代码。我更改了他的代码以使用本地地址,并且对他的条件几乎没有改变。我删除了以下条件:

  1. 更改http:/file:///
  2. 删除了所有类型的空白条件
  3. 将10k单元格范围条件更改为100k

Sub HyperAddForLocalLinks()
Dim CellsWithSpaces As String
    'Converts each text hyperlink selected into a working hyperlink
    Application.ScreenUpdating = False
    Dim NotPresent As Integer
    NotPresent = 0

    For Each xCell In Selection
        xCell.Formula = Trim(xCell.Formula)
            If InStr(xCell.Formula, "file:///") <> 0 Then
                Hyperstring = Trim(xCell.Formula)
            Else
                Hyperstring = "file:///" & Trim(xCell.Formula)
            End If

            ActiveSheet.Hyperlinks.Add Anchor:=xCell, Address:=Hyperstring

        i = i + 1
        If i = 100000 Then Exit Sub
Nextxcell:
      Next xCell
    Application.ScreenUpdating = True
End Sub

完美运行,我在短短几秒钟内创建了约7000个超链接。:)谢谢仙后座。
Junaid

你为什么要定义NotPresent
Steffen Roller

我刚刚从仙后座的回复中复制了以上代码。并据我所知进行了修改。所以我不知道NotPresent是否必要。但是我修改后的代码工作得很好。
Junaid

1

我有一个输入到url的数字列表,我想对其进行热链接。例如,我在A列中输入了问题编号(即2595692、135171),并且我想将这些问题编号转换为热链接并仅显示问题编号。

因此,我建立了一个指向列A的纯文本超链接,并将其复制为我所有的问题编号:

=“ = HYPERLINK(”&“”“ http”“&”“:”“”&“”&“&”&“”“ // stackoverflow.com/questions/"&A1&"""""&","&A1& “)”

然后我复制-将文本超链接的此值粘贴到另一列。

您最终得到一列类似于以下内容的文本:

= HYPERLINK(“ http”&“:”&“ // stackoverflow.com/questions/2595692",2595692)

然后,我选择了这些粘贴的项目并运行下面的F2Entry宏:

Sub F2Enter()
Dim cell As Range
Application.Calculation = xlCalculationManual
For Each cell In Selection
    cell.Activate
    cell = Trim(cell)
Next cell
Application.Calculation = xlCalculationAutomatic
EndSub

然后,我删除了文本输入列和列A。

我最后得到一列热链接的问题编号:

2595692

135171

等等

干杯


0

如果将文本内容复制到新列并使用:

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

在原始列上。然后将$用作列,如下所示:

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

这是它对Windows 7上的Excel 2010起作用的唯一方式。您可以复制公式。


0

对于使用Excel 2016登陆此处的任何人,您只需突出显示该列,然后单击框中功能区Hyperlink上的选项卡即可。HomeStyles

在此处输入图片说明

编辑:不幸的是,这仅更新单元格样式,而不更新函数。


3
这样只会给出单元格样式,而不会使URL可点击。
stenlytw '18

1
是的,以为这是一个很好的解决方案,但是没有用。这真是让我感到困惑。

我刚刚测试过,你们两个是对的。我被牢房样式迷住了。
jGroot

@jGroot-这正是我想要的样式,没有任何功能。
Raj Rajeshwar Singh Rathore

-1

这里最简单的方法

  • 突出显示整个专栏
  • 点击''插入''
  • 点击``超链接''
  • 单击“放置在此文档中”
  • 点击确定
  • 就这样

除非链接指向文档中的某些内容,否则这将不起作用。
埃里卡

我确实同意该问题措辞不佳,但预定的目标显然是案文本身的目标。
Jason K.

-3

Excel 2010中最简单的方法:选择带有URL文本的列,然后从“主页”选项卡中选择“超链接样式”。列中的所有URL现在都是超链接。

此外,双击URL文本末尾的每个单元格,并添加一个空格或仅输入一个,也会产生超链接。类似于您必须在MS Outlook电子邮件中创建URL链接的方式。


4
它们不是超链接,它们看起来像超链接。那只是样式。
埃里卡(Erica)2015年

-5

有一个非常简单的方法可以做到这一点。创建一个超链接,然后使用“格式刷”复制格式。它将为每个项目创建一个超链接。


8
这是行不通的,它只是复制格式,使它们看起来像超链接。
reergymerej
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.