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


46

Ich habe eine Tabelle mit einer großen Anzahl von Zellen, die Hyperlinks mit anderem Anzeigetext als der Hyperlinkposition enthalten

dh:

Zellstandort: A1

Anzeigetext = "Site Info"

Hyperlink location = " http://www.mylocation.com "

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

Im Idealfall würde es so aussehen:

FORMEL (A1) = " http://www.mylocation.com "


1
Tatsächliche Hyperlinks (Einfügen >> Hyperlink) oder Hyperlinks verwenden =HYPERLINK()?

Muss es eine Formel sein? Es gibt viele VBA-Lösungen.
CharlieRB

Antworten:


53

Sie können ein Makro verwenden:

  • Öffnen Sie eine neue Arbeitsmappe.
  • In VBA einsteigen (Alt + F11 drücken)
  • Ein neues Modul einfügen (Einfügen> Modul)
  • Kopieren Sie die unten angegebene benutzerdefinierte Excel-Funktion und fügen Sie sie ein
  • Raus aus VBA (Drücken Sie Alt + Q)
  • Verwenden Sie diese Syntax für diese benutzerdefinierte Excel-Funktion: = GetURL (Zelle, [Standardwert])

     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
    

4
@igor Warum verwenden Sie "range (" a1 ") in cell.range (" A1 "). Hyperlinks.Count und cell.range (" A1 "). Hyperlinks (1) .Address? Ich habe Ihr Makro aber kopiert habe es rausgenommen (-> cell.hyperlinks.count und cell.hyperlinks (1) .adress) und es funktioniert einwandfrei. Ich bin gespannt auf den Zweck des "range (" a1 ") hier.
PO

Dies soll behandelt werden, wenn der Hyperlink mehrere Links enthält. Es war nur eine Idee, toll, dass es mit Ihren Anpassungen funktioniert hat. :)
Igor O

Wenn Ihr Hyperlink ein Dokumentfragment enthält (zB #something), die in dem Abschnitt gespeichert ist SubAddress, so dass Sie zu verketten müssen Address, "#"und SubAddress.
gilly3

Da parameter cellein Bereichsobjekt ist, kann es mehr als eine Zelle enthalten. Range("A1")könnte umgeschrieben werden als Cells(1). Es weist die Funktion an, nur die erste Zelle im Parameter zu berücksichtigen cell.
ChrisB

19

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

Anstelle eines "Brute Force" -Makros können Sie auch eine benutzerdefinierte Funktion erstellen, die die URL für jeden Hyperlink extrahiert und zurückgibt, auf den verwiesen wird:

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

In diesem Fall können Sie es platzieren, wo Sie möchten. Wenn Sie beispielsweise möchten, dass die URL eines Hyperlinks in A1 in Zelle C25 aufgeführt wird, geben Sie in Zelle C25 die folgende Formel ein:

= GetURL (A1)

http://excel.tips.net/T003281_Extracting_URLs_from_Hyperlinks.html


2
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");
  }

}

In anderen Fällen lassen Sie die Anführungszeichen in der Zellenreferenz weg, indem Sie diese in der Tabelle verwenden = EXTRACT_URL (ADDRESS (row (A4), 1,4)). Andernfalls müssen Sie die Bereichsreferenz fest codieren. Dann können Sie diese Funktion von einer Zelle in eine andere kopieren.
Walker Rowe
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.