Можно ли использовать формулу Excel для извлечения местоположения гиперссылки в ячейке?


46

У меня есть электронная таблица с большим количеством ячеек, содержащих гиперссылки с отображаемым текстом, отличным от местоположения гиперссылки

то есть:

расположение ячейки: A1

отображать текст = "Информация о сайте"

гиперссылка location = " http://www.mylocation.com "

Есть ли формула Excel, которая позволяет мне получить доступ к текстовой строке местоположения гиперссылки?

В идеале это будет выглядеть так:

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


1
Актуальные гиперссылки (Вставка >> Гиперссылка) или гиперссылки с использованием =HYPERLINK()?

Это должна быть формула? Есть много решений VBA.
CharlieRB

Ответы:


53

Вы можете использовать макрос:

  • Откройте новую рабочую книгу.
  • Получить в VBA (нажмите Alt + F11)
  • Вставьте новый модуль (Вставка> Модуль)
  • Скопируйте и вставьте пользовательскую функцию Excel ниже
  • Выйти из VBA (Нажмите 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 "). Hyperlinks (1) .Address? Я скопировал ваш макрос, но вынул его (-> cell.hyperlinks.count и cell.hyperlinks (1) .adress), и он отлично работает. Мне любопытно, для чего здесь "range (" 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

В этом случае вы можете разместить его там, где хотите. Например, если вы хотите, чтобы в ячейке C25 был указан URL-адрес гиперссылки в A1, введите в ячейку C25 следующую формулу:

= GetURL (А1)

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 (ADDRESS (строка (A4), 1,4)). В противном случае вам придется жестко задавать ссылку на диапазон. Затем вы можете скопировать эту функцию из одной ячейки в другую.
Уокер Роу
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.