Связывание ячеек в excel. Как сделать связь между ячейками в excel? Переходы между рабочими книгами

К сожалению, если книга-источник была удалена/перемещена или переименована, то связь нарушится. Также связь будет потеряна если вы переместите конечный файл (содержащий ссылку). Если вы передадите только конечный файл по почте, то получатель тоже не сможет обновить связи.

Как разорвать связь

Один из способов решения данной проблемы - разрыв связи. Если в файле только одна связь, то сделать это довольно просто:

  1. Перейдите на вкладку Данные .
  2. Выберите команду Изменить связи в разделе Подключения .
  3. Нажмите Разорвать связь .

ВАЖНО! При разрыве связи все формулы ссылающиеся на книгу-источник будут преобразованы в значения! Отмена данной операции невозможна!

Как разорвать связь со всеми книгами

Для удобства, можно воспользоваться макросом, который разорвет связи со всеми книгами. Макрос входит в состав надстройки VBA-Excel. Чтобы им воспользоваться необходимо:


Код на VBA

Код макроса удаляющего все связи с книгой представлен ниже. Можете скопировать его в свой проект.

Sub UnlinkWorkBooks() Dim WbLinks Dim i As Long Select Case MsgBox("Все ссылки на другие книги будут удалены из этого файла, а формулы, ссылающиеся на другие книги будут заменены на значения." & vbCrLf & "Вы уверены, что хотите продолжить?", 36, "Разорвать связь?") Case 7 " Нет Exit Sub End Select WbLinks = ActiveWorkbook.LinkSources(Type:=xlLinkTypeExcelLinks) If Not IsEmpty(WbLinks) Then For i = 1 To UBound(WbLinks) ActiveWorkbook.BreakLink Name:=WbLinks(i), Type:=xlLinkTypeExcelLinks Next Else MsgBox "В данном файле отсутствуют ссылки на другие книги.", 64, "Связи с другими книгами" End If End Sub

Как разорваться связи только в выделенном диапазоне

Иногда в книге имеется много связей и есть опасения, что при удалении связи можно удалить лишнюю. Чтобы этого избежать с помощью надстройки можно удалить связи только в выделенном диапазоне. Для этого.

При выполнении определенных задач в Excel иногда приходится иметь дело с несколькими таблицами, которые к тому же связаны между собой. То есть, данные из одной таблицы подтягиваются в другие и при их изменении пересчитываются значения во всех связанных табличных диапазонах.

Связанные таблицы очень удобно использовать для обработки большого объема информации. Располагать всю информацию в одной таблице, к тому же, если она не однородная, не очень удобно. С подобными объектами трудно работать и производить по ним поиск. Указанную проблему как раз призваны устранить связанные таблицы, информация между которыми распределена, но в то же время является взаимосвязанной. Связанные табличные диапазоны могут находиться не только в пределах одного листа или одной книги, но и располагаться в отдельных книгах (файлах). Последние два варианта на практике используют чаще всего, так как целью указанной технологии является как раз уйти от скопления данных, а нагромождение их на одной странице принципиально проблему не решает. Давайте узнаем, как создавать и как работать с таким видом управления данными.

Прежде всего, давайте остановимся на вопросе, какими способами существует возможность создать связь между различными табличными диапазонами.

Способ 1: прямое связывание таблиц формулой

Самый простой способ связывания данных – это использование формул, в которых имеются ссылки на другие табличные диапазоны. Он называется прямым связыванием. Этот способ интуитивно понятен, так как при нем связывание выполняется практически точно так же, как создание ссылок на данные в одном табличном массиве.

Посмотрим, как на примере можно образовать связь путем прямого связывания. Имеем две таблицы на двух листах. На одной таблице производится расчет заработной платы с помощью формулы путем умножения ставки работников на единый для всех коэффициент.

На втором листе расположен табличный диапазон, в котором находится перечень сотрудников с их окладами. Список сотрудников в обоих случаях представлен в одном порядке.

Нужно сделать так, чтобы данные о ставках из второго листа подтягивались в соответствующие ячейки первого.


Способ 2: использование связки операторов ИНДЕКС — ПОИСКПОЗ

