Автоматическое применение гиперссылок из одной ячейки в другую
У меня есть рабочая тетрадь, в которой есть столбец с заголовками различных документов, опубликованных на веб-сайте (B4:B6). Другой столбец содержит URL-адреса этих документов (C4:C6). URL-адрес создается веб-сайтом при загрузке документа и всегда добавляет к URL-адресу число, которое заранее не предсказуемо.
У меня есть пользователь, который обычно вставляет гиперссылку в ячейку, которая содержит заголовок, чтобы ячейка заголовка указывала на URL. Он хочет, чтобы ячейки заголовка были гиперссылками, понимает необходимость наличия гиперссылки в своей собственной ячейке для справочных целей, но не хочет повторно вводить или копировать и вставлять URL-адрес. Как настроить ячейки URL (C4: C6), чтобы проверять ячейки заголовка на наличие встроенных гиперссылок и, если он находит, реплицировать их в соответствующую ячейку URL?
В качестве альтернативы, как настроить ячейки заголовка для проверки ячеек URL на наличие текста и, если он их найдет, автоматически применять этот текст в качестве гиперссылки в соответствующей ячейке заголовка?
И что хуже всего, как мне это сделать без использования VBA/ макросов?
Перефразируй:
Текущее состояние: пользователь вручную применяет гиперссылку к заголовку в столбце B. Пользователь также вручную вводит текст URL-адреса в столбце C.
Требуемое состояние (опция 1): пользователь вручную применил гиперссылку к заголовку в столбце B. Текст URL автоматически извлекается из гиперссылки (не текст заголовка) и помещается в столбец C.
Требуемое состояние (опция 2): пользователь вручную вводит текст URL-адреса в столбец C. URL-адрес автоматически применяется в качестве встроенной гиперссылки в ячейке, содержащей заголовок в столбце B.
Вспомогательные столбцы полностью в порядке, если это необходимо.
2 ответа
Если вы хотите использовать формулы, а ссылки не следуют простому шаблону, вам нужно скопировать свои заголовки в другой столбец (или лист) и ссылаться на них в своем hyperlink
формула.
HYPERLINK("link","copied_title")
Для другого желаемого варианта вам все равно придется использовать VBA
но, возможно, будет достаточно только определенной пользователем опции, как описано в одном из ответов в этой теме: Извлечение URL-адресов из гиперссылок
VBA Solution
Если вы заинтересованы в VBA, вам может помочь что-то вроде этого:
Sub hyperlink_title()
Dim i As Integer
Dim wsh as Worksheet
Set wsh = ThisWorkbook.ActiveSheet
i = 4
With wsh
While .Cells(i, 2) <> ""
ActiveSheet.Hyperlinks.Add Anchor:=.Cells(i, 2), Address:=.Cells(i, 3).Value, _
TextToDisplay:=.Cells(i, "B").Value2
i = i + 1
Wend
End Sub
Эта формула будет смотреть на ячейку, и если есть гиперссылка (используя Hyperlink()
формула), вернет URL. Если нет ссылки, и это просто текст, он создает ссылку на http://www.fakewebsite.com/[text]
:
=IFERROR(MID(FORMULATEXT(A2),SEARCH("http",FORMULATEXT(A2)),SEARCH(",",FORMULATEXT(A2))-SEARCH("http",FORMULATEXT(A2))-1),HYPERLINK("http://www.fakewebsite.com/"&SUBSTITUTE(A2," ","-")))
Примечание. Если "http" нет, просто замените "http" на "www" в приведенной выше формуле. Это работает так:
Редактировать: Пояснение, это извлечет ссылку из столбца "Заголовок документа" и просто поместит текст, если ссылки нет:
=IFERROR(MID(FORMULATEXT(A2),SEARCH("http",FORMULATEXT(A2)),SEARCH(",",FORMULATEXT(A2))-SEARCH("http",FORMULATEXT(A2))-1),"No Link")