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

Kan ik een Excel-formule gebruiken om de linklocatie van een hyperlink in een cel te extraheren?

Ik heb een spreadsheet met een groot aantal cellen die hyperlinks bevatten met een andere displaytekst dan de hyperlinklocatie

nl:

cell location: A1

display text = “Site Info”

hyperlink location = http://www.mylocation.com

Bestaat er een excel-formule waarmee ik de tekststring van de hyperlinklocatie kan openen?

Idealiter zou het er als volgt uitzien:

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

Antwoorden (3)

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

U kunt een macro gebruiken:

  • Open een nieuwe werkmap.
  • Ga naar VBA (druk op Alt+F11)
  • Voeg een nieuwe module in (Invoegen -> Module)
  • Kopieer en plak de onderstaande door de gebruiker gedefinieerde Excel-functie
  • Ga uit VBA (druk op Alt+Q)
  • Gebruik deze syntax voor deze aangepaste Excel-functie: =GetURL(cell,[default_value])
22
22
22
2015-05-01 09:34:26 +0000

Ik hoefde alleen het adres uit de waarde van een enkele cel te halen, dus vond ik deze kleine functie handig:

In plaats van een “brute force” macro, zou je ook een door de gebruiker gedefinieerde functie kunnen maken die de URL voor elke hyperlink waarnaar werd verwezen zou extraheren en retourneren:

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

In dit geval kun je hem plaatsen waar je maar wilt. Wilt u bijvoorbeeld dat de URL van een hyperlink in A1 wordt vermeld in cel C25, dan zou u in cel C25 de volgende formule invoeren:

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

}