Но что делать, если перечень сотрудников в табличных массивах расположен не в одинаковом порядке? В этом случае, как говорилось ранее, одним из вариантов является установка связи между каждой из тех ячеек, которые следует связать, вручную. Но это подойдет разве что для небольших таблиц. Для массивных диапазонов подобный вариант в лучшем случае отнимет очень много времени на реализацию, а в худшем – на практике вообще будет неосуществим. Но решить данную проблему можно при помощи связки операторов ИНДЕКС ПОИСКПОЗ . Посмотрим, как это можно осуществить, связав данные в табличных диапазонах, о которых шел разговор в предыдущем способе.

  1. Выделяем первый элемент столбца «Ставка» . Переходим в Мастер функций , кликнув по пиктограмме «Вставить функцию» .
  2. В Мастере функций в группе «Ссылки и массивы» находим и выделяем наименование «ИНДЕКС» .
  3. Данный оператор имеет две формы: форму для работы с массивами и ссылочную. В нашем случае требуется первый вариант, поэтому в следующем окошке выбора формы, которое откроется, выбираем именно его и жмем на кнопку «OK» .
  4. Выполнен запуск окошка аргументов оператора ИНДЕКС . Задача указанной функции — вывод значения, находящегося в выбранном диапазоне в строке с указанным номером. Общая формула оператора ИНДЕКС такова:

    ИНДЕКС(массив;номер_строки;[номер_столбца])

    «Массив» — аргумент, содержащий адрес диапазона, из которого мы будем извлекать информацию по номеру указанной строки.

    «Номер строки» — аргумент, являющийся номером этой самой строчки. При этом важно знать, что номер строки следует указывать не относительно всего документа, а только относительно выделенного массива.

    «Номер столбца» — аргумент, носящий необязательный характер. Для решения конкретно нашей задачи мы его использовать не будем, а поэтому описывать его суть отдельно не нужно.

    Ставим курсор в поле «Массив» . После этого переходим на Лист 2 и, зажав левую кнопку мыши, выделяем все содержимое столбца «Ставка» .

  5. После того, как координаты отобразились в окошке оператора, ставим курсор в поле «Номер строки» . Данный аргумент мы будем выводить с помощью оператора ПОИСКПОЗ . Поэтому кликаем по треугольнику, который расположен слева от строки функций. Открывается перечень недавно использованных операторов. Если вы среди них найдете наименование «ПОИСКПОЗ» , то можете кликать по нему. В обратном случае кликайте по самому последнему пункту перечня – «Другие функции…» .
  6. Запускается стандартное окно Мастера функций . Переходим в нем в ту же самую группу «Ссылки и массивы» . На этот раз в перечне выбираем пункт «ПОИСКПОЗ» . Выполняем щелчок по кнопке «OK» .
  7. Производится активация окошка аргументов оператора ПОИСКПОЗ . Указанная функция предназначена для того, чтобы выводить номер значения в определенном массиве по его наименованию. Именно благодаря данной возможности мы вычислим номер строки определенного значения для функции ИНДЕКС . Синтаксис ПОИСКПОЗ представлен так:

    ПОИСКПОЗ(искомое_значение;просматриваемый_массив;[тип_сопоставления])

    «Искомое значение» — аргумент, содержащий наименование или адрес ячейки стороннего диапазона, в которой оно находится. Именно позицию данного наименования в целевом диапазоне и следует вычислить. В нашем случае в роли первого аргумента будут выступать ссылки на ячейки на Листе 1 , в которых расположены имена сотрудников.

    «Просматриваемый массив» — аргумент, представляющий собой ссылку на массив, в котором выполняется поиск указанного значения для определения его позиции. У нас эту роль будет исполнять адрес столбца «Имя» на Листе 2 .

    «Тип сопоставления» — аргумент, являющийся необязательным, но, в отличие от предыдущего оператора, этот необязательный аргумент нам будет нужен. Он указывает на то, как будет сопоставлять оператор искомое значение с массивом. Этот аргумент может иметь одно из трех значений: -1 ; 0 ; 1 . Для неупорядоченных массивов следует выбрать вариант «0» . Именно данный вариант подойдет для нашего случая.

    Итак, приступим к заполнению полей окна аргументов. Ставим курсор в поле «Искомое значение» , кликаем по первой ячейке столбца «Имя» на Листе 1 .

  8. После того, как координаты отобразились, устанавливаем курсор в поле «Просматриваемый массив» и переходим по ярлыку «Лист 2» , который размещен внизу окна Excel над строкой состояния. Зажимаем левую кнопку мыши и выделяем курсором все ячейки столбца «Имя» .
  9. После того, как их координаты отобразились в поле «Просматриваемый массив» , переходим к полю «Тип сопоставления» и с клавиатуры устанавливаем там число «0» . После этого опять возвращаемся к полю «Просматриваемый массив» . Дело в том, что мы будем выполнять копирование формулы, как мы это делали в предыдущем способе. Будет происходить смещение адресов, но вот координаты просматриваемого массива нам нужно закрепить. Он не должен смещаться. Выделяем координаты курсором и жмем на функциональную клавишу F4 . Как видим, перед координатами появился знак доллара, что означает то, что ссылка из относительной превратилась в абсолютную. Затем жмем на кнопку «OK» .
  10. Результат выведен на экран в первую ячейку столбца «Ставка» . Но перед тем, как производить копирование, нам нужно закрепить ещё одну область, а именно первый аргумент функции ИНДЕКС . Для этого выделяем элемент колонки, который содержит формулу, и перемещаемся в строку формул. Выделяем первый аргумент оператора ИНДЕКС (B2:B7 ) и щелкаем по кнопке F4 . Как видим, знак доллара появился около выбранных координат. Щелкаем по клавише Enter . В целом формула приняла следующий вид:

    ИНДЕКС(Лист2!$B$2:$B$7;ПОИСКПОЗ(Лист1!A4;Лист2!$A$2:$A$7;0))

  11. Теперь можно произвести копирование с помощью маркера заполнения. Вызываем его тем же способом, о котором мы говорили ранее, и протягиваем до конца табличного диапазона.
  12. Как видим, несмотря на то, что порядок строк у двух связанных таблиц не совпадает, тем не менее, все значения подтягиваются соответственно фамилиям работников. Этого удалось достичь благодаря применению сочетания операторов ИНДЕКС ПОИСКПОЗ .

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

