【问题标题】:Detecting url (link) in the text cell检测文本单元格中的 url(链接)
【发布时间】:2018-01-17 14:10:31
【问题描述】:

我在 excel 中有一个包含 3 列的表格:

--------------
|ID|Name|Info|
--------------

在信息列中有一些文本,其中包括引用和源链接。但是,不知何故,它们不被识别为超链接(即 - 不可点击)。链接始终保留格式:

(http://www. .....) or (https://www. ....) 

它们总是被大括号包围并且在新行上。

如何自动将文本单元格内的这些链接转换为超链接?我尝试使用自动更正,但不起作用。即使我选择文本并单击鼠标右键 - 也没有超链接选项。

感谢您提供任何帮助。即使解决方案是使用宏。

更新:单元格中的文本示例

The information in this cell is about Google (http://www.google.com) and taken from Wikipedia (http://en.wikipedia.org)

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    这应该更接近您希望实现的目标。无限数量的链接被转换为正常工作的超链接,写入Info 列及其右侧(或CInfo 右侧的列数。请注意代码中的 cmets。

    Sub ExtractLinks()
        ' 18 Jan 2018
    
        Const TargetClm As Long = 3                 ' 3 defines column C
        ' hyperlinks are written to TargetClm
        ' and to the columns to the right of TargetClm
    
        Dim Txt As String
        Dim R As Long, C As Long
        Dim n As Integer
    
        Application.ScreenUpdating = False
        With ActiveSheet
            ' Info is in column C, starting from row 2:
            For R = 2 To .Cells(.Rows.Count, TargetClm).End(xlUp).Row
                C = 0               ' set C = 1 to not over-write original cell value
                                    ' and start writing to the right of TargetClm
                With .Cells(R, TargetClm)
                    Txt = .Value
                    Do
                        n = InStr(Txt, "(")
                        If n Then
                            Txt = Mid(Txt, n + 1)
                            n = InStr(Txt, ")")
                            If n Then
                                .Offset(0, C).Formula = "= HYPERLINK(""" & Left(Txt, n - 1) & """)"
                                C = C + 1
                                Txt = Mid(Txt, n + 1)
                            End If
                        End If
                    Loop While n
                End With
            Next R
        End With
        Application.ScreenUpdating = True
    End Sub
    

    【讨论】:

    • 我试图查看您的宏的行为方式,但我收到“应用程序定义或对象定义错误”=(
    • 你需要把URL放在引号里,所以写"= HYPERLINK(""" & Left(Txt, n - 1) & """)
    • @Fun Thomas - 是的。感谢您指出这一点。我已经更正了发布的代码。
    【解决方案2】:

    为了在它们自己的单元格中转换它们,您需要 VBA - 简单,但这更简单:-

    Info 列旁边插入一个空白列。在第 2 行输入此公式。将公式中对 C 列的引用调整为指向您的 Info 列。

    =HYPERLINK(MID($C2,2,LEN($C2)-2))
    

    根据需要将公式复制下来。这应该在新列中创建超链接。选择所有这些,复制并粘贴 > 值。删除原始列。完成。

    【讨论】:

    • 感谢您的建议。但是,这很清楚。问题是单元格不仅包含链接,还包含一些信息+链接。所以,我不希望整个单元格成为一个链接,而只是其中的一部分。并且,单元格可以包含 2-3 个链接作为参考
    • 查看添加示例
    • 您的新问题与原来的不同 - 并且不完整。例如,如果有多个链接,您希望将它们放在哪里?任何一个单元格中只能有一个有效的超链接。
    【解决方案3】:

    要“就地”转换它们,请选择单元格并运行这个简短的宏:

    Sub hyperMaker()
        Dim rng As Range
        Set rng = Selection
    
        For Each r In rng
            v = r.Value
            If Left(v, 1) = "{" And Right(v, 1) = "}" Then
                If Mid(v, 2, 4) = "http" Then
                    vv = Mid(v, 2, Len(v) - 2)
                    ActiveSheet.Hyperlinks.Add Anchor:=r, Address:=vv, TextToDisplay:=v
                End If
            End If
        Next r
    End Sub
    

    【讨论】:

      猜你喜欢
      • 2011-08-04
      • 1970-01-01
      • 1970-01-01
      • 2018-06-30
      • 2018-10-27
      • 2023-03-17
      • 1970-01-01
      • 2017-07-23
      • 2021-05-12
      相关资源
      最近更新 更多