Excel: Абсолютные и относительные ссылки
От fin-analis / 17.02.2019
Сегодняшняя статья для новичков. Помнится, не так давно на глаза попалась «экселевская» шутка, про то, что если ты не знаешь, чем $A$1 отличается от A1, то нам не о чем с тобой разговаривать. Но нам всегда есть о чём поговорить с нашими читателями и тем более о таком базовом вопросе, как абсолютные и относительные ссылки в Excel.
Итак, чем же эти ссылки отличаются одна от другой? Относительная ссылка в формуле вида A1 – это адресация на ячейку, которая удалена от ячейки с формулой на определённое расстояние. Поэтому, при протягивании формулы в сторону, она будет ссылаться на то же самое расстояние, а не на определённую ячейку. Например, если формулу протянуть вправо на одну ячейку, то она уже будет ссылаться не на A1, а на B1. Если вместо этого мы протянем формулу вниз, то ссылка окажется не на A1, а на A2. Таким образом, ссылки собьются и формула выдаст неправильный результат.
Если же мы вместо ссылки на ячейку A1, проставим $A$1, то куда бы мы не сдвигали формулу и на какое бы количество ячеек, формула всё равно будет ссылаться именно на ячейку A1.
Сделать такую ссылку можно во время выбора ячейки в формуле, нажав клавишу F4.
Кроме жёсткой привязки к определённой ячейке может быть смешанная ссылка вида $A1 (фиксация столбца) или A$1 (фиксация строки). Это также достигается нажатием клавиши F4 два или три раза, пока знак $ не появится в нужном месте. Что это значит? При фиксации столбца $A1 во время сдвига формулы в сторону не будет происходить изменений. Ссылка будет изменяться только при движении по столбцу, то есть при протягивании формулы вверх или вниз. Соответственно, с учётом того, что ссылка идёт на ячейку A1, то при протягивании вверх, будет выдаваться ошибка #ССЫЛКА! (потому что выше A1 ячеек нет), а при протягивании формулы вниз, ссылка на ячейку примет вид $A2.
При создании ссылки вида A$1, будет зафиксирована строка, в результате, при протягивании формулы вверх или вниз, изменений в адресации ячейки не будет. При протягивании формулы влево будет выдаваться ошибка #ССЫЛКА! (слева от A1 нет ячеек), при протягивании формулы вправо, ссылка примет вид B$1 и выдаст значение из этой ячейки.
Наглядным примером использования разной адресации ячеек служит таблица Пифагора. Если кто-то не помнит – это таблица умножения в шахматном виде, где перекрёстно перемножаются цифры из верхней строки (от 1 до 10) и из левого столбца (от 1 до 10).
Соответственно, мы получаем значения от 1 до 100. Если мы в ячейку B2 введём формулу =A2*B1 и протянем строки и столбцы, то формула будет считать неправильно, или, верней сказать, выдаст не те значения, которые нам нужны, так как, если вы помните, формула будет перемножать данные на определённом расстоянии от себя.
Если мы поставим формулу с жёсткой фиксацией (абсолютная адресация), то также не получим нужный результат. Формула просто скопирует одно и то же значение.
Лишь вводя смешанную адресацию, фиксируя левый столбец и верхнюю строку, мы получим правильный результат.
Наглядно ещё раз этот пример нам поможет проиллюстрировать короткое видео.
Таблица Пифагора» src=»https://www.youtube.com/embed/5j-OpeIKlXo?feature=oembed» frameborder=»0″ allow=»accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture» allowfullscreen=»»>Если Вы новичок, то отличным подспорьем для расчётов в excel станет наш шаблон Финансовых вычислений https://fin-analis.ru/finexcel/
Ссылки в Эксель: абсолютные, относительные, между листами
Microsoft Office Excel позволяет заносить в таблицу различные данные: текст, числа, уравнения, даты, время и другое. Также редактор обладает большим набором функций для работы с информацией.
Некоторые формулы содержат в своей структуре сложные математические законы и алгоритмы. Чтобы пользоваться такими возможностями, необходимо задействовать различные ячейки таблицы и проводить с ними математические операции.
Сегодня в статье разберемся, как сделать абсолютные и относительные ссылки в excel.
Содержание
- Относительные ссылки
- Абсолютные ссылки
- Ссылки между листами
Относительные ссылки
Используются по умолчанию при работе с таблицей.
Суть заключается в том, что ячейка с формулой определяет положение ячеек из формулы по строке и столбцу относительно себя.
Отсюда следует название. При копировании ссылки автоматически изменяются, что позволяет за один раз провести расчеты для всей таблицы. Рассмотрим пример.
Есть список фруктов, проданных за день, необходимо посчитать выручку.
Для этого необходимо цену одного фрукта умножить на количество реализованных единиц и повторить операцию для каждой строки.
- В ячейке D2 столбца Выручка записываете формулу В2*С2.
- Нажимаете Enter и видите результат.
- Используя маркер автозаполнения, применяете формулу к остальным строкам. Эта операция позволяет автоматически скопировать формулу.
- Чтобы проверить правильность расчета, нажимаете на любую ячейку и смотрите, куда ссылается формула в ходе вычислений.
Из этого примера видна работа относительных ссылок.
Исходная формула не фиксируется на первоначальных ячейках, а автоматически изменяется при продвижении по горизонтали или вертикали, поскольку меняются адреса ее составляющих.
Абсолютные ссылки
Нужны для закрепления значений внутри формулы. Суть в том, что абсолютный адрес содержит точное местоположение ячейки, независимо от того, где находится ячейка с формулой. Дополним пример с фруктами. Необходимо вычесть налоги, которые составляют 13%, из выручки, а затем посчитать чистую прибыль с продажи фруктов.
- Внесем новые данные в таблицу
- Запишем формулу =E2-E2*$D$2
- Копируем во все остальные строки.
Как видите, в шестой строке ссылка на ячейку налогов осталась неизменной. Это и есть абсолютная ссылка, которая не изменилась, по сравнению с остальными составляющими первоначальной формулы. Чтобы сделать такой адрес, необходимо поставить знак доллара $. При этом есть несколько разновидностей таких ссылок:
- D$2 — фиксируется только строка.

