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

Условие 1

значение равно  =ГПР(B4;$C$1:$E$1;1;0) 

формат – шрифт полужирный курсив

и распространим его на все клетки основной части таблицы. Результат вы видите на рисунке. Теперь мы легко определим, кто именно работал в указанные дни (эти даты выделены).

Пример. Рассмотрим (рис. 4.8-4) содержательный пример, связанный с использованием функции ГПР().

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

Здесь в клетке C8 должен быть получен тариф Петра по его разряду (т.е. по третьему разряду 42 руб.)

тариф_Петра=ГПР(разряд_Петра;тарифная_сетка; строка_Тариф; поиск_точный)

или в виде функции С8=ГПР(В8;B$4:E$5;2;0), где значение В8 ищется в верхней строке области B4:E5. Если поиск оказался успешным, результат извлекается из второй строки области поиска и заносится в С8.

Оформление таблицы, изображенное на рисунке, представляет тарифы наглядным и легкоредактируемым образом. В случае если это не нужно, можно воспользоваться массивами – вместо области поиска задаются сами данные о тарифах, помещенные в фигурные скобки. Вначале перечисляются разряды, затем (через знак двоеточие) – собственно расценки С8=ГПР(B8;{1;2;3;4:30;35;42;50};2;0).

A

B

C

D

1

Фирма

Взнос

2

Весна

200

3

Сервис

100

4

Наташа

600

5

Восток

70

6

7

Заказчик

Взнос

Оплата

Остаток

8

Наташа

600

200

400

9

Запад

0

Рис. 4.8-5


A

B

C

D

E

Тарифная сетка

4

Разряд

1

2

3

4

5

Тариф

30

35

42

50

6

7

Имя

Разряд

Тариф

8

Петр

3

42

Рис. 4.8-4

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

Замечание. Если объект поиска целое число, поиск точный, а строка извлечения не слишком велика (до 29 элементов), то для тех же целей мож­но воспользоваться функцией ВЫБОР(). Так (см. выше), вместо С8=ГПР (В8;B$4:E$5;2;0) можно применить С8=ВЫБОР(В8;B$5;C$5;D$5;E$5).

Пример. Задача с использованием функции ВПР() (рис. 4-8.5).

Положим нужно обслужить фирмы-заказчики, предварительно внес­шие некоторые денежные взносы (область А2:В5). Таблица должна быть устроена таким образом, чтобы оператор, вводя название фирмы (например, в А8) должен сразу (в В8) видеть эту сумму, с тем, чтобы не допустить отпуск товара свыше нее. В списке фирм заказчик может и отсутствовать. В этом случае в столбце Взнос должен быть выведен 0. Для розыска значения взноса достаточно формулы вида

В8=ВПР(A8;A$2:B$5;2;0).

Однако, если введено имя фирмы, не сделавшей взноса, в клетке будет сообщение об ошибке вида #Н/Д (нет данных). Для формирования правильной реакции системы следует усложнить выражение, использовав средства, способные распознать такую ситуацию

взнос_фирмы=если(фирма не найдена, то 0р., иначе ее взнос).

Или в виде формулы B8=ЕСЛИ(ЕНД(ВПР(A8;A$2:B$5;2;0));0;ВПР(A8;A$2:B$5;2;0)).

Здесь использована функция ЕНД() распознавания соответствующей ошибки (см. раздел 4.13). Тогда Остаток: D8=B8-C8.

Замечание. В некоторых случаях значение четвертого аргумента (тип поиска) функций ВПР()/ГПР() кажется безразличным. В предыдущем примере функция =ГПР(В8;B$4:E$5;2;0) даст тот же результат, что и =ГПР(В8; B$4:E$5;2;1), поскольку строка разрядов упорядочена по возрастанию. В случае, если предполагается точный поиск, следует все-таки всегда указывать параметр 0. Это позволит пользователю вовремя заметить допущенную им при заполнении таблицы ошибку. Например, если он для некоторого работника ввел значение несуществующего пятого разряда (рис. 4.8-4), Excel выдаст сообщение об ошибке. В том же самом случае при параметре тип поиска=1, система предложит считать результатом поиска тариф ближайшего четвертого разряда. Конечно, такую ошибку довольно сложно обнаружить.

