Чи можу я використовувати формулу excel для отримання місця розташування гіперпосилання в клітині?


46

У мене є електронна таблиця з великою кількістю комірок, що містять гіперпосилання з текстом відображення, відмінним від місця розташування гіперпосилання

тобто:

розташування комірки: A1

display text = "Інформація про сайт"

гіперпосилання розташування = " http://www.mylocation.com "

Чи існує формула excel, яка дозволяє мені отримати доступ до текстового рядка місця гіперпосилання?

В ідеалі це виглядатиме так:

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


1
Фактичні гіперпосилання (Вставка >> Гіперпосилання) або гіперпосилання, що використовують =HYPERLINK()?

Чи має це бути формулою? Є багато рішень VBA.
CharlieRB

Відповіді:


53

Ви можете використовувати макрос:

  • Відкрийте нову робочу книжку.
  • Потрапити у VBA (Press Alt + F11)
  • Вставте новий модуль (Вставка> Модуль)
  • Скопіюйте та вставте визначену користувачем функцію нижче
  • Вийдіть з VBA (Press Alt + Q)
  • Використовуйте цей синтаксис для цієї спеціальної функції Excel: = GetURL (комірка, [default_value])

     Function GetURL(cell As range, Optional default_value As Variant)
     'Lists the Hyperlink Address for a Given Cell
     'If cell does not contain a hyperlink, return default_value
          If (cell.range("A1").Hyperlinks.Count <> 1) Then
              GetURL = default_value
          Else
              GetURL = cell.range("A1").Hyperlinks(1).Address
          End If
    End Function
    

4
@igor Чому ви використовуєте "range (" a1 ") у cell.range (" A1 "). Hyperlinks.Count і cell.range (" A1 "). Гіперпосилання (1). Адреса? Я скопіював ваш макрос, але вийняв його (-> cell.hyperlinks.count і cell.hyperlinks (1) .adress), і він працює чудово. Мені цікаво призначення "діапазону (" a1 ") тут.
ПО

Це припущення для лікування, якщо всередині гіперпосилання є кілька посилань. це була просто ідея, чудово, що вона працювала з вашими налаштуваннями. :)
Ігор О

Якщо гіперпосилання містить фрагмент документа (наприклад, #something), який зберігається в SubAddress, так що вам буде потрібно для конкатенації Address, "#"і SubAddress.
gilly3

Оскільки параметр cellє об'єктом діапазону, він може містити більше однієї комірки. Range("A1")може бути переписаний як Cells(1). Він вказує функції враховувати лише першу комірку в параметрі cell.
ChrisB

19

Мені потрібно було лише витягнути адресу зі значення однієї комірки, тому я знайшов цю маленьку функцію зручною:

Замість макросу "грубої сили" ви також можете створити визначену користувачем функцію, яка б вилучала та повертала URL-адресу для будь-якого гіперпосилання, на яке воно вказувалось:

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

У цьому випадку ви можете розмістити його там, де ви хочете. Якщо ви хочете, наприклад, щоб URL-адреса гіперпосилання в A1 була вказана в комірці C25, то в комірці C25 ви ввели б наступну формулу:

= GetURL (A1)

http://excel.tips.net/T003281_Extracting_URLs_from_Hyperlinks.html


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

}

В іншому, що відміняє лапки, передайте посилання в клітинку, використовуючи це в таблиці = EXTRACT_URL (АДРЕС (рядок (A4), 1,4)). В іншому випадку вам доведеться жорстко кодувати посилання на діапазон. Потім ви можете скопіювати цю функцію з однієї комірки в іншу.
Уокер Роу
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.