【问题标题】:Excel convert hyperlink formulas to links with friendly namesExcel 将超链接公式转换为具有友好名称的链接
【发布时间】:2016-07-24 04:39:11
【问题描述】:

我需要将带有 HYPERLINK 公式的单元格列转换为仅带有超链接到 link_location 的友好名称的单元格。例如,=HYPERLINK("https://www.google.com/search?hl=en&q="&SUBSTITUTE(A2," ","+")&"&tbm=isch&gws_rd=ssl","G images") 到一个只有 G 图像并超链接到的单元格公式生成的超链接,例如https://www.google.com/search?hl=en&q=search+term&tbm=isch&gws_rd=ssl。我可以通过粘贴到 Word 中然后再粘贴回 Excel 中来做到这一点,但我需要在 Excel 中执行此操作,无论是通过一些复制/粘贴技巧还是宏。

【问题讨论】:

  • 您可以发布您期望看到的示例表/输出吗?
  • 我希望通过宏将 HYPERLINK 公式转换为与我右键单击单元格、单击超链接...、将“G 图像”放在“要显示的文本”中的格式相同的格式: ”字段和“地址:”字段中的“google.com/…”。
  • 哦 - 所以,在查看单元格时,您希望单元格中有公式,而是链接到 URL 的文本“G 图像” ?
  • URL 是否总是像您的示例一样是 Google 的?
  • 我没有看到这个,但是不,它绝对不会总是谷歌。我开始认为我应该重新考虑原始公式并使用不同的途径来实现我想要的,因为我不认为做我需要做的事情会这么复杂,因为我可以很容易地粘贴到单词和返回并获得我需要的结果。非常感谢您的帮助。

标签: excel hyperlink


【解决方案1】:

在 Excel Ninja Chihiro 找到这个: 一种方法是复制并粘贴到 Word Doc。 然后从 Word Doc 复制并粘贴回 Excel。这将保留链接和标题/友好名称。

对于大型文档或带有链接的许多列,这当然不太实用。

【讨论】:

    【解决方案2】:

    我想我明白了,试试这个(根据需要调整rng):

    编辑:新代码,每条评论如下:

    Sub replace_Hyperlink_Formula_With_Text()
    Dim linkWS As Worksheet, newWS As Worksheet
    Dim linkText$, url$, address$, subPart$
    Dim cel As Range, rng As Range
    Dim commaPos&
    
    Set linkWS = Sheets("Sheet1") ' Change this to the sheet name that has =Hyperlink("http://...","Link")
    Set newWS = Sheets.Add
    newWS.Name = "Links Only" ' or whatever you want the non-Hyperlink Formula sheet to be called.
    
    Set rng = linkWS.Range("A1:A2") ' Edit this as needed
    
    For Each cel In rng
        linkText = cel.Value
        commaPos = InStrRev(cel.Formula, ",")
    
        subPart = WorksheetFunction.Substitute(linkWS.Range("A2"), " ", "+")
        url = Mid(cel.Formula, WorksheetFunction.Search("(", cel.Formula) + 2, commaPos)
        Debug.Print url
    
        commaPos = InStrRev(url, ",")
        url = Left(url, commaPos - 2)
        url = WorksheetFunction.Substitute(url, "&", ";", 1)
        Debug.Print url
    
    
        ' Now, trim SUBSTITUTE out of it
        Dim leftUrl$, rightURL$
        leftUrl = Left(url, WorksheetFunction.Search(";", url) - 2)
        rightURL = Mid(url, WorksheetFunction.Search("&", url) + 2, Len(url))
        url = leftUrl & subPart & rightURL
        Debug.Print url
      '  cel.ClearContents
        address = cel.address
        newWS.Range(address).Hyperlinks.Add anchor:=newWS.Range(address), address:=url, TextToDisplay:=linkText
    Next cel
    
    End Sub
    

    它很笨拙,但它应该能够成功解析出 &Substitute...& 部分,并将其替换为 A2 中的内容。

    【讨论】:

    • 效果很好;谢谢!有没有一种简单的方法可以修改它,以便在相应单元格的另一张表上创建这些超链接单元格并将公式保留在原始表中?这不是绝对必要的,但现在我考虑到它对用户来说会更方便,并且很抱歉之前没有考虑过。
    • @DaveA - 是的,当然没问题。我将编辑代码,如果它适合您,请您标记为答案(点击帖子左侧的检查大纲)?
    • 抱歉,刚刚发现它没有正确制作网址。输出类似google.com/search?hl=en&q=%22&SUBSTITUTE(A
    • @DaveA - 哦,我忘了你是用公式把 URL 放在一起的。查看我编辑的代码,它应该让你走得更远。我还假设您的 A2 中包含 /,以便 URL 正常工作。如果这不起作用,您能否发布数据表的样本? (主要是 A2 中的内容)。
    【解决方案3】:

    我知道这是旧问题,但不确定是否已解决。 请尝试以下操作。

    Sub convert_hyperlink_formula_to_hyperlink_cell()
        Dim address_string As String, display_string As String
        Dim current_range As Range
    
        For Each current_range In Selection
            address_string = current_range.Hyperlinks(1).Address
            display_string = current_range.Value
            current_range.ClearContents
            ActiveSheet.Hyperlinks.Add Anchor:=current_range, Address:=address_string, TextToDisplay:=display_string
        Next current_range
    End Sub
    

    【讨论】:

      猜你喜欢
      • 2016-10-16
      • 1970-01-01
      • 2016-07-11
      • 1970-01-01
      • 2015-10-23
      • 2018-01-30
      • 1970-01-01
      • 2016-02-07
      • 2018-04-08
      相关资源
      最近更新 更多