Страницы: 1
RSS
Проставить в формулу абсолютные значения, а не адрес ячейки.
 
Привет!

Хочу сделать гиперссылки из большого массива данных.

Пример:
В ячейке A1 есть значение "диск:\папка1\папка2\папка3\файл1"
Делаю гиперссылку с помощью формулы: "=ГИПЕРССЫЛКА(A1;A1)"
Так вот, я хочу сделать гиперссылки и удалить оригинальную ячейку.
Нужно, чтобы в формулу проставились значения из ячейки и она стала вида: "=ГИПЕРССЫЛКА(диск:\папка1\папка2\папка3\файл1;диск:\папка1\папка2\папка3\файл1)"

Как проставить абсолютные значения из ячеек в формулу?+
Спасибо.
 
Если формулы вносятся руками, то можно сразу вносить значение ячейки в формулу, предварительно скопировав.
Если же формулы уже внесены, то вижу вариант только макросом. Предполагается, что в формуле только ГИПЕРССЫЛКА без лишний наворотов.
Код
Sub Test0()
Dim C As Range
On Error Resume Next
For Each C In Selection
x1 = C.Formula
If Left(C.Formula, Len("=HYPERLINK(")) = "=HYPERLINK(" Then
C.Formula = "=HYPERLINK(""" & C.Precedents.Value & """)"
End If
Next
On Error GoTo 0
End Sub
 
Формула одна была сделана и протянута вниз, с изменением:
Код
"=ГИПЕРССЫЛКА(A1;A1)"
"=ГИПЕРССЫЛКА(B1;B1)"
"=ГИПЕРССЫЛКА(C1;C1)"

Ок, то есть нет решения, как можно в формулу подставить значения ячейки, а не номер ячейки?
Ведь наверняка есть какой-нибудь символ, доллар там или "&".
Это иногда применимо не только гиперссылкам, а к чему угодно, если я хочу выполнить формулу и удалить данные, по которым считалась формула.
 
Цитата
vpupkin написал:
Ведь наверняка есть какой-нибудь символ, доллар там или "&".
нет
По вопросам из тем форума, личку не читаю.
 
Цитата
vpupkin написал:
Формула одна была сделана и протянута вниз
Выделите диапазон, в который вставлена формула, и запустите макрос
Код
Sub bb()
With Selection
  .FormulaArray = Replace("=""=HYPERLINK(""""""&A1:A#&"""""",""""""&A1:A#&"""""")""", "#", .Rows.Count)
  .Formula = .Value
End With
End Sub
 
Цитата
vpupkin написал:
Ведь наверняка есть какой-нибудь символ, доллар там или "&".
символы есть, а толку нет
корректируйте макросом HyperLink
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
По уму надо бы вообще все формулы с ГИПЕРССЫЛКА переделать на прямые гиперссылки, типа
Код
Sub Test1()
Dim C As Range, x1, x2
For Each C In Selection
If Left(C.Formula, Len("=HYPERLINK(")) = "=HYPERLINK(" Then
x1 = Replace(C.Precedents.Address, ":", ",")
    If InStr(1, x1, ",") > 0 Then
    x2 = Range(Right(x1, Len(x1) - InStr(1, x1, ",")))
    x1 = Range(Left(x1, InStr(1, x1, ",") - 1))
    Else
    x1 = Range(x1)
    x2 = x1
    End If
C.ClearContents
ActiveSheet.Hyperlinks.Add Anchor:=C, Address:=x1, TextToDisplay:=x2
End If
Next C
End Sub
Ещё как вариант: добавить макрос в модуле листа и запускать первый макрос Test0 при Worksheet_Change (только вместо Selection надо указать на Target). Но по-моему, это ещё большее извращение - БМВ и Гончаренко уже ответили на это.
Страницы: 1
Наверх