Изменение содержимого ячейки на одном листе или таблице (источнике ) рабочей книги приводит к изменению связанных с ней ячеек в листах или таблицах (приемниках ). Этот принцип отличает связывание листов от простого копирования содержимого ячеек из одного листа в другой.

В зависимости от техники исполнения связывание бывает «прямым » и через команду «Специальная вставка» .

Прямое связывание листов используется непосредственно при вводе формулы в ячейку, когда в качестве одного из элементов формулы используется ссылка на ячейку другого листа. Например, если в ячейке таблицы В4 на рабочем Листе2 содержится формула, которая использует ссылку на ячейку А4 другого рабочего листа (например, Листа 1) и оба листа загружены данными, то такое связывание листов называется "прямым".

Термин "прямое" связывание обозначает, что пользователь сам непосредственно при вводе формулы указывает имя листа и абсолютный адрес ячейки, разделенные восклицательным знаком "!".

Примеры формул: = C5*Лист1! A4

Лист3! В2*100%

Лист1! A1-Лист2! A1

Примечание. Для указания ссылки на ячейки и листы, находящиеся в незагруженных (неоткрытых) рабочих книгах, в формуле нужно без пробелов задать полный путь местонахождения файла. Путь задается в одинарных кавычках, где указывается название диска, каталога (папки), имя рабочей книги (имя файла) в квадратных скобках и имя листа, на который идет ссылка.

Например:

= "D:\Документы студентов[Расчет дохода.xls]Закупка продукции"!H19

Связывание через команду " Специальная вставка" производится, если какая либо ячейка таблицы на одном рабочем листе должна содержать значение ячейки из другого рабочего листа.

Чтобы отразить в ячейке С4 на листе Цена продукции значение ячейки Н4 на исходном листе Закупка продукции, нужно поместить курсор на ячейку Н4 исходного листа и выполнить команду Правка/Копировать. На листе Цена продукции поставить курсор на ячейку С4, которую необходимо связать с исходной, и выполнить команду Правка/Специальная вставка/Вставить связь (см. рис. 6). Тогда на листе Цена реализации появится указание на ячейку исходного листа Закупка продукции, например: = Закупка продукции!$Н$4

При таком связывании EXCEL автоматически использует абсолютный адрес на ячейку, т.к. относительный адрес обращения может привести к ошибкам, особенно если обращаться к незагруженным файлам (рабочим книгам).

Задание 7. Свяжите ячейки С4, С5, С6, С7, С8 в таблице Расходы на закупку на листе Цена реализации с соответствующими ячейками на листе Закупка продукции, используя при этом различные способы связывания ячеек (рис. 28).

Рис. 28. Связывание ячеек различных рабочих листов

Листы рабочей книги

До сих пор работали только с одним листом рабочей книги. Часто бывает полезно использовать несколько рабочих листов.

В нижней части экрана видны Ярлычки листов. Если щелкнуть на ярлычке левой клавишей мыши, то указанный лист становится активным и перемещается наверх. Щелчок правой кнопкой на ярлычке вызовет меню для таких действий с листом, как перемещение, удаление, переименование и т.д.

В левом нижнем углу окна рабочей книги находятся кнопки прокрутки с помощью которых можно переходить от одного рабочего листа к другому.

Щелкнув правой кнопкой мыши на кнопках прокрутки ярлычков, можно открыть констектно зависимое меню для выбора нужного рабочего листа.

Расположение рабочих книг

Предположим, вы хотите видеть на экране сразу все открытые книги, Excel без труда выполнит ваше желание, причем вы сможете легко ориентироваться в своих книгах. С помощью команды Excel Окно Расположить можно расположить открытые рабочие книги на экране четырьмя способами.

* рядом -- рабочие книги открываются в маленьких окнах, на которые делится весь экран "плиточным" способом;

