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

Czy mogę użyć formuły Excela, aby wyodrębnić lokalizację hiperłącza w komórce?

Mam arkusz kalkulacyjny z dużą liczbą komórek zawierających hiperłącza z tekstem wyświetlanym różnym od lokalizacji hiperłącza

tj:

lokalizacja komórki: A1

display text = “Site Info”

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

Czy istnieje formuła Excela, która pozwala mi uzyskać dostęp do ciągu tekstowego lokalizacji hiperłącza?

Idealnie wyglądałoby to tak:

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

Odpowiedzi (3)

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

Możesz użyć makra:

  • Otworzyć nowy skoroszyt.
  • Wejdź do VBA (Wciśnij Alt+F11)
  • Wstaw nowy moduł (Wstaw> Moduł)
  • Skopiuj i wklej poniższą funkcję zdefiniowaną przez użytkownika Excela
  • Wyjdź z VBA (Wciśnij Alt+Q)
  • Użyj tej składni dla tej niestandardowej funkcji Excela: =GetURL(komórka,[domyślna_wartość])
22
22
22
2015-05-01 09:34:26 +0000

Potrzebowałem tylko wyodrębnić adres z wartości pojedynczej komórki, więc przydała mi się ta niewielka funkcja:

Zamiast makra typu “brute force” można też utworzyć funkcję zdefiniowaną przez użytkownika, która wyodrębni i zwróci adres URL dla dowolnego hiperłącza, na które wskaże:

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

W tym przypadku można ją umieścić, gdzie się chce. Jeśli chcesz na przykład, aby adres URL z hiperłącza w komórce A1 został wypisany w komórce C25, wówczas w komórce C25 wpisałbyś następującą formułę:

=GetURL(A1) http://excel.tips.net/T003281ExtractingURLsfromHyperlinks.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");
  }

}