【问题标题】:How do I convert a column of text URLs into active hyperlinks in Excel?如何将一列文本 URL 转换为 Excel 中的活动超链接?
【发布时间】:2023-03-18 05:01:01
【问题描述】:

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

【问题讨论】:

    标签: excel-2007 hyperlink


    【解决方案1】:

    如果您不想制作宏并且不介意添加一列,那么只需在您的 URL 列旁边创建一个新列。

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

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

    【讨论】:

    • 如果我的 A 列包含 200 个链接值,是否可以编写一个超链接 200 个值的公式并将其重写到 A 列,而不是创建一个新列?
    • 太棒了!最棒的是,这一步非常简单,我可以将 CSV 文件传递​​给外行,他可以轻松地从中生成 URL。
    • 要使其成为一列,只需复制超链接列并将“粘贴值”粘贴到您要保留的任何列中。
    • 这应该被接受,因为它解决了大多数用例。
    • 隐藏不是超链接的原始列
    【解决方案2】:

    在这里创建宏:

    在 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! 完成!

    【讨论】:

    • 如果您使用显式选项,请将 Dim xCell 添加为范围。 +1 用于更改单元格(按要求)并提供执行此操作的代码的解决方案。
    • 这对我来说效果很好,因为我在电子表格中有大约 50,000 个链接需要更新并且必须分块进行,否则 Excel 会崩溃。
    • 要将电子邮件地址变成超链接,请将Address:=xCell.Formula 更改为Address:="mailto:" & xCell.Formula
    • 另外,对于不以 http:// 开头的 URL,需要添加此项(使用上述更改,但将 mailto: 替换为 http://。否则超链接不起作用。
    • 效果很好。仅供参考 Excel 2016 每个工作表的超链接限制为 66,530 个,因此如果超出该限制,预计最终会出现运行时错误。 support.office.com/en-us/article/…
    【解决方案3】:

    相当短的列表很简单:

    1. 双击网址所在的框
    2. 输入

    你有你的链接;)

    【讨论】:

    • 我使用 F2 编辑一个单元格,然后输入,反复快速运行我的列表。简单的。谢谢!
    • 这加上关于 F2 的评论让我在大约一分钟内进入了包含 160 个超链接的列。所以是的,如果专栏足够短,这就是要走的路。
    • 我不认为这对于有数百个单元格要转换的人来说是一个解决方案。
    • 我有 287,000 行。哭吧。
    • @thejohnbackes 对于较新版本的 Excel,将一行转换为超链接并使用格式刷将 URL 格式提供给其他人就足够了。
    【解决方案4】:

    这是我找到的一种方法。我在使用 Excel 2011 的 Mac 上。 如果 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) 之类的内容,并且不需要网址列表。这就是我的情况,而且效果很好。

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

    【讨论】:

    • 适用于 Windows、Excel 2013,是额外列的绝佳替代品。
    • 仅供参考,对于 Open Office,上面给出了一个错误,但似乎 =HYPERLINK(C1) 如果只给出一个参数就可以工作
    【解决方案5】:

    好的,这是一个很老套的解决方案,但我就是不知道如何让 Excel 将一列 URL 批量评估为超链接。

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

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

    【讨论】:

    • 只要做 =(HYPERLINK(INDIRECT(ADDRESS(ROW(),COLUMN()+1)),"Dress" & ROW())) 就更简单了
    • 同意,这是不需要维护 2 列的最佳答案。
    • +1 用于替换 '=' -> '='。这就是我要寻找的。谢谢。
    【解决方案6】:

    如果adding an extra column with the hyperlinks 不是一个选项, 另一种方法是使用外部编辑器将您的超链接附在=hyperlink("") 中,以获得=hyperlink("originalCellContent")

    如果你有 Notepad++,这是一个你可以用来半自动执行这个操作的方法:

    • 将地址列复制到记事本++
    • 按住 ALT-SHIFT,将光标从左上角扩展到左下角,然后键入 =hyperlink("。这会在每个条目的开头添加=hyperlink("
    • 打开“替换”菜单(Ctrl-H),激活正则表达式(ALT-G) ,并将$(行尾)替换为"\)。这会在每行的末尾添加一个封闭的引号和一个封闭的括号(在激活正则表达式时需要使用 \ 进行转义)。
    • 将数据粘贴回 Excel 中。实际上,只需复制数据并选择您希望数据结束的列的第一个单元格。

    【讨论】:

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

    这个方法适用于我使用超链接功能:

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

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

    【讨论】:

    • =HYPERLINK("http://"&B10,B10) 在我的 Excel 2013 中不起作用,但是 =HYPERLINK("http://"&B10) 确实起作用。
    【解决方案8】:

    我震惊 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 上的列中

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

    <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>

    【讨论】:

    • 哇!这是最简单也是最好的答案!
    【解决方案9】:

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

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

    【讨论】:

    • 在更高版本中(我使用的是 Office 2011),这不起作用 - 我只是得到一个指向桌面文件(这个)的超链接,而不是单元格中显示的 url。例如file://localhost/Users/xxxx/Desktop/Blahblahblah 文件名.xlsx - Sheet1!A2
    【解决方案10】:
    1. 使用公式 =HYPERLINK() 创建一个临时的新超链接列
    2. 将该列复制到 Microsoft Word(仅在 Word 运行后复制到剪贴板)。
    3. 复制新 Word 文档中的所有内容(ctrl+a,然后是 ctrl+c)。
    4. 粘贴到 Excel 中,替换原来的文本列。使用公式删除临时列。

    【讨论】:

      【解决方案11】:

      我发现如果超链接不包含 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
      

      【讨论】:

      • 谢谢,这适用于 excel 文档中的电子邮件地址 - 我尝试了其他几种不同的方法,但这是一种有效的方法,尽管我需要将 http:// 更改为 mailto :
      【解决方案12】:

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

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

      【讨论】:

        【解决方案13】:

        试试这个:

        =HYPERLINK("mailto:"&A1, A1)

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

        【讨论】:

          【解决方案14】:

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

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

          【讨论】:

          • 只给出单元格样式,而不是使 URL 可点击。
          • 是的,认为这是一个很好的解决方案,但它不起作用。这真的让我很困惑,这很难。
          • 我刚刚测试过,你们两个是对的;我被单元格样式愚弄了。
          • @jGroot - 这正是我想要的没有任何功能的样式。
          【解决方案15】:

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

          【讨论】:

            【解决方案16】:

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

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

            在您原来的专栏上。然后使用$ 作为列,如下所示:

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

            这是它在 Windows 7 上的 Excel 2010 上对我有用的唯一方法。您可以复制公式。

            【讨论】:

              【解决方案17】:

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

              解决方案由(Jim Gordon Mac MVP)在http://answers.microsoft.com/en-us/mac/forum/macoffice2008-macexcel/how-to-copy-and-paste-to-mac-excel-2008-a-list-of/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-g-a.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 中,并且链接处于活动状态。

              【讨论】:

                【解决方案18】:

                感谢 Cassiopeia 提供代码。我更改了他的代码以使用本地地址,并对他的条件进行了少许更改。我删除了以下条件:

                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 个超链接。 :) 谢谢仙后座。
                • 你为什么要定义NotPresent
                • 我刚刚从 Cassiopeia 之前的回复中复制了上面的代码。并根据我的理解对其进行了修改。所以我不知道 NotPresent 是否必要。但我修改后的代码运行良好。
                【解决方案19】:

                我有一个输入 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

                等等

                干杯

                【讨论】:

                  【解决方案20】:

                  在 Mac 上,一个非常简单的方法是在 Excel 中选择整个电子表格,复制,启动 Numbers,粘贴,然后全选,复制并粘贴回 Excel。

                  【讨论】:

                    【解决方案21】:

                    这里最简单的方法

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

                    【讨论】:

                    • 这不起作用,除非链接指向文档中的某些内容。
                    • 我同意这个问题措辞不当,但预期目标显然是文本本身。
                    【解决方案22】:

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

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

                    【讨论】:

                    • 它们不是超链接,它们看起来像超链接。这只是样式。
                    【解决方案23】:

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

                    【讨论】:

                    • 这不起作用,它只是复制格式,使它们看起来像超链接。
                    猜你喜欢
                    • 2015-09-03
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2018-01-30
                    • 2010-12-29
                    • 1970-01-01
                    • 2013-07-27
                    相关资源
                    最近更新 更多