2013-05-08 23:44:33 +0000 2013-05-08 23:44:33 +0000
49
49

Kann ich eine Excel-Formel verwenden, um die Linkposition eines Hyperlinks in einer Zelle zu extrahieren?

Ich habe eine Kalkulationstabelle mit einer großen Anzahl von Zellen, die Hyperlinks enthalten, deren Anzeigetext sich von der Hyperlinkposition

unterscheidet, d. h.:

Zellenposition: A1

Anzeigetext = “Site Info”

Hyperlinkposition = http://www.mylocation.com

Gibt es eine Excel-Formel, mit der ich auf die Textzeichenfolge der Hyperlinkposition zugreifen kann?

Idealerweise würde es so aussehen:

FORMULA(A1) = http://www.mylocation.com

Antworten (3)

55
55
55
2013-05-09 00:20:34 +0000

Sie können ein Makro verwenden:

  • Öffnen Sie eine neue Arbeitsmappe.
  • Rufen Sie VBA auf (drücken Sie Alt+F11)
  • Fügen Sie ein neues Modul ein (Einfügen > Modul)
  • Kopieren Sie die unten stehende benutzerdefinierte Excel-Funktion und fügen Sie sie ein
  • Verlassen Sie VBA (drücken Sie Alt+Q)
  • Verwenden Sie diese Syntax für diese benutzerdefinierte Excel-Funktion: =GetURL(cell,[default_value])
22
22
22
2015-05-01 09:34:26 +0000

Ich brauchte nur die Adresse aus dem Wert einer einzelnen Zelle zu extrahieren, daher fand ich diese kleine Funktion praktisch:

Anstelle eines “Brute-Force”-Makros könnten Sie auch eine benutzerdefinierte Funktion erstellen, die die URL für jeden Hyperlink, auf den sie zeigt, extrahiert und zurückgibt:

Function GetURL(rng As Range) As String
     On Error Resume Next
     GetURL = rng.Hyperlinks(1).Address 
End Function

In diesem Fall können Sie sie an der gewünschten Stelle platzieren. Wenn Sie z. B. die URL von einem Hyperlink in A1 in Zelle C25 aufgelistet haben möchten, dann würden Sie in Zelle C25 die folgende Formel eingeben:

=GetURL(A1) http://excel.tips.net/T003281_Extracting_URLs_from_Hyperlinks.html

2
2
2
2017-01-30 09:54:57 +0000
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");
  }

}