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

¿Puedo utilizar una fórmula de Excel para extraer la ubicación de un hipervínculo en una celda?

Tengo una hoja de cálculo con un gran número de celdas que contienen hipervínculos con un texto de visualización diferente a la ubicación del hipervínculo

es decir:

ubicación de la celda: A1

texto de visualización = “Información del sitio”

ubicación del hipervínculo = http://www.mylocation.com

¿Existe alguna fórmula de Excel que me permita acceder a la cadena de texto de la ubicación del hipervínculo?

Lo ideal sería que fuera así

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

Respuestas (3)

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

Puede utilizar una macro:

  • Abrir un nuevo libro de trabajo.
  • Entrar en VBA (Pulsar Alt+F11)
  • Insertar un nuevo módulo (Insertar > Módulo)
  • Copiar y pegar la función definida por el usuario de Excel que aparece a continuación
  • Salir de VBA (Pulsar Alt+Q)
  • Utilizar esta sintaxis para esta función personalizada de Excel: =GetURL(celda,[valor_por defecto])
22
22
22
2015-05-01 09:34:26 +0000

Sólo necesitaba extraer la dirección del valor de una sola celda, así que me resultó útil esta pequeña función:

En lugar de una macro de “fuerza bruta”, también podrías crear una función definida por el usuario que extrajera y devolviera la URL de cualquier hipervínculo al que se apuntara:

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

En este caso puedes colocarla donde quieras. Si quieres, por ejemplo, que la URL de un hipervínculo en A1 aparezca en la celda C25, entonces en la celda C25 introducirías la siguiente 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");
  }

}