СМЕЩ(ссылка; строк смещения по вертикали; столбцов смещения по горизонтали; высота; ширина)

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

Пример. СУММ(СМЕЩ(A1;0;1;1;3))=СУММ(B1:D1).

Здесь относительно клетки A1 на расстоянии вниз на 0 строк и вправо на 1 столбец (т.е. начиная с позиции A2) выбирается блок размером в одну строку и три столбца (т.е. блок B1:D1).

ЧИСЛСТОЛБ(область) – возвращает число столбцов в области.

Примеры: ЧИСЛСТОЛБ(A1:C4) = 3 (столбцов в блоке),

ЧИСЛСТОЛБ({1;2;3:4;5;6}) = 3 (столбцов в массиве).

ЧСТРОК(области) – возвращает число строк в области.

Примеры: ЧСТРОК(A1:C4) = 4 (строк в блоке),

ЧСТРОК({1;2;3:4;5;6}) = 2 (строк в массиве).

АДРЕС(номер строки; номер столбца; [тип ссылки]; [стиль ссылки]; [имя листа])

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

Тип ссылки – указывает тип возвращаемой ссылки и может иметь одно из значений:

1 – абсолютный (например, $A$1);

2 – абсолютная строка, относительный столбец (A$1);

3 – относительная строка, абсолютный столбец ($A1);

4 – относительный (A1).

Если тип не указан, он считается абсолютным (тип 1).

Стиль ссылки – логическое значение. ИСТИНА (или опущено) – ссылка в стиле А1; ЛОЖЬ – в стиле С1К1.

Имя листа – имя рабочего листа или листа макросов.

Примеры: АДРЕС(2;3) = "$C$2", АДРЕС(2;3;2) = "C$2",

АДРЕС(2;3;2;ЛОЖЬ) = "R2C[3]", АДРЕС(2;3;1;ЛОЖЬ;"Лист1") = "Лист1!R2C3".

ДВССЫЛ(ссылка на ячейку; стиль ссылки) – возвращает ссылку, заданную ссылкой на ячейку.

Ссылка на ячейку – адрес ячейки, которая содержит либо ссылку в стиле А1, либо ссылку в стиле R1C1, либо имя, определенное как ссылка. Если ссылка не допустима, возвращается значение ошибки #ССЫЛ!.

A

B

C

D

E

1

2

1

2

3

4

3

5

6

7

8

4

9

10

11

12

5

13

14

15

16

Рис. 4.8-6

Стиль ссылки – логическое значение, указывающее стиль ссыл­ки, содер­жащейся в ячейке (ИСТИНА – ссылка в стиле A1, ЛОЖЬ – в стиле R1C1).

Функция используется для того, чтобы получить значение, находящееся в ячейке, ссылка на которую находится в другой ячейке. Примеры: Если A1 содержит текст "B2", а ячейка B2 – значение 8, то ДВССЫЛ(A1) = 8.

Если Excel настроен на работу с адресами в стиле R1C1 и ячейка R3C5 содержит R2C2, где в свою очередь находится число 2, то 3*ДВССЫЛ(R3C5;ЛОЖЬ) = 6.

ИНДЕКС(область; номер строки; номер столбца) – возвращает ссылку на ячейку, на пересечении строки и столбца с указанными номерами внутри области.

A

B

C

D

E

F

1

2

ТАРИФНАЯ СЕТКА

3

долж.

стаж

Рабочий

Звеньевой

Бригадир

Прораб

4

от 0 лет

1,0

2,0

3,0

5,0

5

от 5 лет

1,2

2,3

3,5

5,5

6

от 10 лет

2,0

2,5

3,8

6,0

7

от 15 лет

2,2

2,7

4,4

6,7

Рис.

4.8-7

