
- •Попов а.А.
- •Москва – 2004
- •Тираж: 200. Изд. № Заказ № введение
- •1. Интерфейс системы
- •1.1. Элементы интерфейса ос Windows
- •Справка
- •1.2. Интерфейс среды Excel
- •Просмотр списка имен Ввод Поле ввода
- •1.3. Средства управления Excel
- •Прочие клавиши
- •1.4. Организация данных в Excel
- •2. Элементарные операции с данными
- •2.1. Манипулирование данными
- •2.1.6. Вставка элементов таблицы
- •Буксировать мышью влево
- •2.1.8. Операции с рабочими листами
- •2.2. Виды адресации
- •2.4. Создание формул
- •2.5. Задачи для самостоятельного решения Контрольные вопросы
- •Упражнения
- •2. Перемещение и копирование данных.
- •2 ( ; Перейти в е5; ). .1. Переместить содержимое блока в2:в3 в е5:е6.
- •2 ( ; Перейти в e5; ). .2. Скопировать содержимое блока в2:в3 в е5:е6.
- •3.1. Простое автозаполнение (копирование без изменения данных).
- •3.2. Автозаполнение из списков.
- •3.3. Формирование арифметических прогрессий.
- •5. Манипулирование строками/столбцами.
- •5.2. Управление шириной строк/столбцов.
- •7 . Построение формул.
- •3. Оформление данных
- •3 .1. Выравнивание данных
- •3.2. Управление шрифтами
- •3.3. Форматирование чисел
- •Положительное; Отрицательное; Нулевое; Текстовое
- •[Черный]; [Зеленый]; [Голубой]; [Красный]
- •3.4. Мастер условного форматирования
- •3.5. Контроль ввода
- •3.6. Задачи для самостоятельного решения Контрольные вопросы
- •Упражнения
- •4. Функции рабочего листа
- •4.1. Функция суммирования
- •4.2. Арифметические функции
- •4.3. Функции округления
- •4.4. Степенные функции
- •4.5. Тригонометрические функции
- •4.6. Текстовые функции
- •4.7. Логические функции
- •4.8. Функции выбора и поиска
- •Гпр(что искать; где искать; откуда взять; как искать).
- •Условие 1
- •4.9. Сводные функции
- •4.10. Функции обработки дат
- •4.11. Финансовые функции
- •4.12. Информационные функции
- •4.13. Ошибочные значения
- •4.14. Функции анализа ошибок
- •4.15. Работа с массивами
- •4.16. Матричные функции
- •То можно обеспечить правильное сложение данных и при вставках новых строк в любом месте диапазона суммирования. Или конкретно для нашего случая
- •4.17. Примеры “из жизни”
- •4.18. Задачи для самостоятельного решения
- •5. Примеры практических задач
- •"Остаток:"???"дн"; [красный]"доплата"???"дн"; [синий]"съезд"
- •6. Задачи для самостоятельного решения
- •7. Тесты к дисциплине
- •Оглавление
- •Курс компьютерной подготовки
4.15. Работа с массивами
Выше уже упоминался термин Массив и обсуждались некоторые связанные с ними вопросы. Сейчас мы рассмотрим один важный аспект применения функций, работающих с массивами, а именно, подведение сложных итогов. Обычно в таблицах требуется подсчитать сумму или количество элементов с некоторыми общими признаками. Использование функций СУММЕСЛИ() и СЧЁТЕСЛИ() ограничено возможностью анализа в них только одного единственного условия, которое можно внести в качестве аргумента. В виду этого, если нужно сделать сложную выборку, они нам, конечно, не помогут.
Функции, работающие с массивами, могут быть достаточно гибкими. Рассмотрим пока очень простой пример перехода к таким функциям, используя таблицу на рис. 4.15-1.
Положим, нам нужно найти число всех работающих женщин и их суммарную зарплату. Сначала применим уже известный нам подход без участия функций, использующих массивы
|
A |
B |
C |
D |
E |
F |
G |
1 |
ФИО |
Разряд |
Отдел |
Пол |
Зарплата |
|
Мин. зарп. |
2 |
Ольга |
3 |
Склад |
ж |
1500 |
|
100 |
3 |
Иван |
2 |
Дирекция |
м |
600 |
|
|
4 |
Лена |
3 |
Склад |
ж |
1800 |
|
|
5 |
Олег |
2 |
Канцелярия |
м |
2000 |
|
|
6 |
Света |
4 |
Дирекция |
ж |
8000 |
|
Рис. 4.15-1 |
=СУММЕСЛИ(D2:D6;"ж";E2:E6).
Для этих задач они работают, однако таким образом мы не можем построить более сложный запрос, найти, например, зарплату всех работников, получающих от … и до … и т.п. Если прибегнуть к массивам, можно применять функции СЧЁТ(), МАКС(), СУММ() и другие “итоговые” функции, включив в них необходимые условия отбора. Так, подсчет женщин может быть выполнен следующим образом
{=СЧЁТ(ЕСЛИ(D2:D6="ж";1))} и {=СУММ(ЕСЛИ(D2:D6="ж";1))}.
Здесь все клетки, содержащие в анализируемом диапазоне D2:D5 букву “ж”, будут участвовать в подсчете и в суммировании как единицы.
Общая зарплата всех женщин рассчитывается так
{=СУММ(ЕСЛИ(D2:D6="ж";E2:E6))}.
Напоминаем, что ввод функций, работающих с массивами, должен завершаться нажатием клавиш Shift+Ctrl+ Enter, после чего выражение автоматически обрамляется фигурными скобками.
Таким образом, если нужно вычислить количество некоторых элементов, в качестве аргумента функции ЕСЛИ() удобно использовать 1, если сумму – сами эти элементы, содержащие нужные данные. Хотя в функциях, работающих с массивами, нельзя применять логические функции И(), ИЛИ(), НЕ(), зато можно использовать вложенные функции ЕСЛИ().
Разобранные выше примеры использовались нами только как иллюстрация перехода к применению массивов и никаких новых возможностей для этих конкретных задач не внесли. Теперь мы рассмотрим несколько примеров, для решения которых действительно необходимы функции обработки массивов.
Примеры.
1. Вычислить число женщин, зарабатывающих более 1000 руб.,
{=СУММ(ЕСЛИ(E2:E6>1000; ЕСЛИ(D2:D6="ж";1)))}
или {=СЧЁТ(ЕСЛИ(E2:E6>1000; ЕСЛИ(D2:D6="ж";1)))},
и их суммарный заработок
{=СУММ(ЕСЛИ(E2:E6>1000; ЕСЛИ(D2:D6="ж";E2:E6)))}.
В этих выражениях в косвенной форме реализована функция И. Формулы можно упростить, используя вместо двух только одну функцию ЕСЛИ, где в качестве аргумента взято произведение результатов анализа условий.
{=СУММ(ЕСЛИ((E2:E6>1000)*(D2:D6="ж");1))}
{=СЧЁТ(ЕСЛИ((E2:E6>1000)*(D2:D6="ж");1))}
{=СУММ(ЕСЛИ((E2:E6>1000)*(D2:D6="ж");E2:E6))}.
Поскольку логическое значение ИСТИНА интерпретируется Excel как единица, то для ячеек в диапазоне Е2:Е6, удовлетворяющих условию >1000, будет получена 1. Аналогично для диапазона D2:D6=”ж”. Таким образом, если оба условия истинны, аргументом функции ЕСЛИ будет произведение 1*1=1. Это значение результата будет расценено как истинное, и суммирование (СУММ) или подсчёт (СЧЁТ) будут выполнены. Таким образом, операция умножения здесь полностью аналогична логической функции И.
2. Вычислить число женщин, имеющих третий разряд,
{=СУММ(ЕСЛИ((B2:B6=3)*(D2:D6="ж");1))}.
3. Вычислить число работников, получающих от 1000 до 2000 руб., и их суммарный заработок
{=СУММ(ЕСЛИ((E2:E6>1000)*(E2:E6<=2000);1))}
{=СУММ(ЕСЛИ((E2:E6>1000)*(E2:E6<=2000);E2:E6))}.
4. Найти число женщин, работающих на складе, и их заработок
{=СУММ(ЕСЛИ((C2:C6="Склад")*(D2:D6="ж");1))}
{=СУММ(ЕСЛИ((C2:C6="Склад")*(D2:D6="ж");E2:E6))}.
5. Определить число людей, работающих на складе и в дирекции,
{=СУММ(ЕСЛИ(C2:C6="Склад";1))+СУММ(ЕСЛИ(C2:C6="Дирекция";1))}.
Здесь отдельно подсчитывается, а затем суммируется, число работников склада и дирекции. Можно упростить выражение, включив оба условия в одно ЕСЛИ, соединив их знаком сложения, который в данном случае эквивалентен логической функции ИЛИ.
{=СУММ(ЕСЛИ((C2:C6="Склад")+(C2:C6="Дирекция");1))}.
Впрочем, эту задачу можно решить и не прибегая к массивам
=СЧЁТЕСЛИ(C2:C6;"Склад")+СЧЁТЕСЛИ(C2:C6;"Дирекция").
6. Определить число женщин, работающих на складе и в дирекции
{=СУММ(ЕСЛИ((D2:D6="ж")*((C2:C6="Склад")+(C2:C6="Дирекция"));1))}.
Здесь фактически реализовано выражение вида
{=СУММ(ЕСЛИ(пол="ж" И (отдел="Склад" ИЛИ отдел="Дирекция");1))}.
7. Найти число работников, получающих зарплату в размере менее пяти минимальных зарплат (клетка G2),
{=СУММ(ЕСЛИ(E2:E6<5*G2;1)).
8. Определить число работников, получающих зарплату меньше средней по предприятию,
{=СУММ(ЕСЛИ(E2:E6<СРЗНАЧ(E2:E6);1))}.
9. Найти число наиболее высокооплачиваемых (входящих в верхние 10% по размеру зарплаты, начиная от 0 руб.) сотрудников
{=СУММ(ЕСЛИ(E2:E6>МАКС(E2:E6)*(1-10%);1))}.
10. Найти максимальную зарплату, получаемую женщинами, работающими в дирекции
{=МАКС(ЕСЛИ((C2:C6="Дирекция")*(D2:D6="ж");E2:E6))}.
11. Найти наибольший разряд, среди женщин, работающих в дирекции
{=МАКС(ЕСЛИ((C2:C6="Дирекция")*(D2:D6="ж");B2:B6))}.
Решите следующие задачи самостоятельно.
12. Определить суммарную зарплату всех сотрудников, кроме лиц, работающих в дирекции и канцелярии. Найти число таких работников. Вычислить их среднюю зарплату. Найти максимальную зарплату сотрудников, работающих в указанных подразделениях.
Рассмотрим пример “из жизни”. Пусть для последующего расчета зарплаты на производстве заполняется табельная ведомость (рис. 4.15-2), куда в столбцы с В по AF вносится число отработанных сотрудниками часов в каждом из дней месяца (всего 31 день).
Наша задача – подсчитать число всех отработанных дней и часов; число дней и часов, отработанных в выходные дни; число сверхурочных часов отработанных всего и в выходные дни. Имея эти данные, затем легко вычислить зарплату (здесь не рассматриваем). Расчет всех дней и часов не вызывает проблем. Для первого рабочего это
AG2=СЧЁТ(B2:AF2), AH2=СУММ(B2:AF2).
Для подсчета числа рабочих дней, пришедшихся на субботу и воскресенье, нам понадобится более сложное выражение, использующее массив
AI2 {=СЧЁТ(ЕСЛИ((ДЕНЬНЕД(B$1:AF$1;2)>5)*(B2:AF2>0);1))}.
|
A |
B |
C |
D |
E |
F |
G |
H |
I |
|
AG |
AH |
AI |
AJ |
AK |
AL |
1 |
Дата |
01.авг.Вс |
02.авг.Пн |
03.авг.Вт |
04.авг.Ср |
05.авг.Чт |
06.авг.Пт |
07.авг.Сб |
08.авг.Вс |
. . . . |
Всего дней |
Всего часов |
Дней в выходные |
Часов в выходные |
Всего сверхурочных |
Сверхурочных в выходные |
2 |
Петр |
10 |
|
14 |
|
|
|
12 |
|
|
3 |
36ч |
2 |
22ч |
12ч |
6ч |
3 |
Иван |
|
5 |
|
5 |
|
7 |
8 |
4 |
|
5 |
29ч |
2 |
12ч |
0ч |
0ч |
4 |
Олег |
|
8 |
12 |
|
10 |
|
|
|
|
3 |
30ч |
0 |
0ч |
6ч |
0ч |
Рис. 4.15-2 |
AJ2 {=СУММ(ЕСЛИ(ДЕНЬНЕД(B$1:AF$1;2)>5;
B2:AF2))}.
Полное число сверхурочных (рабочих часов свыше восьмого) подсчитывается только для дней, где количество часов больше 8, как сумма разности между длиной рабочего дня и числом восемь
AK2 {=СУММ(ЕСЛИ(B2:AF2>8;B2:AF2-8))}.
Аналогично рассчитываются сверхурочные для выходных
AL2 {=СУММ(ЕСЛИ((ДЕНЬНЕД(B$1:AF$1;2)>5)*(B2:AF2>8);B2:AF2-8))}.
Видим, что в некоторых случаях формулы, использующие массивы, предоставляют возможности, недоступные для обычных формул. Преимущественная область их применения – формирование обобщающих сводок, которые могут быть довольно сложными.