Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Глава 5.doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
1.05 Mб
Скачать

5.8. Функции ссылок и массивов

Обзор функций ссылок и массивов. К этой категории относятся следующие типы функций:

 Функции, обеспечивающие выбор информации из массивов по заданным критериям (но­меру элемента в спис­ке, индексу элемента массива и т.д.).

 Функции-инди­ка­торы, позволяющие определить номер заданного столбца (строки) или размер массива данных.

 Функции, выпол­ня­ю­щие разнородные задачи: транспонирование массивов, создание ссылок на ячейки и т.д.

Типичными представителями первой группы являются функции ПРОСМОТР, ВЫБОР, ИНДЕКС и др. Ко второй группе функций можно отнести СТОЛБЕЦ, СТРОКА, ЧСТРОК и ЧИСЛСТОЛБ; а к третьей группе – ТРАНСП, АДРЕС и др. Рассмотрим последовательно функции трех названных групп.

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

=ВЫБОР(номер_индекса; значение1; значение2; …) – выбирает элемент списка, по его заданному порядковому номеру.

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

Значение1, значение2, … – список (до 29 элементов), из которых выбирается одно значение. Элементами списка могут быть числа, формулы, текст или ссылки на ячейки с аналогичными данными.

Например, если в ячейки A1, A2, A3, A4, A5, A6, A7 введены названия дней недели: понедельник, вторник, … , воскресенье, то функция =ВЫБОР(2; A1; A2; A3; A4; A5; A6; A7) вернет значение вторник.

=ИНДЕКС(массив; номер_строки; номер_столбца) – возвращает значение элемента массива, заданного номером строки и номером столбца массива, на пересечении которых расположен этот элемент. Такая синтаксическая форма функции ИНДЕКС называется формой массива.

Массив – ссылка на диапазон ячеек с данными.

Номер_строки – номер строки массива: число или ссылка на ячейку с числом (счет от 1).

Номер_столбца – номер столбца массива: число или ссылка на ячейку с числом (счет от 1).

Примеры использования функции ИНДЕКС представлены на рис. 5.23. В ячейке G1 отображается результат поиска в массиве A1:E4 элемента, расположенного на пересечении 2-й строки и 3-го столбца. А в ячейках G2:G4 находится функция ИНДЕКС, введенная как фор­мула массива (перед вводом функции ячейки G2:G4 были выделены; ввод функции завершился нажатием клавиш Shift+Ctrl+Enter). Особенность этой функции заключается в том, что в массиве A2:E4 задан только номер столбца (4), а номер строки опущен. В этом случае функция возвращает массив данных из столбца с заданным номером (если задать только номер строки, можно получить массив данных из строки с заданным номером).

Рис. 5.23. Примеры использования функции ИНДЕКС (форма массива)

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

=ПРОСМОТР(искомое_значение; просматриваемый_вектор; вектор_результатов) – просматривает заданный диапазон (часть строки или столбца) в поисках заданного значения и возвращает соответствующий ему результат из другого столбца или строки. Поскольку про­сматриваемый массив данных является одномерным, такая синтаксическая форма функции ПРОСМОТР называется векторной.

Искомое_значение – значение, которое функция ищет в просматриваемом векторе. Обычно это число, дата или текст.

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

Вектор_результатов – это часть строки или часть столбца, содержащая значения, связанные с соответствующими значениями просматриваемого вектора. Вектор результатов дол­жен иметь тот же размер, что и просматриваемый вектор.

Рис. 5.24. Примеры использования функции ПРОСМОТР (векторная форма)

Поясним использование функции ПРОСМОТР на примере формирования бланка заказа с использованием данных двух таблиц: "Заказы" и "Товары" (рис. 5.24).

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

Задача состоит в том, чтобы автоматизировать формирование бланка заказа, выдаваемого покупателю для оплаты. То есть, чтобы при вводе номера заказа (на рис. 5.24 введен номер 104), автоматически заполнились все белые поля (дата заказа, название товара и т.д.).

Очевидно, что для этого в соответствующие ячейки нужно ввести функции и формулы, как это показано на рисунке:

 Первая функция обеспечивает поиск даты заказа. Искомое_значение задано в виде ссылки на ячейку B9, где находится номер заказа. Просматриваемый_вектор A3:A7 – это упорядоченный по возрастанию список номеров заказов. А вектор_результатов D3:D7 – это список дат, каждая из которых соответствует своему номеру заказа. Поэтому, если в просматриваемом векторе будет найден, например, 4-й по счету номер заказа, то функция вернет 4-ю по счету дату (в нашем примере это 14.12.2003 г.).

 Вторая функция чуть сложнее, так как она содержит вложенную функцию ПРОСМОТР со всеми ее аргументами (вложенная функция выделена полужирным шрифтом). Из рисунка видно, что вложенная функция отличается от рассмотренной выше функции только вектором результатов. В данном случае вектор результатов B3:B7 – это список кодов. То есть, вложенная функция ПРОСМОТР возвращает код товара, соответствующий заданному номеру заказа. А так как вложенная функция занимает в основной функции ПРОСМОТР место искомого значения, то теперь этот код товара будет отыскиваться в списке кодов таблицы "Товары" (диапазон F3:F6). Поскольку вектор результатов основной функции – G3:G6, эта функция возвращает название товара, соответствующее коду, найденному вложенной функцией.

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

