
我有一個電子表格,其中包含大量單元格,其中包含顯示文字與超連結位置不同的超連結
IE:
社區位置:A1
顯示文字=“網站資訊”
超連結位置=“http://www.mylocation.com」
有沒有一個Excel公式可以讓我存取超連結位置的文字字串?
理想情況下它看起來像這樣:
公式(A1) = "http://www.mylocation.com」
答案1
我只需要從單一單元格的值中提取地址,所以我發現這個小函數很方便:
除了「強力」巨集之外,您還可以建立一個使用者定義的函數,該函數將提取並傳回它所指向的任何超連結的 URL:
Function GetURL(rng As Range) As String
On Error Resume Next
GetURL = rng.Hyperlinks(1).Address
End Function
在這種情況下,您可以將其放置在您想要的位置。例如,如果您希望將 A1 中的超連結的 URL 列在儲存格 C25 中,則可以在儲存格 C25 中輸入下列公式:
=取得URL(A1)
http://excel.tips.net/T003281_Extracting_URLs_from_Hyperlinks.html
答案2
您可以使用巨集:
- 開啟一個新的工作簿。
- 進入 VBA(按 Alt+F11)
- 插入新模組(插入 > 模組)
- 複製並貼上下面的 Excel 使用者定義函數
- 退出 VBA(按 Alt+Q)
對此自訂 Excel 函數使用下列語法:=GetURL(cell,[default_value])
Function GetURL(cell As range, Optional default_value As Variant) 'Lists the Hyperlink Address for a Given Cell 'If cell does not contain a hyperlink, return default_value If (cell.range("A1").Hyperlinks.Count <> 1) Then GetURL = default_value Else GetURL = cell.range("A1").Hyperlinks(1).Address End If End Function
答案3
function EXTRACT_URL(input) {
var range = SpreadsheetApp.getActiveSheet().getRange(input);
var re = /^.+?\(\"(.+?)\",.+?$/;
if (input.indexOf(':') != -1) {
var formulas = range.getFormulas();
for (var i in formulas) {
for (var j in formulas[i]) {
formulas[i][j] = formulas[i][j].replace(re, "$1");
}
}
return formulas;
} else {
return range.getFormula().replace(re, "$1");
}
}
答案4
我和@SAL有同樣的問題
我發現該.Hyperlink
物件實際上將地址拆分為.Address
和.SubAddress
如果遇到分隔符號。 「#」就是這樣的分隔符號之一(我不知道是否還有其他分隔符號)。
請參閱上面 @gilly3 的評論以及另一個 StackOverflow 問題: hyperlinks(1).address 僅傳回部分位址
還有微軟關於 .SubAddress 的(不完整)文件: Hyperlink.SubAddress 屬性
任何地方都沒有提到的一件事是,「#」分隔符號不包含在其中.Address
,.SubAddress
因此如果您想要一個實際上可以用作完整 URL 的位址,則必須重新新增「#」分隔符號。
這樣,我修改了@Matthew Lock的程式碼如下,還包括從@Igor O儲存多個超連結的可能性以及我添加的「#」:
Function getURL(rng As Range) As String
On Error Resume Next
fullURL = ""
For Each HL In rng.Hyperlinks
If Len(HL.SubAddress) > 0 Then
fullURL = fullURL & HL.Address & "#" & HL.SubAddress & " "
Else
fullURL = fullURL & HL.Address & " "
End If
Next
getURL = fullURL
End Function
這應該會傳回所有超鏈接的完整文字字串(我在末尾添加了一個空格,因此如果有多個超鏈接,它們將被分隔開)。