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

Posso usar uma fórmula excelente para extrair a localização de uma hiperligação numa célula?

Tenho uma folha de cálculo com um grande número de células contendo hiperligações com texto de exibição diferente da localização da hiperligação

ie:

cell location: A1

display text = “Site Info”

localização do hiperlink = http://www.mylocation.com

& Existe alguma fórmula excel que me permita aceder à cadeia de texto da localização do hiperlink?

O ideal seria que se parecesse com isto:

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

Respostas (3)

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

Pode usar uma macro:

  • Abrir uma nova pasta de trabalho.
  • Entre em VBA (Prima Alt+F11)
  • Insira um novo módulo (Insira > Módulo)
  • Copie e Cole a função definida pelo utilizador do Excel abaixo de
  • Saia de VBA (Prima Alt+Q)
  • Use esta sintaxe para esta função personalizada do Excel: =GetURL(cell,[default_value])
22
22
22
2015-05-01 09:34:26 +0000

Só precisava de extrair o endereço a partir do valor de uma única célula, por isso achei útil esta pequena função:

Em vez de uma macro “força bruta”, também se poderia criar uma função definida pelo utilizador que extraísse e devolvesse o URL para qualquer hiperlink para o qual fosse apontado:

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

Neste caso, pode-se colocá-lo onde se quiser. Se quiser, por exemplo, que o URL de um hiperlink em A1 seja listado na célula C25, então na célula C25 introduziria a seguinte fórmula:

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

}