* сверху вниз -- открытые рабочие книги отображаются в окнах, имеющих вид горизонтальных полос,

* слева направо -- открытые рабочие книги отображаются в окнах, имеющих вид вертикальных полос;

* каскадом -- рабочие книги (каждая в своем окне) "выкладываются" на экране слоями.

Переходы между рабочими книгами

Независимо от того, решили ли вы расположить на экране все открытые рабочие книги или просто "уложили" их друг на друга в порядке открытия, вы можете легко переходить от одной книги к другой. В Excel предусмотрено несколько быстрых способов перехода к нужной книге. Для этого можно использовать мышь, клавиши экстренного доступа или меню Excel Окно. Вот эти способы:

* щелкните на видимой части окна рабочей книги;

* нажмите клавиши для перехода из окна одной книги в окно другой.

* откройте меню Excel Окно. В нижней его части содержится список открытых рабочих книг. Для перехода в нужную книгу просто щелкните по имени.

Копирование данных из одной рабочей книги в другую

С помощью команды Excel Копировать можно копировать данные из одной рабочей книги в другую. Например, вы открыли две рабочих книги одна из которых содержит квартальный бюджет, а другая -- годовой. Для экономии времени было бы неплохо скопировать данные по первому кварталу из первой рабочей книги во вторую. При этом исходные данные в первой рабочей книге не изменяв появится копия этих данных.

Чтобы скопировать данные из одной рабочей книги в другую, откройте обе рабочие книги. Выделите данные в первой книге и щелкните на кнопке Копировать панели инструментов Стандартная переключиться в другую книгу, используйте любой из перечисленных выше методов. Например, согласно одному из них, выберите из меню Окно имя второй рабочей книги. Перейдите в нужный рабочий лист и выделите ячейку, в которую предполагаете вставить данные. Щелкните на кнопке Вставить панели инструментов Стандартная. Excel моментально скопирует данные во вторую рабочую книгу.

Перенос данных между рабочими книгами

Эта процедура аналогична копированию данных. Отличие заключается в использовании другой кнопки. Выделите данные в первой рабочей книге и щелкните на кнопке Вырезать панели инструментов Стандартная, чтобы извлечь данные. Перейдя в другую рабочую книгу, выделите нужную ячейку и щелкните на кнопке Вставить панели инструментов Стандартная. В результате Excel удалит данные из первой рабочей книги и вставит их во вторую.

Существует быстрый способ переноса данных рабочего листа (листов) между рабочими книгами. Он состоит в использовании метода "перетащить и опустить". Сначала откройте книги, задействованные в операции переноса данных. Выберите из меню Excel команду Окно/ Расположить. В открывшемся диалоговом окне Расположение окон выберите вариант рядом и щелкните на кнопке ОК. Вы должны видеть хотя бы небольшую часть окна каждой рабочей книги. Выделите ярлычок листа (листов), который вы хотите скопировать. Поместите указатель мыши поверх выделенного ярлычка листа, щелкните и, не отпуская кнопку мыши, перетащите ярлычок в окно другой рабочей книги. Когда вы отпустите кнопку мыши, лист будет "прописан" в новой (для него) рабочей книге.

Создание связей между рабочими листами и рабочими книгами.

Excel позволяет использовать в таблице данные с других листов и из других таблиц.

Связывание -- это процесс динамического обновления данных в рабочем листе на основании данных другого источника (рабочего листа или рабочей книги). Связанные данные отражают любые изменения, вносимые в исходные данные.

Связывание выполняется посредством специальных формул, которые содержат так называемые внешние ссылки. Внешняя ссылка может ссылаться на ячейку из другого рабочего листа той же рабочей книги или на ячейку любого другого рабочего листа любой другой рабочей книги. Например, связи между двумя листами достигается за счёт введения в один лист формулы связи со ссылкой на ячейку в другом листе.

Excel позволяет создавать связи с другими рабочими листами и другими рабочими книгами трех типов:

При работе с большим количеством данных и создании многочисленных paбочих листов для хранения этих данных возникают ситуации, когда формула на одном рабочем листе использует данные из другого рабочего листа. Такие формулы весьма полезны, поскольку избавляют вас от необходимости хранить избыточные данные на многих рабочих листах.

Чтобы сослаться на ячейку в другом рабочем листе, поставьте восклицательный знак между именем листа и именем ячейки. Синтаксис для этого типа формул выглядит следующим образом: =ЛИСТ!Ячейка. Если ваш лист имеет имя, то вместо обозначения лист используйте имя этого листа. Например, Отчет!B5.

Если имя содержит пробелы (например, Бюджет 99 ), то при создании ссылок на другие листы это имя необходимо заключать в одинарные кавычки.

Связывание нескольких рабочих листов

