Создайте много ячеек с гиперссылками с читаемым текстовым содержимым вместо литерального URL

252
ardnew

Вообще говоря, я пытаюсь создать электронную таблицу MS Excel с сотнями строк связанных URL-адресов. Column Aдолжен содержать читабельный текст, но текст ячейки гиперссылки на HTTP-URL. Column Bдолжен содержать открытый текстовый URL-адрес HTTP (это может или не может быть связано с его очевидным URL, это не имеет значения). Column Cи на имеют простой текстовый контент. Электронная таблица будет выглядеть следующим образом:

| Продукт А | http: // хост: 1234 / svn / product_a | другие данные ... |
| Продукт Б | http: // хост: 1234 / svn / product_b | другие данные ... |
| Продукт C | http: // хост: 1234 / svn / product_c | другие данные ... |

Обратите внимание, что гиперссылка на URL-адрес и URL в виде простого текста связаны, но различны

В настоящее время у меня есть bash+ sedскрипт, генерирующий этот исчерпывающий список репозиториев с использованием простой замены регулярных выражений для URL-адресов, но я не могу найти никаких документов MS Excel о том, как представлять в виде обычного текста ячейку с гиперссылкой текста (в идеале для вставки копий в электронная таблица).

Если бы я генерировал какую-то разметку, такую ​​как HTML, это было бы тривиально; но, к сожалению, есть дополнительные столбцы, которые должны быть доступны для других не-разработчиков для регулярного редактирования.

Есть ли какой-нибудь способ создать Column Aячейку, используя только открытый текст, скопированный в ячейку?

И извините за ужасный заголовок, я совсем не знаком с MS Excel или его жаргоном

2

1 ответ на вопрос

1
Rey Juna

Если столбец B уже содержит URL-адрес, а столбец A содержит URL-адрес в виде обычного текста, попробуйте выполнить это в ячейке C1. (Это предполагает, что вы можете вставить столбец C для этого использования, не испортив организацию. Другой вариант - ввести имя открытого текста в каждую формулу в столбце A.)

=HYPERLINK(B1,A1)

Параметры для HYPERLINKявляются, (link_location,[friendly_name])где friendly_name является необязательным.

ОБНОВИТЬ

ПРИМЕЧАНИЕ. Следующий подход будет работать только в том случае, если вы хотите, чтобы friendly_name было таким же, как текст после последнего /в вашем URL.

Предполагая, что ваши данные начинаются со строки 1, поместите их в ячейку A1и перетащите их вниз.

=HYPERLINK(B1,IFERROR(RIGHT(B1,LEN(B1)-FIND("$",SUBSTITUTE(B1,"/","$",LEN(B1)-LEN(SUBSTITUTE(B1,"/",""))))),B1))

Теперь для объяснения!

LEN(B1)-LEN(SUBSTITUTE(B1,"/","")

SUBSTITUTEпараметры, (text,old_text,new_text,[instance_num])где instance_num является необязательным.

SUBSTITUTEзаменяет все /символы в строке пустой строкой, поскольку мы не предоставили параметр instance_num. С помощью LENмы получаем длину строки минус длина строки без, /что дает нам количество раз, которое /происходит, что будет 4 для вашего OP.

SUBSTITUTE(B1,"/","$",4)

В этом случае мы используем необязательный четвертый параметр (я использую само число из предыдущего результата здесь из OP только для этого примера). Это заменит только последнее вхождение /тегом $, который должен быть символом, который никогда не будет частью вашей строки. Ваш результат OP будет " http: // host: 1234 / svn $ product_a"

LEN(B1)-FIND("$","http://host:1234/svn$product_a") 21

FINDпараметры, (find_text,within_text,[start_num])и нам не нужно использовать необязательный параметр start_num, поскольку, если мы выберем правильный тег, будет только один. (Еще раз, я использую строку из предыдущего результата здесь из OP только для этого примера).

Длина строки (30) минус расположение тега (21) дает длину текста после последнего /(9).

RIGHT дает вам текстовую строку, которые являются самыми правыми 9 символами в строке.

IFERRORоборачивает это в проверку ошибок. Если ошибок нет, вы получите результат расчета. Если это ошибка, такие, как не /в строке для FINDи SUBSTITUTEфункций для работы, то он будет возвращать текст B1.

И, наконец, HYPERLINKфункция создаст ссылку из URL-адреса B1с именем friendly_name, полученным в результате вычислений выше.

Этот способ найти последние символы после разделителя - это не то, что я понял, а повсеместно, и я так долго пользовался, что даже не знаю, кому это нужно!

(Как только я подумал об этом, мне просто нужно было добавить его :) Надеюсь, это поможет.)

Спасибо за детали, демонстрирует достаточную функциональность, которую, я думаю, я могу адаптировать для своих вещей. Я обновлю, когда у меня будут результаты ardnew 6 лет назад 0
Да, мне было бы интересно услышать о вашей реализации. Rey Juna 6 лет назад 0

Похожие вопросы