- $D2 — закрепляется только столбец.
- $D$2 — неизменными остаются и столбец, и строка.
Первые две еще называются смешанными адресами.
На заметку! Чтобы постоянно не ставить доллар, можно использовать горячие клавиши, а именно F4. От количества нажатий на кнопку зависит, какой из трех типов адреса будет задан.
Ссылки между листами
Известно, что одна рабочая книга excel по умолчанию содержит три листа. Редактор позволяет делать ссылки и между ними. Для этого достаточно в формуле после названия листа поставить восклицательный знак, а затем указать ячейку, на которую ссылаетесь. Выглядит это следующим образом: =A17*Лист2!B4
Важно! Если название листа содержит пробелы, то обязательно ставьте кавычки, для правильного распознания формулы программой.
Как видите, работать со ссылками в excel не сложно. Их использование значительно ускоряет обработку данных и вычисления внутри таблицы.
Автоматический пересчет значений, при изменении первоначальной информации избавляет от постоянной перепроверки расчетов, что также облегчает работу.
Отметим, что принцип создания ссылок одинаковый для всех версий редактора от Microsoft, в частности для серий 2007, 2010, 2013 и 2016 годов.
excel — Как указать относительный путь к книге в поле ССЫЛКА?
Задавать вопрос
спросил
Изменено 4 года, 5 месяцев назад
Просмотрено 4к раз
После специальной привязки диапазона ячеек из Excel в Word (2013) поле выглядит так:
{ ССЫЛКА Excel.Sheet.12 "D:\\RelativePath\\1\\work\\tmp.xlsx" Sheet1!NamedRange \a \p }
При перемещении источника (.
xlsx) и получателя (.docx) на папку 2, необходимо изменить ссылку в поле ССЫЛКА, чтобы она выглядела так:
{ ССЫЛКА Excel.Sheet.12 "D:\\RelativePath\\2\\work\\ tmp.xlsx" Sheet1!NamedRange \a \p }
Когда таких полей много, неудобно.
Я пробовал оба варианта:
{ССЫЛКА Excel.Sheet.12 "...\\...\\work\\tmp.xlsx" Sheet1!NamedRange \a \p }
и что:
{ССЫЛКА Excel.Sheet.12 "~\\work\\tmp.xlsx" Sheet1!NamedRange \a \p } но ничего не работает.
Тоже не работает:
Как создавать абсолютные гиперссылки и относительные гиперссылки в документах Word
Можно ли в поле ССЫЛКА указывать не абсолютный, а относительный адрес источника?
Upd @Cindy Meister предложила решение, и после некоторой доработки код работает нормально.
Вот он:
Sub updateLINKs() Dim doc As Word.Document Dim fld As Word.Field Dim sFilePath как строка, sFileName как строка Установить документ = активный документ sFilePath = док.Путь Для каждого эт. в полях документа Если fld.Type = wdFieldLink Тогда Если fld.Result.InlineShapes.Count > 0 и _ InStr(fld.OLEFormat.ClassType, "Excel") И _ fld.LinkFormat.SourcePath <> sFilePath Тогда sFileName = fld.LinkFormat.SourceName fld.LinkFormat.SourceFullName = sFilePath & "\" & sFileName Конец, если Конец, если Следующий Конец сабвуфера
- excel
- ms-word
- word-field
Невозможно использовать относительные пути в полях Link . Путь необходимо обновить/изменить в коде поля. Это можно сделать довольно просто, используя возможности, предоставляемые свойством LinkFormat .
Например, предположим, что относительный путь будет таким же, как и документ Word, следующий код:
- Получает путь из
Document.Pathсвойство - Зацикливает все поля в документе и определяет, являются ли они полем LINK из источника Excel, который отображает
InlineShape(объект, а не текст).
Поля зацикливаются в обратном порядке, поскольку изменение пути приводит к тому, что Word удаляет и воссоздает ССЫЛКУ в фоновом режиме. Это означает, что цикл с самого начала документа будет неоднократно «попадать» в одно и то же поле, что приводит к бесконечному циклу. - Определяет текущее имя файла для связанного объекта из
Поле Linkс использованиемLinkFormat.SourceName - Объединяет информацию и присваивает ее свойству
LinkFormat.SourceFullName
Обратите внимание, что свойства LinkFormat.SourcePath и LinkFormat.SourceName доступны только для чтения, поэтому путь можно изменить только с помощью SourceFullName .
Sub UpdateLinks ()
Dim doc As Word.Document
Dim fld As Word.Field, nrFields As Long, i As Long
Dim sFilePath как строка, sFileName как строка
Установить документ = активный документ
sFilePath = док.путь
nrFields = doc.
Fields.Count
Для i = nrFields To 1 Шаг -1
Установите fld = doc.Fields(i)
Если fld.Type = wdFieldLink Тогда
Если fld.result.InlineShapes.Count > 0 и _
InStr(fld.OleFormat.ClassType, "Excel") Тогда
sFileName = fld.LinkFormat.SourceName
fld.LinkFormat.SourceFullName = sFilePath & "\" & sFileName
Конец, если
Конец, если
Следующий
Конец сабвуфера
6Вы не можете указать относительный путь в поле ССЫЛКА. Это потребует встраивания другого поля в поле LINK, но, как я уже говорил ранее, вы не можете сделать это с полями LINK. Ссылка, которую вы разместили, касается только настройки базы гиперссылок для гиперссылок, что также не приводит к действительно относительной ссылке.
Единственным обходным решением для поля LINK является использование макроса, который обновляет абсолютный путь.
4Зарегистрируйтесь или войдите в систему
Зарегистрируйтесь с помощью Google Зарегистрироваться через Facebook Зарегистрируйтесь, используя электронную почту и парольОпубликовать как гость
Электронная почтаТребуется, но не отображается
Опубликовать как гость
Электронная почтаТребуется, но не отображается
Нажимая «Опубликовать свой ответ», вы соглашаетесь с нашими условиями обслуживания и подтверждаете, что прочитали и поняли нашу политику конфиденциальности и кодекс поведения.![]()
Связывание файлов данных в PowerPoint с абсолютными или относительными путями • PresentationPoint
DataPoint используется для отображения информации в режиме реального времени в презентации или слайд-шоу PowerPoint. Презентации на основе данных на экране телевизора или мониторе компьютера с самой последней информацией. Или автоматизированная статистическая отчетность в PowerPoint. Все это возможно с DataPoint, потому что DataPoint связывает ваши текстовые поля и таблицы с рабочими листами Microsoft Excel или различными базами данных для автоматического обновления содержимого в режиме реального времени.Типичным для информационного экрана является то, что пользователь запускает презентацию на вывесочном компьютере, в то время как необработанные данные находятся в базе данных или на листе в общем сетевом расположении или на файловом сервере.
Наиболее распространенным способом связывания является абсолютное связывание, при котором пользователь начинает с презентации и добавляет соединение с базой данных через меню DataPoint.
Когда пользователь использует сопоставленные диски, ссылка будет P:\имя_папки\имя_базы_данных.accdb, где буква диска P: соответствует на компьютере \\имя_сервера\имя_ресурса.
Пользователь может прекрасно использовать абсолютное связывание, если знает, что путь к файлу и используемые данные всегда будут оставаться неизменными. Для пользователя очевидно, что всякий раз, когда пользователь будет перемещать файл базы данных в другой общий ресурс или место, у пользователя будут потерянные ссылки в презентации PowerPoint. Когда пользователь открывает презентацию, данные в ней больше не будут обновляться, как раньше. Вместо этого пользователь получит сообщение об ошибке, что база данных или файл Excel не могут быть найдены по указанному пути.
Помимо абсолютной ссылки у пользователя также есть относительная ссылка. Отличие этого механизма в том, что у пользователя нет полного пути, указывающего на файл данных, но пользователь использует сокращенный путь или части пути к местоположению файла данных.
Много раз у пользователя будет презентация и база данных или файл Excel, расположенные в одной и той же папке. Поэтому, когда презентация хранится в \\имя_сервера\имя_общего_ресурса\имя_папки\data-driven-presentation.pptx, а база данных — в \\имя_сервера\имя_общего_ресурса_имя_папки\имя_базы_данных.accdb, пользователь может сократить путь к базе данных до просто имя базы данных.accdb.
DataPoint по-прежнему сможет интерпретировать этот путь. Ожидается, что файл базы данных будет в той же папке, что и презентация.
Если пользователь хочет переместить базу данных в подпапку папки презентации с именем, например. базы данных, тогда подойдет сокращенный URL-адрес, например databases\databasename.accdb.


Путь
Для каждого эт. в полях документа
Если fld.Type = wdFieldLink Тогда
Если fld.Result.InlineShapes.Count > 0 и _
InStr(fld.OLEFormat.ClassType, "Excel") И _
fld.LinkFormat.SourcePath <> sFilePath Тогда
sFileName = fld.LinkFormat.SourceName
fld.LinkFormat.SourceFullName = sFilePath & "\" & sFileName
Конец, если
Конец, если
Следующий
Конец сабвуфера

Fields.Count
Для i = nrFields To 1 Шаг -1
Установите fld = doc.Fields(i)
Если fld.Type = wdFieldLink Тогда
Если fld.result.InlineShapes.Count > 0 и _
InStr(fld.OleFormat.ClassType, "Excel") Тогда
sFileName = fld.LinkFormat.SourceName
fld.LinkFormat.SourceFullName = sFilePath & "\" & sFileName
Конец, если
Конец, если
Следующий
Конец сабвуфера