Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пособие_ОТ.rtf
Скачиваний:
10
Добавлен:
11.11.2019
Размер:
6.62 Mб
Скачать
    1. 5. Организация справочников и работа с ними

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

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

В табличном процессоре Excel для работы с вертикальным справочником используется функция

ВПР( код; блок_справочник; номер_колонки; [тип_поиска] )

для работы с горизонтальным – функция

ГПР( код; блок_справочник; номер_строки; [тип_поиска] ).

Примечание: квадратными скобками выделены необязательные параметры.

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

Параметры функции имеют следующее назначение:

  • код – значение, которое должно быть найдено в первой левой колонке справочника;

  • блок_справочник – блок ЭТ, содержащий справочник;

  • номер_колонки – номер колонки в блоке-справочнике, из которого должно быть возвращено значение, соответствующее заданному коду (из той строки, в которой расположен найденный код). Счет колонок ведется слева направо, кодовая колонка имеет первый номер;

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

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

Если аргумент тип_поиска указан явно и имеет значение ЛОЖЬ, то в кодовом столбце ищется точное соответствие заданному коду. Последовательность расположения кодовых значений в левой колонке справочника в этом случае произвольна.

A

B

C

D

...

21

Таб. номер

Ф. И. О.

Должность

Оклад

22

1023

Яковлев О. И.

Слесарь

370,00

23

1037

Богданов К. Л.

Мастер

430,00

24

1294

Савинков У. Р.

Инженер

470,00

25

1306

Соколова Т. И.

Уборщица

185,00

...

ВПР(1037; A22:D25; 2; ИСТИНА) = Богданов К. Л.

ВПР(1294; A22:D25; 4; ИСТИНА) = 470

ВПР(1047; A22:D25; 1; ИСТИНА) = 1037

ВПР(1000; A22:D25; 2; ИСТИНА) = ОШИБКА (недопустимое значение кода)

ВПР(1047; A22:D25; 2; ЛОЖЬ) = ОШИБКА (недопустимое значение кода)

ВПР(1037; A22:D25; 5; ЛОЖЬ) = ОШИБКА (недопустимый номер колонки)

Рис. 10. Примеры использования функции ВПР для работы со справочником и получаемые результаты

Здесь приведен пример использования вертикального справочника, позволяющего по заданному табельному номеру работника получить сведения о его фамилии, должности, окладе. Справочник располагается в блоке A22:D25. На рис. 10 также показаны внешний вид справочника и значения, возвращаемые функцией ВПР при различных запросах к справочнику.

Обратите внимание, что существуют невыполнимые запросы, возвращающие в качестве результата значение ОШИБКА (в зависимости от характера ошибки и такой результат может отображаться по-разному, поскольку различают несколько разных типов ошибки). При работе со справочниками ошибки возникают в следующих ситуациях:

  • номер_колонки меньше единицы или больше числа колонок в области, указанной как справочник;

  • если четвертый аргумент отсутствует или имеет значение ИСТИНА и заданный код по значению меньше первого (наименьшего) кода;

  • если четвертый аргумент имеет значение ЛОЖЬ и заданный код не соответствует ни одному из значений кодовой колонки.

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

Продиагностировать появление ошибки можно с помощью функции ЕСЛИ и функции ЕОШИБКА(значение), которая возвращает значение ИСТИНА, если значением аргумента является какой-либо из возможных типов ошибок, и значение ЛОЖЬ в противном случае.

Возможны ситуации, когда вследствие неправильного запроса будет возвращен неправильный результат, а не значение ОШИБКА. В приведенном выше примере такое возможно, если четвертый параметр есть ИСТИНА и случайно указан код, который отсутствует в справочнике, но превышает минимальный из существующих кодов. В данном случае в качестве результата будут возвращены сведения, соответствующие коду, ближайшему снизу к заданному, а не сообщение об ошибке.

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

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

A

B

C

D

E

F

1

Код

Наименование

Цена единицы при партии (не менее)

2

изделия

изделия

1

20

100

1

3

3520

Смеситель А-74

300

270

250

2

4

734

Шланг

14

13

11

3

5

2803

Смеситель А-37

68

60

50

4

Область справочника, расположенного на странице "Справочники"

A

B

C

D

1

Код

Наименование

Размер

Цена

2

изделия

изделия

партии

партии

3

2803

Смеситель А-37

10

680

4

3530

Ошибка!

120

5

Область рабочей части документа

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

Электронный документ, с помощью которого реализуется решение поставленной задачи, будет состоять из двух частей: справочника, который располагается на странице с именем "Справочники" и содержит сведения о стоимости одного изделия в зависимости от размера партии, и рабочей части документа, располагающейся на другой странице с произвольным именем (рис. 11).

Исходными данными, заносимыми вручную, являются справочные сведения, а в рабочей части документа – коды изделий и размеры партий. Расчетные данные – наименования изделий и цены партий указанного размера. Необходимо определить, какие формулы следует занести в ячейки B3 и D3, чтобы после копирования их в нижележащие ячейки столбцов везде получить правильные результаты. Кроме того, следует предусмотреть возможность занесения ошибочного кода изделия – пусть в этом случае вместо наименования изделия появляется сообщение "Ошибка!" Формула, заносимая в ячейку B3, может быть такой:

