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

Posso usare una formula excel per estrarre la posizione di un collegamento ipertestuale in una cella?

Ho un foglio di calcolo con un gran numero di celle che contengono collegamenti ipertestuali con testo di visualizzazione diverso dalla posizione del collegamento ipertestuale

cioè:

posizione della cella: A1

display text = “Site Info”

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

Esiste una formula excel che mi permetta di accedere alla stringa di testo dell'hyperlink location?

Idealmente sarebbe come questo:

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

Risposte (3)

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

Puoi usare una macro:

  • Aprire una nuova cartella di lavoro.
  • Entrare in VBA (Premere Alt+F11)
  • Inserire un nuovo modulo (Inserisci > Modulo)
  • Copiare e incollare la funzione Excel definita dall'utente qui sotto
  • Uscire da VBA (Premere Alt+Q)
  • Utilizzare questa sintassi per questa funzione Excel personalizzata: =GetURL(cella,[valore_di default])
22
22
22
2015-05-01 09:34:26 +0000

Avevo solo bisogno di estrarre l'indirizzo dal valore di una singola cella, così ho trovato questa piccola funzione utile:

Invece di una macro “forza bruta”, potreste anche creare una funzione definita dall'utente che estrarrebbe e restituirebbe l'URL per qualsiasi hyperlink a cui fosse puntata:

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

In questo caso potete metterla dove volete. Se volete, per esempio, che l'URL di un collegamento ipertestuale in A1 sia elencato nella cella C25, allora nella cella C25 inserite la seguente formula:

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

}