Часто встречаются ситуации, когда формула должна ссылаться на диапазон ячеек, включающий два или даже больше листов в рабочей книге. Обычно это происходит, когда создаются идентичные рабочие листы для распределения бюджета за разные периоды времени, для сведений о работе различных бригад или для сведений о продажах в различных регионах. У вас также могут быть разные рабочие листы, но их итоговые значения специально содержатся в ячейках с идентичными адресами. И все эти итоговые значения можно затем свести воедино для получения общего итога в одной формуле, содержащей ссылку на все эти листы и адреса ячеек.

В таких случаях Excel ссылается на диапазоны ячеек с помощью трехмерных ссылок. Трехмерная ссылка устанавливается путем включения диапазона листов (с указанием начального и конечного листа) и соответствующего диапазона ячеек. Например, формула, использующая трехмерную ссылку, которая включает листы от Лист1 до Лист5 и ячейки А4:А8, может иметь следующий вид: =SUM(ЛИСТ1:ЛИСТ5!А4:А8).

Трехмерные ссылки можно включить в формулу и другим способом. Для этого достаточно щелкнуть на рабочем листе, который нужно включить в формулу. Но сначала начните формулу в ячейке, где хотите получить результат. Когда дойдет черед до использования трехмерной ссылки, щелкните на ярлычке первого листа, подлежащего включению в ссылку, затем нажмите (и не отпускайте) клавишу и щелкните на ярлычке последнего листа, подлежащего включению в ссылку. После этого выделит нужные ячейки. Завершив построение формулы, нажмите клавишу .

Связывание рабочих книг

При связывании рабочих книг используется ряд терминов, которые вам следует знать. Рабочая книга, содержащая формулу связывания, называется зависимой рабочей книгой, а рабочая книга, содержащая связываемые данные -- исходной рабочей книгой.

Связь между двумя файлами достигается за счет введения в один файл формулы связи со ссылкой на ячейку в другом файле, файл, который получает данные из другого, называется файлом назначения, а файл, который предоставляет данные, -- файлом-источником.

Как только связь устанавливается. Excel копирует величину из ячейки в файле-источнике в ячейку файла назначения. Величина в ячейке назначения автоматически обновляется.

При ссылке на ячейку, содержащуюся в другой рабочей книге, используется следующий синтаксис: [Книга]Лист!Ячейка. Вводя формулу связывания для ссылки на ссылку из другой рабочей книги, используйте имя этой книги, заключенное в квадратные скобки, за которыми без пробелов должно следовать имя рабочего листа, затем восклицательный знак (!), а после него -- адрес ячейки (ячеек). Например "C:Petrov[Журнал1.хls]Литература"!L3.

Обновление связей

Работая с несколькими рабочими книгами и формулам связывания, необходимо знать, как эти связи обновляются. Будут ли результаты формул обновляться автоматически, если изменить данные в ячейках, на которые есть ссылки в только в том случае, если открыты обе рабочие книги.

Если данные в исходной рабочей книге изменяются в тот момент, когда зависимая книга (которая содержит формулу связывания) закрыта, то связанные данные не обновляются немедленно. Открывая зависимую рабочую книгу следующий раз, Excel запросит от вас подтверждение на обновление данных. Чтобы обновить все связанные данные в рабочей книге, выберите ответ Да. Если у вас есть связи, которые обновляются вручную, или вы хотите сами обновить связи, выберите ответ Нет.

Для удаления листа выберите команду Удалить из контекстно-зависимого меню для ярлычков. Для удаления сразу нескольких рабочих листов предварительно выделите их при нажатой клавише Ctrl.

Проверьте:

· знаете ли вы, что такое: рабочая книга Excel; рабочий лист; правила записи формул для связи рабочих листов;

· умеете ли вы: вставлять рабочий лист; удалять; переименовывать; перемещать; копировать; открывать окна; закрывать; упорядочивать; осуществлять связь между листами одной и разных рабочих книг.

Лабораторная работа по Microsoft Excel.

Первое и самое главное: связывание таблиц по общим признакам — не типичная функция для MS Excel. Для таких задач есть специальные программы — так называемые базы данных. Хотя правильнее их называть «системы управления базами данных», или СУБД. К ним относятся, например, MS Access, MS SQL Server, Oracle и многие другие. В этих системах объединение таблиц по общим ключевым полям — едва ли не самая распространенная операция. И для ее решения там есть мощные и удобные инструменты. Они позволяют организовать самые разнообразные типы связей между таблицами, контролировать целостность данных, выполнять каскадное удаление записей и т. п. Однако для полноценного использования СУБД нужна определенная подготовка, знание языка запросов и т. п. Поэтому в практике бухгалтера СУБД в чистом виде применяют редко, и всю обработку данных делают обычно в программе Excel. Что же касается MS Excel, то здесь возможности связывания таблиц ограничены. В основном эта связь заключается в написании формул, которые ссылаются на разные листы или рабочие книги. Вы можете создать печатный отчет или сводную таблицу, которая оперирует несколькими базами данных. Но специальных инструментов для полноценной организации связей между наборами данных в Excel нет, да и быть не должно.