Результат функции интерпретируется другими функциями как ссылка (адрес), однако функция ИНДЕКС() “в чистом виде” возвращает значение (число, текст), находящееся в клетке. Если область содержит только одну строку/столбец, то аргумент строка или столбец, соответственно, является необязательным. Так, для одной строки можно использовать форму ИНДЕКС(область;;столбец). Если аргумент строка/стол­бец равен 0, функция вернет ссылку соответственно на целую строку/столбец.

Примеры (данные взяты из рис. 4.8-6).

=ИНДЕКС(B2:B5;3)=B4=9,

=ИНДЕКС(B5:E5;;4)=E5=16,

=ИНДЕКС(B2:E5;3;2)=C4=10,

=СУММ(ИНДЕКС(B2:E5;2;2):ИНДЕКС(B2:E5;3;4))=СУММ(C3:E4)=54,

=СУММ(ИНДЕКС(B2:B5;0))=СУММ(B2:B5)=28.

Функция ИНДЕКС() удобна для вычисления адресов блоков.

Пример. Положим (рис. 4.8-7) имеется тарифная сетка определения зарплаты (в тыс. руб.) работников с учетом их должности и стажа работы. Здесь в области В4:В7 представлены сведения о стаже в формате вида от” ## “лет, т.е., несмотря на внешний вид, это не текстовые, а числовые данные (числа 0, 5, 10, 15).

Пусть, нам нужно найти зарплату для сотрудника в должности Бригадир со стажем 8 лет. В таблице тарифов этим данным соответствует число 3,5 (клетка выделена), находящееся на пересечении второй строки и третьего столбца области C4:F7. Если все параметры поиска установлены, их можно указать в функции

ИНДЕКС($C$4:$F$7;2;3)=3,5.

Однако номера строки и столбца нам пока неизвестны. Их предстоит вычислить, исходя из должности и стажа. Номер столбца (3) находится формулой (поиск точный)

=ПОИСКПОЗ("Бригадир";$C$3:$F$4;0)), а номер (2) столбца =ПОИСКПОЗ(8;$B$4:$B$7;1).

Здесь поиск интервальный, поскольку фактический стаж может и не совпадать с перечисленными цифрами лет в таблице. Или целиком

=ИНДЕКС($C$4:$F$7;ПОИСКПОЗ(8;$B$4:$B$7;1);ПОИСКПОЗ("Бригадир";$C$3:$F$4;0)).

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

СТОЛБЕЦ([ссылка]) – возвращает номер столбца по заданной ссылке на клетку.

Пример: СТОЛБЕЦ(A3) = 1.

СТРОКА([ссылка]) – возвращает номер строки по заданной ссылке на клетку. Пример: СТРОКА(A3)=3.

Функции СТОЛБЕЦ() и СТРОКА() без аргументов возвращают номера текущих столбца и строки.

Пример. В списке сотрудников (рис.4.8.8) найти человека с наибольшим разрядом. Решением будет функция =ИНДЕКС(A2:A4;ПОИСКПОЗ(МАКС(B2:B4);B2:B4)), которая выработает ответ – Иван. Функция ПОИСКПОЗ() ищет номер строки в столбце разрядов, в которой находится максимальный разряд рабочего.

А

В

A

B

C

D

E

F

G

1

ФИО

Разряд

1

Работник

Март

Апрель

Май

Июнь

Июль

Лучший месяц

2

Ольга

2

2

Петр

50

80

70

20

Апрель

3

Иван

4

3

Иван

110

30

150

Июнь

4

Олег

3

4

Олег

90

200

Май

Рис. 4.

8-8

5

Лучший в месяце

Иван

Петр

Олег

Иван

#Н/Д

Рис. 4.8-9

Пример. Положим, у нас имеется таблица (рис. 4.8-9), где зафиксированы выработки (в тыс. руб.) работников организации. Наша задача – определить лучшего работника в каждом из месяцев и лучший месяц для каждого работника. Рабочие формулы приведены ниже

B5=ИНДЕКС($A$2:$A$4;ПОИСКПОЗ(МАКС(B2:B4);B2:B4;0)),

G1=ИНДЕКС($B$1:$F$1;ПОИСКПОЗ(МАКС(B2:F2);B2:F2;0)).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]