11 класс, углублённый уровень. Практикум: три связанные таблицы, вопрос про сумму по нескольким условиям. Решаем в электронных таблицах.
1630, а не
1 630 кг. Сверка знак в знак, как на КЕГЭ.| шаг | что делаем |
|---|---|
| 1 | Читаем вопрос и выписываем условия: что суммируем, какой тип операции, какие даты, какое место, какой товар. |
| 2 | На листах-справочниках находим коды: артикулы нужных товаров («Товар») и ID нужных магазинов («Магазин»). Улица видна только в столбце «Адрес» — поля «Улица» в базе нет. |
| 3 | В таблице движения делаем вспомогательный столбец со значением строки: масса, выручка или просто количество. |
| 4 | Ставим автофильтр по каждому условию, выделяем вспомогательный столбец — и читаем Сумму внизу, в строке состояния. Формулы для сложения не нужны. |
Подробно — в подсказке внизу страницы.
Связать три таблицы значит подтянуть к каждой строке движения то, чего в
ней нет: характеристику товара и место магазина. Делает это
ВПР (в англоязычной версии VLOOKUP). Пусть в
строке 2 таблицы движения артикул стоит в столбце D, а
количество упаковок — в E:
= E2 * ВПР(D2; Товар.$A:$F; 5; 0) масса строки в граммах = E2 * ВПР(D2; Товар.$A:$F; 6; 0) выручка строки в рублях = ВПР(C2; Магазин.$A:$C; 2; 0) район магазина = ВПР(C2; Магазин.$A:$C; 3; 0) адрес магазина
Третий аргумент ВПР — номер столбца в справочнике, считая
от первого столбца диапазона. Четвёртый — 0: точное
совпадение, иначе формула тихо возьмёт соседнюю строку.
В Excel лист отделяется восклицательным знаком:
Товар!$A:$F. В LibreOffice — точкой: Товар.$A:$F.
Всё остальное одинаково.
Формулы для сложения не нужны. Выделить шапку таблицы движения, включить автофильтр (Данные → Автофильтр) и оставить только нужные строки — по одному условию на столбец:
| условие | фильтр |
|---|---|
| тип операции | в столбце «Тип операции» отметить только
Поступление (или только Продажа) |
| период | в столбце «Дата» — Стандартный фильтр:
>= первая дата И <= последняя
(в Excel: Фильтры по дате → Между) |
| место | по столбцу района или адреса, подтянутому
ВПР: район — отметить нужный, улица — условие
«содержит» с названием улицы |
| товар | по столбцу наименования, подтянутому ВПР:
«начинается с» слова вида — или отметить нужные артикулы |
Когда остались только нужные строки, выделить вспомогательный столбец (щелчок по букве столбца) и посмотреть вниз, в строку состояния: там стоит «Сумма: …», и считает она только видимые строки. Если внизу показано «Среднее» или «Количество» — щёлкнуть по строке состояния правой кнопкой и выбрать «Сумма».
Заголовок столбца в сумму не попадает — это текст. Скрытые фильтром строки не попадают тоже, в этом и смысл. Ставя следующий фильтр, не сбрасывай предыдущие: условия действуют все вместе.
Поступление,
«продано» — только Продажа. А «на сколько увеличилось» —
разность: поступило минус продано, и складывать их нельзя.Пользоваться им на уроке не обязательно — это запасной ход и мостик к
заданиям 9, 26 и 27, где данных больше и таблицы уже не тянут.
Сначала сохранить нужные листы: Файл → Сохранить как → Текст CSV,
разделитель ;, кодировка UTF-8 — по файлу на лист.
import csv
def read(name):
return list(csv.DictReader(open(name, encoding='utf-8'), delimiter=';'))
tovar = {r['Артикул']: r for r in read('Товар.csv')}
magaz = {r['ID магазина']: r for r in read('Магазин.csv')}
def dat(s): # '05.09.2025' -> (2025, 9, 5)
d, m, y = s.split('.')
return (int(y), int(m), int(d))
итог = 0
for r in read('Движение.csv'):
t = tovar[r['Артикул']]
m = magaz[r['ID магазина']]
if (r['Тип операции'] == 'Поступление'
and t['Наименование товара'].startswith('Зефир')
and 'Прибрежная' in m['Адрес']
and (2025, 9, 5) <= dat(r['Дата']) <= (2025, 9, 19)):
итог += int(r['Количество упаковок, шт']) * int(t['Количество в упаковке'])
print(итог / 1000)
Даты сравниваются кортежами (год, месяц, день):
строки '05.09.2025' сравнивать нельзя — по ним сентябрь
окажется раньше мая.
Задачи авторские, составлены в форме задания 3 ЕГЭ по информатике. Форма задания и способ решения — как на экзамене, а условия написаны своими словами. База данных, период и вопрос каждый раз новые.
Материалы подготовлены с использованием технологий искусственного интеллекта.