В заключение отметим две особенности функции ПРОСМОТР:

1. Если в просматриваемом векторе отсутствует заданное искомое значение, то функция вы­бирает ближайшее значение, меньшее заданного.

2. Если в просматриваемом векторе есть несколько заданных искомых значений, то функция вы­­бирает из них то, которое имеет максимальный порядковый номер (то есть, последнее).

Кроме векторной формы, функция ПРОСМОТР может использоваться в форме массива. В этом случае функция ищет заданное искомое значение в первой строке или в первом столб­це просматриваемого прямоугольного диапазона и возвращает значение из соответствующей по­зиции последней строки или последнего столбца этого диапазона.

=ВПР(искомое_значение; таблица; номер_столбца; интервальный_просмотр) – ищет заданное значение в крайнем левом столбце таблицы и возвращает соответствующее ему зна­чение из указанного столбца таблицы. Данные первого столбца должны быть упорядочены по возрастанию. Аббревиатура ВПР означает вертикальный просмотр.

Искомое_значение – это значение, которое должно быть найдено в первом столбце таблицы. Это может быть числовое значение, текст или ссылка на ячейку с числом или текстом.

Таблица – это диапазон ячеек, в котором ищутся необходимые данные.

Номер_столбца – это номер столбца таблицы, где ищется возвращаемое функцией значение. Отсчет столбцов начинается с единицы, но 1-й столбец не может быть задан в качестве этого аргумента, так как в нем выполняется поиск заданного искомого_значения.

Интервальный_просмотр – это логическое значение (ИСТИНА или ЛОЖЬ), которое определяет, нужно ли, чтобы функция ВПР искала точное соответствие. Если этот аргумент опу­щен или имеет значение ИСТИНА, а заданного искомого значения в первом столбце нет, функция вы­бирает ближайшее значение, меньшее заданного. Если же этот аргумент имеет значение ЛОЖЬ, функция ищет точное соответствие и, если заданного искомого значения в первом столбце нет, возвращается значение ошибки #Н/Д.

В качестве примера рассмотрим использование функции ВПР для поиска плотности перегретого водяного пара при заданных температуре и давлении. Соответствующая таблица данных находится в диапазоне A3:E6 (рис. 5.25).

Рис. 5.25. Примеры использования функции ВПР

Для удобства, в диапазоне G2:H5 создана таблица решений. В ячейке H2 задается давление пара, а в ячейке H3 – его температура; при этом в ячейке H5 автоматически отображается плотность пара при заданных параметрах. Для этого в ячейку H5 введена функция ВПР, изображенная на рис. 5.25 ниже результата 15.39. Аргументами функции являются: давление (ссылка на ячейку H2); таблица данных (ссылка на диапазон A3:E6) и номер столбца, в котором ищется плотность пара (ссылка на ячейку H4).

Для пересчета температуры в номер столбца используется функция ЕСЛИ (см. п. 5.3). Формула в ячейке H4 имеет вид: =ЕСЛИ(H3=B3; 2; ЕСЛИ(H3=C3; 3; ЕСЛИ(H3=D3; 4; 5))).

