С надеждой — ведь среди биржевиков не может не быть опытных юзеров Экселя — прошу помощи. (Рунет не помог.)
В ячейках столбца А гиперссылки в виде текста. Ячейки могут быть пустыми.
В ячейках столбца В некий текст.
Как вставить гиперссылку по условию? Либо ссылка, либо текст без ссылки.
=ЕСЛИ(A1<>''"; ГИПЕРССЫЛКА(A1;B1);B1) — эта формула вставляет гиперссылку в любом случае. То же и с функцией ВЫБОР.
Подошла бы и юзерская функция, сам так и не придумал.
Макросы не годятся.
---------------------
Дописываю программу (книгу Эксель) для помощи при отборе облигаций. Полностью автоматизированная, данные загружает из Квика, совершает виртуальные покупки и продажи и показывает, как при той или иной сделке изменится доходность вашего портфеля и др. Отслеживает три счёта: обычный биржевой, ИИС и Список наблюдения — в последний помещаются облигации, которые вы ещё не купили, но присматриваетесь к ним на предмет покупки.
Кто поможет с формулой — получит в подарок, как будет готова. (Она на стадии последнего «вылавливания блох», но надо ещё написать хелп-файл и сделать обучающий ролик).
Написал что-то подобное без покупки и продажи для акций и даже телеграмм бота прикручивал к таблице, который мог бы оповещать меня о нужных ценах на активы по моей стратегии = )
Но научитесь вы уже пользоваться простыми AI инструментами, чтобы уменьшить время разработки!
Вариант 1:
Function ConditionalHyperlink(link As String, display_text As String) As Variant If link <> "" Then ConditionalHyperlink = Hyperlink(link, display_text) Else ConditionalHyperlink = display_text End If End Function
и используем как: =ConditionalHyperlink(A1; B1)
Вариант 2:
Шаги:
Пусть у вас есть данные в столбцах A и B.
В столбце C вставьте формулу для гиперссылки:
=ЕСЛИ(A1<>""; ГИПЕРССЫЛКА(A1; B1); "")
В этой формуле, если ссылка в A1 существует, вставляется гиперссылка, иначе ячейка остается пустой.
В столбце D вставьте текст без гиперссылки:
=ЕСЛИ(A1<>""; ""; B1)
Эта формула вставит текст, только если гиперссылки нет.
Примените условное форматирование, чтобы скрыть либо столбец C, либо D, в зависимости от того, существует ли ссылка:
Для столбца C: если ячейка D не пустая, цвет текста сделать белым (для белого фона).
Для столбца D: если ячейка C не пустая, цвет текста сделать белым.
Извините, но текст съехал тк на Смртлабе убогое форматирование текста
Дмитрий Можаев, спасибо.
Нечто подобное я проверял. В таком виде выдается #ЗНАЧ!
Если переделать так:
Function ConditionalHyperlink(link As Range, display_text As Range) As Variant
If link.Value <> "" Then
ConditionalHyperlink = Hyperlink(link, display_text)
Else
ConditionalHyperlink = display_text.Value
End If
End Function
— то начинает работать, но выдает ошибку, что не знает, что такое Hyperlink. Такое свойство есть у Shape, а у Range нету.
А если так (где ААА – сама ячейка с формулой):
Function ConditionalHyperlink(link As Range, display_text As Range, AAA As Range) As Variant
If link.Value <> "" Then
Hyperlinks.Add Anchor:=AAA, Address:=link.Value, TextToDisplay:=display_text.Value
Else
ConditionalHyperlink = display_text.Value
End If
End Function
— то снова ошибка значения в случае с гиперссылкой (с текстом работает).
Дмитрий Можаев, Естественная идея: поместить всю эту контрукцию в другой столбец и уже оттуда менять нужные нам ячейки. Тогда работает. Но вот беда: Эксель запрещает менять какие-либо иные ячейки, кроме той, откуда была вызвана функция. И при дальнейших телодвижениях на листе происходит аварийное закрытие книги.
Со столбцами хорошая идея, спасибо! Приму на будущее. Сейчас мне придется вставлять новый столбец, и собьются все номера и буквы на листе. Придется переделывать макросы — на это мне увы, уже пороху не хватит. :(
Есть ли тут система личных сообщений, чтоб Вы могли сообщить, куда Вам выслать моё творение, когда будет готово?
Ради интереса. Не особо вникая в тему, кинул этот вопрос мозгу GPT-4 и вот его ответ. К стати, попробовал на офисе 2007 — работает.
Для решения вашей задачи в Excel можно использовать пользовательскую функцию (UDF), написанную на VBA. Это позволит вставлять гиперссылку только в том случае, если в ячейке столбца A есть ссылка. Вот как это можно сделать:
Откройте Excel и нажмите Alt + F11, чтобы открыть редактор VBA.
В редакторе VBA выберите Insert -> Module, чтобы создать новый модуль.
Вставьте следующий код в модуль:
<code class="l<span style="color: #000000;">anguage-vba">Function ConditionalHyperlink(link As String, displayText As String) As Variant
If link <> "" Then
ConditionalHyperlink = Hyperlink(link, displayText)
Else
ConditionalHyperlink = displayText
End If
End Function
</code></span>
Закройте редактор VBA и вернитесь в Excel.
Теперь вы можете использовать эту функцию в вашем Excel листе. Например, в ячейке C1 вы можете ввести следующую формулу:
Эта формула будет проверять, есть ли в ячейке A1 ссылка. Если да, будет создана гиперссылка с текстом из ячейки B1. Если нет, будет отображаться просто текст из ячейки B1 без гиперссылки.
Обратите внимание, что для работы пользовательских функций необходимо, чтобы макросы были включены в вашей книге Excel.
Андрей &, Вы серьезно насчёт того, что проверяли и работает? У меня, кстати, как раз Эксель 2007. Постом выше я подробно отписался про эту функцию.
Передача аргументов как As String вообще сомнительна, а если как As Range то что такое Hyperlink& — VBA такого не знает.
Краснов Геннадий, во всех такого рода конструкциях ячейка всё равно превращается в ссылку — правда, пустая ссылка никуда не ведет, но курсор над ячейкой превращается в ладонь с пальцем, а это раздражает.
Летающая корова ( паттерн ТА) - как первый признак кризиса в США после решения ФРС о понижении ставки на 0,25 процента Омериге кирдык, летающая корова ( паттерн ТА) на дневном графике. Кризис неизбеже...
ФРС ушла в минус.... Здравствуйте!.. (ЗаяЦъ сидит в удобнейшей лежанке из листьев и точит краюшку пармезана)… Удивительные новости поразили рунет!!! Присмотримся к ним поподробнее: Американский регуля...
Хорошие дивидендные новости В эти сложные времена, у меня для вас только хорошие новости. Сегодня, стало известно, что госдума одобрила возможность вывода дивидендов с ИИС-3 на внешние счета. 17.12.2...
Китай стал монстром-автогигантом
Китай стал автогигантом
За 20 лет доля Китая в мировом производстве автомобилей выросла с 1% до 39%. Сейчас в Китае производят столько же автомобилей, сколько в...
Георгий Трубицин, опять о своем.....))
Сначала зашли под первые санкции, которые, к слову сказать, не имели практически никакого отношения к стране и населению, они были наложены на физлиц за пар...
Плюс медицинским акциям. Врачам лучше. Во втором чтении принят законопроект «О внесении изменений в Уголовный кодекс Российской Федерации». В него внесены поправки, имеющие принципиальное значение для...
Рождественский рынок Германии: инвестиционные стратегии и возможности
Рождественский период — уникальное время для финансовых рынков, особенно в Германии. В декабре активизируются компании потре...
Для себя делаю что-то похожее, но не столь масштабное и вручную.
Подход внушает!
Написал что-то подобное без покупки и продажи для акций и даже телеграмм бота прикручивал к таблице, который мог бы оповещать меня о нужных ценах на активы по моей стратегии = )
Но научитесь вы уже пользоваться простыми AI инструментами, чтобы уменьшить время разработки!
Вариант 1:
Function ConditionalHyperlink(link As String, display_text As String) As Variant If link <> "" Then ConditionalHyperlink = Hyperlink(link, display_text) Else ConditionalHyperlink = display_text End If End Function
и используем как: =ConditionalHyperlink(A1; B1)
Вариант 2:
Шаги:
Пусть у вас есть данные в столбцах A и B.
В столбце C вставьте формулу для гиперссылки:
=ЕСЛИ(A1<>""; ГИПЕРССЫЛКА(A1; B1); "")В этой формуле, если ссылка в A1 существует, вставляется гиперссылка, иначе ячейка остается пустой.
В столбце D вставьте текст без гиперссылки:
=ЕСЛИ(A1<>""; ""; B1)Эта формула вставит текст, только если гиперссылки нет.
Примените условное форматирование, чтобы скрыть либо столбец C, либо D, в зависимости от того, существует ли ссылка:
Извините, но текст съехал тк на Смртлабе убогое форматирование текста
Нечто подобное я проверял. В таком виде выдается #ЗНАЧ!
Если переделать так:
Function ConditionalHyperlink(link As Range, display_text As Range) As Variant
If link.Value <> "" Then
ConditionalHyperlink = Hyperlink(link, display_text)
Else
ConditionalHyperlink = display_text.Value
End If
End Function
— то начинает работать, но выдает ошибку, что не знает, что такое Hyperlink. Такое свойство есть у Shape, а у Range нету.
А если так (где ААА – сама ячейка с формулой):
Function ConditionalHyperlink(link As Range, display_text As Range, AAA As Range) As Variant
If link.Value <> "" Then
Hyperlinks.Add Anchor:=AAA, Address:=link.Value, TextToDisplay:=display_text.Value
Else
ConditionalHyperlink = display_text.Value
End If
End Function
— то снова ошибка значения в случае с гиперссылкой (с текстом работает).
Со столбцами хорошая идея, спасибо! Приму на будущее. Сейчас мне придется вставлять новый столбец, и собьются все номера и буквы на листе. Придется переделывать макросы — на это мне увы, уже пороху не хватит. :(
Есть ли тут система личных сообщений, чтоб Вы могли сообщить, куда Вам выслать моё творение, когда будет готово?
Ради интереса. Не особо вникая в тему, кинул этот вопрос мозгу GPT-4 и вот его ответ. К стати, попробовал на офисе 2007 — работает.
Для решения вашей задачи в Excel можно использовать пользовательскую функцию (UDF), написанную на VBA. Это позволит вставлять гиперссылку только в том случае, если в ячейке столбца A есть ссылка. Вот как это можно сделать:
Откройте Excel и нажмите
Alt + F11
, чтобы открыть редактор VBA.В редакторе VBA выберите
Insert
->Module
, чтобы создать новый модуль.Вставьте следующий код в модуль:
Закройте редактор VBA и вернитесь в Excel.
Теперь вы можете использовать эту функцию в вашем Excel листе. Например, в ячейке C1 вы можете ввести следующую формулу:
Эта формула будет проверять, есть ли в ячейке A1 ссылка. Если да, будет создана гиперссылка с текстом из ячейки B1. Если нет, будет отображаться просто текст из ячейки B1 без гиперссылки.
Обратите внимание, что для работы пользовательских функций необходимо, чтобы макросы были включены в вашей книге Excel.
Передача аргументов как As String вообще сомнительна, а если как As Range то что такое Hyperlink& — VBA такого не знает.
=ЕСЛИ(ПРОПИСН(ЛЕВСИМВ(A1;4))=«HTTP»; ГИПЕРССЫЛКА(A1;B1);B1)