Однако не все так плохо… Дело в том, что в реальной работе все варианты связывания таблиц бухгалтеру обычно не нужны. Да и без каскадного удаления записей он тоже как-то обойдется. А вот связать одну большую таблицу со справочником — задача вполне актуальная и практически применимая. И, что самое главное(!), такая функция вполне реализуема в MS Excel. Причем единственное, что для этого потребуется, — это пара несложных трюков и система гиперссылок.

Теперь посмотрим, как это выглядит практически. Начнем, конечно же, с исходных данных.

Чем мы располагаем

В качестве примера я воспользуюсь двумя таблицами, форма которых показана на рис. 1 и 2. Первая таблица (она расположена на листе « Заказы ») состоит из четырех полей: « Заказ », « Дата », « Клиент », « Сумма » и пока пустое поле « Коммент. ». Это упрощенный вариант базы данных о заказах. В поле « Коммент. » мы в конечном итоге и поставим ссылку на элемент справочника. Понятно, что в базе « Заказы » один контрагент может фигурировать много раз, — это зависит от количества заказов, сделанных этим клиентом.


Вторая таблица называется « Клиенты ». В ней я оставил всего пять колонок: « Название » (наименование предприятия), далее идут фамилия директора, юридический адрес, телефон и e-mail.

Важно! В справочнике « Клиенты » одна строка содержит данные об одном предприятии. Повторы здесь недопустимы, каждый клиент присутствует в базе только один раз.

Теперь вернемся непосредственно к самой задаче.

Что нужно сделать

Итак, мы собираемся организовать связь между таблицей « Заказы » и « Клиенты ». Для этого в поле « Коммент. » таблицы « Заказы » мы поставим гиперссылку, которая будет указывать на определенную строку таблицы « Клиенты ». Алгоритм работы гиперссылки будет таким. Вначале она должна проанализировать содержимое поля « НаимПредпр » в текущей строке таблицы « Заказы ». Иными словами, запомнить название предприятия , которое оформило конкретный заказ. Затем ссылка должна выполнить переход на лист « Клиенты ». На этом листе — найти строку, которая описывает параметры предприятия, сделавшего заказ. И, наконец, — установить указатель текущей ячейки на соответствующую строку в справочнике « Клиенты ». Так это выглядит в общих чертах.

Кстати, в терминологии баз данных такая связь называется « один ко многим » (если смотреть со стороны таблицы « Клиенты »). То есть один элемент справочника о клиентах ссылается на несколько записей в базе заказов. В MS Excel для создания такой связи специальных инструментов нет. Мы должны построить их сами. Для этого, исходя из алгоритма, нам понадобятся: встроенная функция для создания гиперссылки (такая функция называется « ГИПЕРССЫЛКА() ») и функция для поиска данных в таблице. Я предлагаю для поиска использовать функцию « ПОИСКПОЗ() ». Но это не все. Гиперссылке нужно указать точный адрес для перехода: имя файла, название рабочего листа и ячейку, которую нужно сделать активной. Для получения имени файла, листа и ячейки мы воспользуемся функцией « ЯЧЕЙКА() ». Кроме того, для формирования строки с адресом перехода нам придется обратиться к встроенным функциям работы с текстом: « ПСТР() » и « ПОИСК() ». Вот собственно и все основные инструменты. Можно переходить к практической реализации.

Связываем две таблицы

Вначале выполним несколько предварительных действий. Начнем с функции « ГИПЕРССЫЛКА() », которая будет ключевой при организации связей между таблицами. У нее два параметра. Первый — это адрес, т. е. имя файла и рабочего листа, на который указывает ссылка. Второй параметр — адрес конкретной ячейки на этом листе, куда будет указывать гиперссылка. У нас гиперссылок будет много. И каждый раз для их создания придется указывать в параметрах функции имя файла и название листа. Это долго и неудобно. Поэтому лучше один раз создать переменную с названием листа и файла, а затем указывать ее переменную в функции « ГИПЕРССЫЛКА() » по мере необходимости. Применительно к MS Excel в качестве такой переменной удобно использовать именованный диапазон ячеек . С этого мы и начнем.

Формируем переменную с названием листа

Итак, нам нужно создать переменную, чтобы сохранить в ней имя файла и название рабочего листа для будущих гиперссылок. Мы решили, что такой переменной будет именованный диапазон. Чтобы создать его в MS Excel 2010, делаем так.

1. Вызываем Excel, загружаем документ и переходим в меню « Формулы ». Лента примет вид, как на рис. 3.


