【问题标题】:Extract URL from =Hyperlink()从 =Hyperlink() 中提取 URL
【发布时间】:2017-03-03 04:04:26
【问题描述】:

我正在尝试从使用公式生成的链接中提取计算公式:

=HYPERLINK("https://www.google.com/search?q="&A1&B1,"Link")
A1vbaB1help

我已经看到很多很多的帖子,甚至还有一些 SO threads 的建议,但他们只会让我去 ...q= 而不考虑我还有更多的文字。

到目前为止,我最幸运的是来自this thread,我已经调整它以搜索到B1,如下所示:

...
S = Left(S, InStr(S, "B17") + 2)
...

但它返回https://www.google.com/search?q="&A1&B1

如何让它在返回 URL 之前先评估这些单元格中的内容?

【问题讨论】:

  • 您是否尝试过在帮助列中构建字符串并查看是否有所作为?即使只是为了排除它是公式或数据(如果有意义的话)
  • @MacroMan - ...!!!如果我快速提取( 和第一个逗号之间的文本,我想我可以这样得到。 Dang,我一直在考虑从公式中提取太久。我想我可以用Mid() 得到这个。让我试试看。谢谢你的主意!编辑:等等,嗯。我必须在保留引用的同时提取它,并将它放在一个单元格中以便它可以评估。也许我可以使用Evaluate()
  • 您也可以使用split() 来解决这个问题。类似Split(t, Chr(34))(1) & Range(Split(t, "&")(1)).Value & Range(Left(Split(t, "&")(2), 2)).Value

标签: excel vba


【解决方案1】:

我想我想多了。感谢@MacroMan 让我的头脑清醒。我整理了以下,相当笨重的宏。

Function hyperlinkText(rg As Range) As String
' Inspired by https://stackoverflow.com/questions/32230657/extract-url-from-excel-hyperlink-formula/32233083#32233083
Dim sFormula As String
Dim Test As String

sFormula = rg.Formula
Test = Mid(sFormula, WorksheetFunction.Search("""", sFormula), WorksheetFunction.Search(",", sFormula) - WorksheetFunction.Search("""", sFormula))
hyperlinkText = Evaluate("=" & Test)
End Function

这可以采用如下所示的 URL:
=HYPERLINK("https://www.google.com/search?q="&A17&B17,"Link") 并返回评估后的 URL:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-15
    • 2011-07-09
    • 1970-01-01
    • 1970-01-01
    • 2015-05-30
    • 2015-03-01
    • 2012-04-08
    相关资源
    最近更新 更多