=ЕСЛИ(ЕОШИБКА(ВПР(A3; Справочники!$A$3:$B$5; 2; ЛОЖЬ); "Ошибка!"; ВПР(A3; Справочники!$A$3:$B$5; 2))

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

=C3*ГПР(C3; Справочники!$C$2:$E$5; ВПР(A3; Справочники!$A$3:$F$5; 6; ЛОЖЬ))

Функция ВПР позволяет определить номер строки горизонтального справочника (блок C3:E5), из которой следует извлекать нужные сведения, – это значение является третьим параметром функции ГПР. Вследствие того, что четвертый параметр функции ГПР не указан (по умолчанию принимается равным значению ИСТИНА), цена единицы изделия будет определяться правильно и в тех случаях, когда размер партии не совпадает ни с одним значением, указанным в ячейках C2:D2 кодовой строки горизонтального справочника (в таких случаях за искомое значение кода принимается ближайшее снизу значение кодовой строки).

Иногда при поиске удобно применять функцию

ПОИСКПОЗ(код; блок_справочник; [тип_поиска]),

которая возвращает относительное положение элемента массива, соответствующего указанному значению в указанном порядке. Функция ПОИСКПОЗ используется, когда требуется определить позицию элемента в диапазоне, а не сам элемент.

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

блок_справочник – непрерывный интервал ячеек, возможно, содержащих искомые значения. Также блок_справочник может быть блоком или ссылкой на блок.

Тип поиска  – число –1, 0 или 1. Тип_поиска указывает, как Microsoft Excel сопоставляет код со значениями в аргументе блок_справочник:

  • если тип_ поиска равен 1, функция ПОИСКПОЗ находит наибольшее значение, которое меньше либо равно значению аргумента код. В этом случае содержимое блока_справочника должно быть упорядочено по возрастанию: ..., –2, –1, 0, 1, 2, ..., A-Z, ЛОЖЬ, ИСТИНА;

  • если тип_ поиска равен 0, выполняется поиск первого значения, которое в точности равно значению аргумента код. Блок_справочник может быть не упорядочен;

  • если тип_ поиска равен –1, выполняется поиск наименьшего значения, которое не меньше чем код. Блок_справочник должен быть упорядочен по убыванию: ИСТИНА, ЛОЖЬ, Z-A, ..., 2, 1, 0, –1, –2, ..., и т. д.;

  • если тип_ поиска опущен, предполагается, что он равен 1.

В примере, изображённом на рис. 11, после внесения в ячейку D3 формулы:

=C3*ГПР(C3; Справочники!$C$2:$E$5; ПОИСКПОЗ(A3; Справочники!$A$3:$А$5; ЛОЖЬ)+1)

получим тот же результат, узнав цену партии.

Задачи

Задача 5.1

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

Исходными данными для расчетов, заносимыми в документ вручную, являются все сведения, содержащиеся в справочнике, а также коды городов и длительность переговоров с этими городами (колонки A и C).

Автоматически должны определяться наименования городов, соответству­ющие указанным кодам (колонка B), и стоимость переговоров (колонка D).

A

B

C

D

1

Код

Название

Кол-во

Стоимость

2

города

города

минут

переговоров

3

818

Архангельск

60

48,00

4

495

Москва

150

180,00

5

812

Санкт-Петербург

100

60,00

F

G

H

1

Код

Название

Стоимость

2

города

города

1 минуты (у. е.)

3

495

Москва

1,20

4

812

Санкт-Петербург

0,60

5

815

Мурманск

1,30

6

816

Новгород

0,75

7

817

Вологда

1,00

8

818

Архангельск

0,80

Какие формулы следует занести в ячейки B3 и D3, чтобы после копирования их в нижележащие ячейки соответствующего столбца везде получались правильные результаты?

Задача 5.2

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

A

B

C

D

1

Ф. И. О.

Разряд

Вредность

Оклад

2

работника

работника

работ (%)

работника

3

Андреев И. П.

4,5

2

Ошибка!

4

Быков С. Л.

2

13

594,00

5

Вошкин М. Е.

5

7

728,00

В качестве справочника, содержащего необходимые для расчета сведения, используется электронный документ из задачи 4.1. Предполагается, что справочник находится на листе электронной таблицы с именем SPR. При этом если указанный процент доплат за вредность не совпадает ни с одним из указанных в блоке B2:E2 справочника, берется ближайший к нему снизу. Если же указан разряд, не совпадающий ни с одним из имеющихся в справочнике (число меньше 1, больше 6 или не целое), то вместо оклада должно появляться сообщение "Ошибка!".

Исходными данными для проведения расчетов, заносимыми в документ вручную, являются значения разрядов работников и процентов доплат за вредность (колонки В, С).

Автоматически должны рассчитываться оклады работников (колонка D).

Какую формулу следует занести в ячейку D3, чтобы после ее копирования в нижележащие ячейки везде получались правильные результаты?

Задача 5.3

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

A

B

C

D

1

Шифр

Покупаемая

Число

Сумма

2

клиента

сумма ($)

месяцев

контракта (руб.)

3

A217013

30000

6

810000

4

A437782

80000

2

1840000

5

B004710

120000

3

Ошибка!

A

B

C

D

E

1

Стоимость доллара по фьючерсному контракту (руб.)

2

Сумма ($),

Через сколько месяцев

3

не менее

1

2

4

6

4

0

23

24

26

27

5

10000

22

24

25

27

6

50000

22

23

25

27

7

100000

22

23

24

26

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

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

Автоматически должны рассчитываться стоимости контрактов (колонка D). При расчете должны контролироваться суммы обмена (неотрицательные) и числа месяцев (соответствуют допустимым значениям).

Какую формулу следует занести в ячейку D3, чтобы после ее копирования в нижележащие ячейки везде получались правильные результаты?