2. В группе « Определенные имена » щелкаем на иконке « Диспетчер имен ». Откроется окно, изображенное на рис. 4.

3. В этом окне нажимаем кнопку « Создать ». Откроется окно « Создание имени », изображенное на рис. 5.

4. В этом окне в поле « Имя: » вводим текст « Мой_Лист ». В поле « Диапазон: » печатаем формулу « =ПСТР(ЯЧЕЙКА(" имяфайла " ;Клиенты!$A$1);ПОИСК(" [ " ;ЯЧЕЙКА(" имяфайла " ;Клиенты!$A$1));256)& " ! " » (рис. 3).

5. В окне « Создание имени » нажимаем « ОК ».

6. В окне « Диспетчер имен » нажимаем « ОК ».

Теперь разберемся, что же мы сделали на самом деле? В рабочей книге появился новый именованный диапазон « Мой_Лист ».

Важно! В нашем случае название именованного диапазона должно быть БЕЗ пробелов. В противном случае формулы адресации будут работать неправильно.

Как и любой именованный диапазон, он указывает на ячейку или группу ячеек рабочей книги Excel. Но в нашем случае адрес этой группы не постоянный, а динамический . Его формирует формула, которую мы ввели в поле « Диапазон: ». Вкратце о работе этой формулы. Начнем изнутри — с функции « ЯЧЕЙКА() ».

Выражение « ЯЧЕЙКА(" имяфайла " ;Клиенты! $A$1) » обращается к ячейке « A1 » на листе « Клиенты » и возвращает для этой ячейки ее полный адрес , т. е. путь к файлу, имя файла и название листа, где эта ячейка расположена. Например, документ с таблицами у меня называется « ДинСсылкиExcel_.xls ». Хранится он на диске « D: » в папке « !Фактор ». Тогда результат работы формулы будет такой: « D:!Фактор[ДинСсылкиExcel_.xls]Клиенты ».

Из этой строки нам нужно взять только имена файла и лист а рабочей книги — буква диска и название папки при создании гиперссылки не понадобятся. Для решения этой задачи мы воспользуемся стандартными функциями Excel для работы с текстом.

Вырезать часть строки можно функцией « ПСТР() ». Но ей нужно указать: исходный текст (у нас это полный путь к ячейке), начальную позицию и количество знаков , которое нужно вырезать из исходной строки.