Вычисление номера столбца в ячейке H4 выполнено из методических соображений. Вообще же такой расчет можно не делать. Формулу для пересчета температуры в номер столбца можно ввести в качестве третьего аргумента функции ВПР (вместо H4). Тогда эта функция будет иметь вид: =ВПР(H2; A3:E6; ЕСЛИ(H3=B3; 2; ЕСЛИ(H3=C3; 3; ЕСЛИ(H3=D3; 4; 5))).

Теперь рассмотрим, что будет, если заданного искомого значения в первом столбце нет. Допустим, в ячейке H2 задано давление 3 МПа. Поскольку параметр интервальный_просмотр опущен, в этом случае функция вы­берет ближайшее значение, меньшее заданного, то есть 2 МПа. В результате, например, для температуры 300 ºC получим плотность 7.97 кг/м.куб.

=ГПР(искомое_значение; таблица; номер_строки; интервальный_просмотр) – ищет заданное значение в верхней строке таблицы и возвращает соответствующее ему зна­чение из указанной строки таблицы. Данные первой строки должны быть упорядочены по возрастанию слева направо. Аббревиатура ГПР означает горизонтальный просмотр.

Функция ГПР имеет те же аргументы, что и функция ВПР. Только вместо номера_столбца в данном случае используется номер_строки. Смысл и назначение аргументов описаны выше.

Рассмотрим использование функции ГПР для поиска плотности перегретого пара (см. рис. 5.25) при том же давлении 4 МПа и температуре 340 ºC. Так как теперь искомое_значение – температура, функция будет иметь вид: =ГПР(H3; A3:E6; 3). Результат будет прежним – 15.39.

Функции-индикаторы. В эту группу объединены функции, определяющие номер заданного столбца (строки) или размер массива данных.

=СТРОКА(ссылка) – возвращает номер строки, соответствующий заданной ссылке.

Аргумент ссылка – это ссылка на ячейку или диапазон ячеек, для которых определяется номер строки. Если ссылка опущена, то предполагается, что это ссылка на ячейку, в которой находится сама функция СТРОКА.

Если в качестве аргумента функции задана ссылка на прямоугольный диапазон ячеек, и функция введена как формула массива, то функция СТРОКА возвращает номера строк в виде вертикального массива. Поясним это на конкретном примере.

Допустим, необходимо определить с помощью функции СТРОКА номера строк в массиве R11:S19. Для этого нужно выполнить следующие операции:

 выделить вертикальный диапазон ячеек, куда будет помещена формула массива (на­при­мер, диапазон L1:L9);

 ввести функцию =СТРОКА(R11:S19);

 закончить ввод функции нажатием комбинации клавиш Shift+Ctrl+Enter.

=СТОЛБЕЦ(ссылка) – возвращает номер столбца, соответствующий заданной ссылке. Все, сказанное выше о функции СТРОКА, распространяется и на функцию СТОЛБЕЦ с той лишь разницей, что теперь определяется номер столбца или номера столбцов массива.

=ЧСТРОК(массив) – возвращает количество строк в заданном диапазоне ячеек или в мас­сиве данных.

Например, функция =ЧСТРОК(D11:F15) возвращает результат 5. А если аргументом является массив данных, функция может иметь, например, такой вид: =ЧСТРОК({1;2:3;4:5;6}). Эта функция возвращает результат 3.

=ЧИСЛСТОЛБ(массив) – возвращает количество столбцов в заданном диапазоне ячеек или в мас­сиве данных.

Все, сказанное выше о функции ЧСТРОК, распространяется и на функцию ЧИСЛСТОЛБ с той лишь разницей, что теперь определяется количество столбцов в диапазоне или массиве.

Другие функции ссылок и массивов. В эту группу входят функции, выпол­ня­ю­щие разнородные задачи: транспонирование массивов, создание ссылок на ячейки и т.д.

=ТРАНСП(массив) – преобразует вертикальный массив данных в горизонтальный и наоборот, то есть изменяет ориентацию массива на рабочем листе.

Аргумент массив – это ссылка на диапазон ячеек или мас­сив транспонируемых данных. Например, функция может иметь вид: =ТРАНСП(D1:F5) или ТРАНСП({1;2:3;4:5;6}).

Функция ТРАНСП должна быть введена как формула массива в диапазон, который имеет столько строк (и столбцов), сколько столбцов (и строк) имеет аргумент массив. В результате транспонирования первая строка исходного массива становится первым столбцом нового мас­сива, вторая строка исходного массива становится вторым столбцом нового массива и т.д.

Допустим, нужно транспонировать массив данных, расположенных в диапазоне A1:B3. Для этого необходимо выполнить следующие операции:

 выделить диапазон ячеек, куда будет помещена формула массива (на­при­мер, диапазон C1:E2);

 ввести функцию =ТРАНСП(A1:B3);

 закончить ввод функции нажатием комбинации клавиш Shift+Ctrl+Enter.

В результате транспонирования данных из диапазона A1:B3, имеющего два столбца и три строки, появляется новый массив C1:E2, имеющий три столбца и две строки.

=АДРЕС(номер_строки; номер_столбца; тип_ссылки; а1; имя_листа) – создает ссылку на ячейку в виде текста, используя заданные номер строки и номер столбца.

Номер_строки – это номер строки в создаваемой ссылке.

Номер_столбца – это номер столбца в создаваемой ссылке.

Тип_ссылки – это тип создаваемой ссылки. Если этот аргумент опущен или имеет значение 1, функция возвращает абсолютную ссылку (например, $R$2). Если тип_ссылки имеет значение 2, 3 или 4, функция возвращает одну из смешанных ссылок или относительную ссылку (R$2, $R2 или R2 соответственно).

А1 – это логическое значение (ИСТИНА или ЛОЖЬ), которое определяет стиль ссылки: А1 или R1C1 (см. Приложение 2, рис. П2.4). Если а1 имеет значение ИСТИНА или опущено, то функция возвращает ссылку в стиле А1; а если этот аргумент имеет значение ЛОЖЬ, то функция возвращает ссылку в стиле R1C1.

Имя_листа  – это текст, определяющий имя рабочего листа, на ячейку которого создается ссылка. Если имя_листа опущено, то ссылка создается на ячейку активного листа.

Например, с помощью функции =АДРЕС(2; 3; 4; "Лист5") можно создать относительную ссылку на ячейку C2 пятого рабочего листа активной рабочей книги. Эта ссылка будет иметь вид: Лист5!C2.

Функция АДРЕС применяется в тех случаях, когда нужно использовать в формуле ту или иную ссылку в зависимости от результатов каких-то вычислений. При этом номер_строки и номер_столбца задаются в виде ссылок на ячейки с формулами.