Начальную позицию определить просто. Для этого с помощью функции « ПОИСК() » мы находим первое вхождение квадратной открывающей скобки (« [ ») в текст, где хранится путь к ячейке. Фрагмент формулы, который выполняет эту операцию, выглядит так: « ПОИСК(" [ " ;ЯЧЕЙКА(" имяфайла " ; Клиенты!$A$1)) ». Для строки « D:!Фактор [ДинСсылкиExcel_.xls]Клиенты » эта формула вернет « 12 ». Количество знаков, которые нужно вырезать из исходного текста, я выбрал максимальное — « 256 ».

Остается подставить полученные значения в функцию « ПСТР() ». Первым ее параметром идет текст с адресом к ячейке. Второй параметр — номер начальной позиции для вырезания части строки. Последний параметр — максимально допустимое количество символов в строке. Формула для этой операции будет такой: « =ПСТР(ЯЧЕЙКА (" имяфайла " ;Клиенты!$A$1);ПОИСК

(" [ " ;ЯЧЕЙКА(" имяфайла " ;Клиенты!$A$1));256) ». В нашем примере такая формула вернет результат в виде « [ДинСсылкиExcel_.xls]Клиенты ». По сути — это ссылка на лист « Клиенты » рабочей книги « ДинСсылкиExcel_.xls ». Дальше может идти адрес ячейки. Но пока не хватает одного элемента — между именем листа и адресом ячейки должен стоять восклицательный знак (« ! »). Этот символ мы можем присоединить к формуле при помощи операции « & », и в окончательной редакции выражение будет выглядеть так: « =ПСТР(ЯЧЕЙКА(" имяфайла " ;Клиенты!$A$1);ПОИСК(" [ " ;ЯЧЕЙКА(" имяфайла " ; Клиенты!$A$1)); 256)& " ! " ». А результат ее работы будет такой: « ».

Совет Аккуратно скопируйте фрагменты формулы в отдельные ячейки рабочего листа, и тогда работа каждой ее части будет у вас как на ладони.

Кстати, работу формулы внутри именованного диапазона легко проверить. Введите в любую свободную ячейку листа выражение « =Мой_Лист » и нажмите клавишу « Enter ». В ячейке должен появиться результат: « [ДинСсылкиExcel_.xls]Клиенты! ».

Важно! Обратите внимание, что для правильной работы формулы имена листов не должны содержать пробелов.

1. Переходим на лист « Заказы », становимся на ячейку « E2 ».

2. Вводим формулу « =ГИПЕРССЫЛКА(Мой_ Лист&АДРЕС(ПОИСКПОЗ(C2;Клиенты!$A:$A;0); 1); " > " ) ».

3. Копируем эту формулу на всю высоту таблицы. Результат нашей работы показан на рис. 6.

Проверяем, что у нас получилось. В таблице « Заказы » щелкаем левой кнопкой, например, на ячейке « E6 ». В этой строке расположены сведения о заказе с номером « 5 » от фирмы « ЧП " Коло " ». После щелчка Excel переключится на лист « Клиенты », а указатель активной ячейки станет на адрес « A6 ». Именно в этой позиции справочника записана информация о « ЧП " Коло " » (рис. 7).

Рассмотрим вкратце алгоритм работы формулы. Выражение « =ПОИСКПОЗ(C2;Клиенты! $A:$A;0) » находит ячейку в колонке « А » на листе « Клиенты », в которой встречается название контрагента из ячейки « С2 » листа « Заказы ». Последний параметр функции « ПОИСКПОЗ() » равен « 0 ». Это означает, что она будет искать значение по принципу точного совпадения. Вернемся к нашему примеру. Предположим, что мы работаем со строкой « 6 » таблицы « Заказы » (рис. 6). В этой строке находится заказ с номером « 5 » от фирмы « ЧП " Коло " ». После копирования гиперссылки из ячейки « E2 » вниз по колонке « E » в ячейке « E6 » формула с функцией поиска получится такой: « ПОИСКПОЗ(C6;Клиенты!$A:$A;0) ». А результат работы этого выражения будет равен « 6 ». Это означает, что в таблице « Клиенты » описание фирмы « ЧП «Коло» » расположено в шестой строке рабочего листа.

Идем дальше. Результат работы этого выражения мы подставим в качестве первого параметра функции адрес. Вторым параметром укажем « 1 ». Тогда выражение « АДРЕС(ПОИСКПОЗ (C2;Клиенты!$A:$A;0);1) » (вторая строка таблицы « Заказы ») по сути означает « АДРЕС(2;1) ». Эта функция вернет в виде текста адрес ячейки, которая находится во второй строке и первой колонке рабочего листа. Для заказа « 1 » (вторая строка) это будет адрес « $A$2 ». Для заказа в шестой строке таблицы (фирма « ЧП " Коло " ») выражение вернет строку « $A$6 » и т. д.

С адресацией ячейки понятно. Теперь нужно использовать полученный результат в функции « ГИПЕРССЫЛКА() ».

Здесь ситуация такова. Напомню, что у функции « ГИПЕРССЫЛКА() » два параметра. Первый — это адрес, куда указывает гиперссылка. Он включает название файла, листа и адрес ячейки для перехода. Имена файла и листа у нас уже есть, эта информация хранится в переменной « Мой_Лист ». Адрес ячейки для ссылки на контрагента по конкретному заказу мы получили. Остается объединить эти две части операцией « & ». И тогда окончательное выражение для адреса перехода получится таким: « Мой_Лист&АДРЕС(ПОИСКПОЗ(C2; Клиенты!$A:$A;0);1) ».

Смотрим, что у нас получилось. Для ячейки « С2 » такая формула вернет результат « [ДинСсылкиExcel_.xls]Клиенты!$A$2 » — т. е. ссылку на ячейку « A2 » в справочнике « Клиенты ». Все верно: для заказа с номером « 1 » ссылка указывает на контрагента « ТОВ " Смит " ». Если обратиться к ячейке « С6 » (заказ с номером « 5 » от « ЧП " Коло " »), то в этой строке таблицы « Заказы » выражение для адреса перехода будет выглядеть так: « Мой_Лист&АДРЕС(ПОИСКПОЗ(C6;Клиенты!$A:$A;0);1) ». А результат формулы будет такой: « [ДинСсылкиExcel_.xls]Клиенты!$A$6 ».

Переходим ко второму параметру функции « ГИПЕРССЫЛКА() ». Здесь должен находиться текст, который Excel покажет на месте гиперссылки. Иными словами, это название самой гиперссылки. Я выбрал в качестве такого названия символ « > » (знак « больше »). И тогда окончательная формула для создания гиперссылки будет такой: « =ГИПЕРССЫЛКА(Мой_Лист&АДРЕС(ПОИСКПОЗ(C2; Клиенты!$A:$A; 0);1); " > " ) ».

Вот собственно и все относительно создания связей между таблицами Excel. С задачей мы справились, все ссылки работают правильно. Единственное, хотелось бы добавить пару слов по оформлению таблицы. Сейчас в колонке «

© 2024 spbpda.ru
Spbpda - Обучение компьютеру