Учимся применять оконные функции

Объединяем несколько условий.

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

Для объединения нескольких условий в одно используем логические функции ИЛИ и И. Рассмотрим простые примеры.

Пример 1

Функция ИЛИ возвращает ИСТИНА, если хотя бы одно из перечисленных в ней нескольких условий выполняется.

Вставляем функцию ИЛИ как условие в функцию ЕСЛИ. В нашем случае, если регион покупателя — Восток или Юг, то отгрузка считается экспортом.

Пример 2.

Используем несколько более сложных условий внутри функции ЕСЛИ.

Если регион продажи — Запад или Юг, и количество при этом больше 100, то предоставляется скидка 10%.

Функция И возвращает ИСТИНА, если выполняются все перечисленные в ней условия. Внутрь функции И мы помещаем два условия:

  1. Регион — или Запад или Юг
  2. Количество больше 100.

Первое из них реализуем так же, как это было сделано в первом примере: ИЛИ(C2=»Запад»;C2=»Юг»)

Второе — здесь всё очень просто: E2>100

В строке 2, 3 и 5 выполнены оба условия. Эти покупатели получат скидку.

В строке 4 не выполнено ни одного. А в строке 6,7,8 выполнено только первое, а вот количество слишком мало. Поэтому скидка будет равна нулю.

Пример 3.

Конечно, эти несколько условий могут быть и более сложными. Ведь логические функции можно «вкладывать» друг в друга.

Например, в дополнение к предыдущему условию, скидка предоставляется только на черный шоколад.

Все наше записанное ранее условие становится в свою очередь первым аргументом в новой функции И:

  1. Регион — Запад или Юг и количество больше 100 (рассмотрено в примере 2)
  2. В названии шоколада встречается слово «черный».

В итоге получаем формулу ЕСЛИ с несколькими условиями:

Функция НАЙТИ ищет точное совпадение. Если же регистр символов в тексте для нас не важен, то вместо НАЙТИ можно использовать аналогичную функцию СОВПАД.

В итоге, количество вложенных друг в друга условий в Excel может быть очень большим

Важно только точно соблюдать логическую последовательность их выполнения

Функция СУММЕСЛИ в Excel с несколькими условиями

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

Синтаксис с использованием функции по нескольким критериям

Аргументов у СУММЕСЛИМН может быть сколько угодно, но минимум – это 5.

  1. Диапазон суммирования. Если в СУММЕСЛИ он был в конце, то здесь он стоит на первом месте. Он также означает ячейки, которые необходимо просуммировать.
  2. Диапазон условия 1 – ячейки, которые нужно оценить на основании первого критерия.
  3. Условие 1 – определяет ячейки, которые функция выделит из первого диапазона условия.
  4. Диапазон условия 2 – ячейки, которые следует оценить на основании второго критерия.
  5. Условие 2 – определяет ячейки, которые функция выделит из второго диапазона условия.

И так далее. В зависимости от количества критериев, число аргументов может увеличиваться в арифметической прогрессии с шагом 2. Т.е. 5, 7, 9…

Формула ЕСЛИ в Excel – примеры нескольких условий

Довольно часто количество возможных условий не 2 (проверяемое и альтернативное), а 3, 4 и более. В этом случае также можно использовать функцию ЕСЛИ, но теперь ее придется вкладывать друг в друга, указывая все условия по очереди. Рассмотрим следующий пример.

Нескольким менеджерам по продажам нужно начислить премию в зависимости от выполнения плана продаж. Система мотивации следующая. Если план выполнен менее, чем на 90%, то премия не полагается, если от 90% до 95% — премия 10%, от 95% до 100% — премия 20% и если план перевыполнен, то 30%. Как видно здесь 4 варианта. Чтобы их указать в одной формуле потребуется следующая логическая структура. Если выполняется первое условие, то наступает первый вариант, в противном случае, если выполняется второе условие, то наступает второй вариант, в противном случае если… и т.д. Количество условий может быть довольно большим. В конце формулы указывается последний альтернативный вариант, для которого не выполняется ни одно из перечисленных ранее условий (как третье поле в обычной формуле ЕСЛИ). В итоге формула имеет следующий вид.

Комбинация функций ЕСЛИ работает так, что при выполнении какого-либо указанно условия следующие уже не проверяются

Поэтому важно их указать в правильной последовательности. Если бы мы начали проверку с B2

они входят в интервал B2

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

В конце нужно обязательно закрыть все скобки, иначе эксель выдаст ошибку

Вложенные условия с математическими выражениями.

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

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

Предполагая, что количество записывается в B8, формула будет такая:

И вот результат:

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

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

Кейс. Модели атрибуции

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

У нас есть таблица с id посетителя (им может быть Client ID, номер телефона и тп.), датами и количеством посещений сайта, а также с информацией о достигнутых конверсиях.

Первый клик

В Google Analytics стандартной моделью атрибуции является последний непрямой клик. И в данном случае 100% ценности конверсии присваивается последнему каналу в цепочке взаимодействий.

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

SELECT 
  Date
, Client_ID
, Medium
, FIRST_VALUE(Medium) OVER(PARTITION BY Client_ID ORDER BY Date) AS 'First_Click'
, Sessions
, Conversions
FROM Orders

Рядом со столбцом «Medium» появился новый столбец «First_Click», в котором указан канал в первый раз приведший посетителя к нам на сайт и вся ценность зачтена данному каналу.

Произведем агрегацию и получим отчет.

WITH First AS (
SELECT 
  Date 
, Client_ID 
, Medium 
, FIRST_VALUE(Medium) OVER(PARTITION BY Client_ID ORDER BY Date) AS 'First_Click' 
, Sessions 
, Conversions
FROM Orders
)

SELECT
  First_Click
, SUM(Conversions) AS 'Conversions'
FROM First
GROUP BY First_Click

С учетом давности взаимодействий

В этом случае работает правило: чем ближе к конверсии находится точка взаимодействия, тем более ценной она считается. Попробуем рассчитать эту модель при помощи функции DENSE_RANK.

SELECT 
  Date
, Client_ID
, Medium
-- Присваиваем ранг в зависимости от близости к дате конверсии
, DENSE_RANK() OVER(PARTITION BY Client_ID ORDER BY Date) AS 'Ranks'
, Sessions
, Conversions
FROM Orders

Рядом со столбцом «Medium» появился новый столбец «Ranks», в котором указан ранг каждой строки в зависимости от близости к дате конверсии.

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

SELECT 
  Date
, Client_ID
, Medium
-- Делим ранг определенной строки на сумму рангов по пользователю
, ROUND(CAST(DENSE_RANK() OVER(PARTITION BY Client_ID ORDER BY Date) AS FLOAT) / CAST(SUM(ranks) OVER(PARTITION BY Client_ID) AS FLOAT), 2) AS 'Time_Decay' 
, Sessions
, Conversions
FROM (
      SELECT 
      Date
    , Client_ID
    , Medium
    -- Присваиваем ранг в зависимости от близости к дате конверсии
    , DENSE_RANK() OVER(PARTITION BY Client_ID ORDER BY Date) AS 'Ranks'
    , Sessions
    , Conversions
      FROM Orders
     ) rank_table

Рядом со столбцом «Medium» появился новый столбец «Time_Decay» с распределенной ценностью.

И теперь, если сделать агрегацию, можно увидеть как распределилась ценность по каналам.

WITH Ranks AS (
SELECT 
  Date
, Client_ID
, Medium
-- Делим ранг определенной строки на сумму рангов по пользователю
, ROUND(CAST(DENSE_RANK() OVER(PARTITION BY Client_ID ORDER BY Date) AS FLOAT) / CAST(SUM(ranks) OVER(PARTITION BY Client_ID) AS FLOAT), 2) AS 'Time_Decay' 
, Sessions
, Conversions
FROM (
      SELECT 
      Date
    , Client_ID
    , Medium
  -- Присваиваем ранг в зависимости от близости к дате конверсии
    , DENSE_RANK() OVER(PARTITION BY Client_ID ORDER BY Date) AS 'Ranks'
    , Sessions
    , Conversions
      FROM Orders
     ) rank_table
)

SELECT 
  Medium
, SUM(Time_Decay) AS 'Value'
, SUM(Conversions) AS 'Conversions'
FROM Ranks
GROUP BY Medium
ORDER BY Value DESC

Из получившегося отчета видно, что самым весомым каналом является канал «cpc», а канал «cpa», который был бы исключен при применении стандартной модели атрибуции, тоже получил свою долю при распределении ценности.

Полезные ссылки:

  • SELECT — предложение OVER (Transact-SQL)
  • Как работать с оконными функциями в Google BigQuery — подробное руководство
  • Модель атрибуции на основе онлайн/офлайн данных в Google BigQuery

Роман Романчук

Эксперт по аналитике данных, ex-директор по аналитике Сравни.ру

  • Кейс: как построить отдел аналитики в большой компании? — 06.05.2022
  • Учимся применять оконные функции — 29.09.2020
  • Автоматизация отчетности при помощи SQL и Power BI — 05.04.2020

Подсчет ячеек в Excel, используя функции СЧЕТ и СЧЕТЕСЛИ

СЧЕТ()

​ У нас -​​ просуммируем общую стоимость​​ оператор сложения, то​Рассмотрим задачу, когда критерии​с Количеством на​ обозначает любое количество​ в Excel требуется​ указывается ссылка на​ можно использовать подстановочные​ которым ученики еще​У нас такая​

​ мы подсчитываем все​«Критерий»​ на ячейки или​ как раз выступают​​Данный способ самый простой​​ использования функции «СУММЕСЛИМН»,​

​ B2-B8.​ всех проданных фруктов.​ провозиться придется долго.​

​ применяются к значениям​​ складе не менее​​ произвольных символов, а​ подсчитать количество ячеек​ диапазон ячеек с​

​ знаки. «?» -​ не подошли.​ таблица.​ заполненные данными элементы,​​содержит заданное условие.​​ диапазоны

Различие в​ ссылки на ячейки​ и требующий минимального​ смотрите в статье​Обратите внимание​ Для этого воспользуемся​

​В следующем примере функция​ из одного столбца.​ минимального (Условие И​ вопросительный знак –​ на рабочем листе.​​ условиями, функция возвращает​​ любой символ. «*»​

СЧЕТЕСЛИ()

​​​Первый пример.​​ которые не содержат​ Это может быть​ синтаксисе заключается лишь​ или диапазон, в​ количества действий. Он​ «Примеры функции «СУММЕСЛИМН»​.​ следующей формулой:​

​СУММ​Найдем число партий товара​ — условие при​ один произвольный символ.​

​ Это могут быть​​ массив. Для ввода​ — любая последовательность​Функция СЧЁТ подсчитывает количество​Сумма ячеек с условием​ слово​ как точное числовое​ в наименовании самого​

​ котором нужно произвести​​ позволяет подсчитать количество​​ в Excel».​Когда мы поставили​​Нажав​​складывает весь столбец​​ с Количеством на складе​​ котором строка считается​Например, чтобы подсчитать количество​ пустые или заполненные​ формулы нужно выделить​ символов. Чтобы формула​

​ только для числовых​Excel.​«Мясо»​ или текстовое значение,​​ оператора.​​ подсчет значений.​ ячеек, содержащих числовые​Рассмотрим,​

​ курсор в эту​Enter​ А, а это​ не менее минимального и​ удовлетворяющей критерию, когда​

​ ячеек, содержащих текст,​​ ячейки, содержащие только​​ такое количество ячеек,​ искала непосредственно эти​ значений в заданном​Нам нужно посчитать​. Знак​ так и значение,​Выделяем элемент на листе,​Выделяем элемент листа, в​

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

​ знаки, ставим перед​ диапазоне. Данная формула​ сумму всех Ашанов.​«<>»​

​ заданное знаками​​ куда будет выводиться​​ который будет выводиться​ Сделать это можно​​ ячеек в​​ новая строка для​Если одного условия Вам​Следующая формула подсчитывает сумму​​ (Условие И -​​ одновременно соответствуют критериям).​ буквы​​ в некоторых случаях,​​ с критериями. После​ ними знак тильды​ для совей работы​ В ячейке С2​​означает в Экселе​​«больше»​​ результат. Нажимаем уже​​ итоговый результат. Щелкаем​

​ просто взглянув на​Excel по условию​ условий. Если условий​ не достаточно, то​ всех ячеек, содержащихся​ строка таблицы соответствует​ Например, число партий​Н​​ их содержимое должно​​ введения аргументов нажать​​ (~).​​ требует указать только​ пишем такую формулу.​​«не равно»​​(​​ знакомую нам иконку​​ по значку​​ индикатор в строке​​, как посчитать не​ много, то появляется​ Вы всегда можете​ на рабочем листе​

​ критерию, когда ее​

office-guru.ru>

Решения на основе CLR

Одно возможное решение на основе CLR (Common Language Runtime) по сути является одной из форм решения с использованием курсора. Разница в том, что вместо использования курсора T-SQL, который тратит много ресурсов на получение очередной строки и выполнение итерации, применяются итерации .NET SQLDataReader и .NET, которые работают намного быстрее. Одна из особенностей CLR которая делает этот вариант быстрее, заключается в том, что результирующая строка во временной таблице не нужна — результаты пересылаются напрямую вызывающему процессу. Логика решения на основе CLR похожа на логику решения с использованием курсора и T-SQL. Вот код C#, определяющий хранимую процедуру решения:

Чтобы иметь возможность выполнить эту хранимую процедуру в SQL Server, сначала надо на основе этого кода построить сборку по имени AccountBalances и развернуть в базе данных TSQL2012. Если вы не знакомы с развертыванием сборок в SQL Server, можете почитать раздел «Хранимые процедуры и среда CLR» в статье «Хранимые процедуры».

Если вы назвали сборку AccountBalances, а путь к файлу сборки — «C:\Projects\AccountBalances\bin\Debug\AccountBalances.dll», загрузить сборку в базу данных и зарегистрировать хранимую процедуру можно следующим кодом:

После развертывания сборки и регистрации процедуры можно ее выполнить следующим кодом:

Как я уже говорил, SQLDataReader является всего лишь еще одной формой курсора, но в этой версии затраты на чтение строк значительно меньше, чем при использовании традиционного курсора в T-SQL. Также в .NET итерации выполняются намного быстрее, чем в T-SQL. Таким образом, решения на основе CLR тоже масштабируются линейно. Тестирование показало, что производительность этого решения становится выше производительности решений с использованием подзапросов и соединений, когда число строк в секции переваливает через 15.

По завершении надо выполнить следующий код очистки:

СЧЕТЕСЛИ с несколькими условиями.

На самом деле функция Эксель СЧЕТЕСЛИ не предназначена для расчета количества ячеек по нескольким условиям. В большинстве случаев я рекомендую использовать его множественный аналог – функцию СЧЕТЕСЛИМН. Она как раз и предназначена для вычисления количества ячеек, которые соответствуют двум или более условиям (логика И). Однако, некоторые задачи могут быть решены путем объединения двух или более функций СЧЕТЕСЛИ в одно выражение.

Количество чисел в диапазоне

Одним из наиболее распространенных применений функции СЧЕТЕСЛИ с двумя критериями является определение количества чисел в определенном интервале, т.е. меньше X, но больше Y.

Например, вы можете использовать для вычисления ячеек в диапазоне B2: B9, где значение больше 5 и меньше или равно 15:

Количество ячеек с несколькими условиями ИЛИ.

Когда вы хотите найти количество нескольких различных элементов в диапазоне, добавьте 2 или более функций СЧЕТЕСЛИ в выражение. Предположим, у вас есть список покупок, и вы хотите узнать, сколько в нем безалкогольных напитков.

Сделаем это:

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

Как вы понимаете, сюда можно добавить и больше условий.

Считаем числа и значения

Три полезных вещи, помогающих в работе с программой.

Сколько чисел находится в массиве, можно рассчитать с помощью формулы СЧЁТ(значение1;значение2;…)

Она учитывает только те элементы, которые включают в себя цифры.То есть если в некоторых из них будет прописан текст, они будут пропущены, в то время как даты и время берутся во внимание. В данной ситуации не обязательно задавать параметры по порядку: можно написать, к примеру, =СЧЁТ(А1:С3;В4:С7;…).
Другая статистическая функция — СЧЕТЗ — подсчитает вам непустые клетки в диапазоне, то есть те, которые содержат буквы, числа, даты, время и даже логические значения ЛОЖЬ и ИСТИНА

Обратное действие выполняет формула, показывающая численность незаполненных секций — СЧИТАТЬПУСТОТЫ(массив). Она применяется только к непрерывным выделенным областям.

Ставим экселю условия

Когда нужно подсчитать элементы с определённым значением, то есть соответствующие какому-то формату, применяется функция СЧЁТЕСЛИ(массив;критерий). Чтобы вам было понятнее, следует разобраться в терминах.

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

Разбираемся в критериях

Примеры критериев:

  • «>0» — считаются ячейки с числами от нуля и выше;
  • «Товар» — подсчитываются секции, содержащие это слово;
  • 15 — вы получаете сумму элементов с данной цифрой.

Для большей ясности приведу развернутый пример.

Чтобы посчитать ячейки в зоне от А1 до С2, величина которых больше прописанной в А5, в строке формул необходимо написать =СЧЕТЕСЛИ(А1:С2;«>»&А5).

Задачи на логику

Хотите задать экселю логические параметры? Воспользуйтесь групповыми символами * и ?. Первый будет обозначать любое количество произвольных символов, а второй — только один.

К примеру, вам нужно знать, сколько имеет электронная таблица клеток с буквой Т без учета регистра. Задаем комбинацию =СЧЕТЕСЛИ(А1:D6;«Т*»). Другой пример: хотите знать численность ячеек, содержащих только 3 символа (любых) в том же диапазоне. Тогда пишем =СЧЕТЕСЛИ(А1:D6;«???»).

Средние значения и множественные формулы

В качестве условия может быть задана даже формула. Желаете узнать, сколько у вас секций, содержимое которых превышают среднее в определенном диапазоне? Тогда вам следует записать в строке формул следующую комбинацию =СЧЕТЕСЛИ(А1:Е4;«>»&СРЗНАЧ(А1:Е4)).

Если вам нужно сосчитать количество заполненных ячеек по двум и более параметрам, воспользуйтесь функцией СЧЕТЕСЛИМН. К примеру, вы ищите секций с данными больше 10, но меньше 70. Вы пишете =СЧЕТЕСЛИМН(А1:Е4;«>10»;А1:Е4;«<70»).

Помимо этого, у вас есть возможность задать условия И/ИЛИ. Только во втором случае придется использовать сразу несколько правил. Смотрим: вам необходимо найти клетки, в которых слова начинаются с буквы В или Р — пишете =СЧЕТЕСЛИ(А1:Е4;«В*»)+ СЧЕТЕСЛИ(А1:Е4;«Р*»).

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

Оператор Если

Основным оператором условий в языке программирования в 1С, по средством которого осуществляется отработка условий, является оператор Если.

В самом просто случае этот оператор имеет следующий синтаксис:

Если <ЛогическоеУсловие> Тогда
    Операторы
КонецЕсли

В том случае, если логическое условие принимает значение Истина, то выполняются операторы после ключевого слова Тогда. Если же это условие не выполняется, то следуют операторы после ключевого слова КонецЕсли.

Логическое условие  — это или какое-то выражение, которое должно вернуть Истину или Ложь, или переменная типа булева.

То есть, может быть, такой вариант.

Если X >= 5 Тогда
   //операторы 
КонецЕсли

Или, такой вариант.

Условие = Х > 5 и Х < 10;
Если Условие Тогда
    //операторы
КонецЕсли

Заметьте, что операторы после ключевого с лова КонецЕсли выполняются в любом случае. Выполняется условие или нет. Если же нам нужно, чтобы  когда условие выполняется, работали одни операторы, а когда нет – другие, то синтаксис операторе Если усложнится.

Если <ЛогическоеУсловие> Тогда
    Операторы1
иначе
    Операторы2
КонецЕсли

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

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

Если Х > 5 и Х < 10 Тогда
    //Операторы1
иначе
    //Операторы2
КонецЕсли

Но, очень часто возникают случаи, когда нужно отработать несколько условий. Например, может возникнуть ситуация, когда нужно отработать три условия: число больше нуля, число меньше нуля и число равно нулю. Тогда синтаксис еще усложниться.

Если <ЛогическоеУсловие1> Тогда
    Операторы1
ИначеЕсли <ЛогическоеУсловие2> Тогда
    Операторы2
...
ИначеЕсли <ЛогическоеУсловиеN> Тогда
    ОператорыN
иначе
    ОператорыИначе
КонецЕсли

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

Причем, в этой конструкции ключевое условие Иначе не обязательно к использованию.

В этом случае решение предыдущего примера (с числом) будет выглядеть так:

Если N >  Тогда
    //операторы 1
ИначеЕсли N =  Тогда
    //операторы 2
Иначе
    //операторы 3
КонецЕсли

Или мы можем отработать такое условие.

Если N >= 1 Тогда
    //операторы 1
ИначеЕсли N >  и N < 1  Тогда
    //операторы 2
ИначеЕсли N =   Тогда
    //операторы 3
Иначе
    //операторы 4
КонецЕсли

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

И если ни одно условие не отработалось, то выполняются операторы после ключевого слова Иначе (при его наличии).

Использование промежуточных итогов в Excel — примеры формул

Когда вы впервые сталкиваетесь с промежуточными итогами, это может показаться сложным, запутанным и даже не слишком нужным. Но как только вы узнаете все подробности, то поймете, что овладеть ими не так уж и сложно, а пользы может быть много. Следующие примеры дадут вам несколько полезных советов и новых идей.

Пример 1. Промежуточный итог с функцией 9 или 109?

Как вы уже знаете, ПРОМЕЖУТОЧНЫЕ.ИТОГИ использует 2 набора номеров функций: 1-11 и 101-111. Все они игнорируют отфильтрованные строки, но номера 1–11 учитывают скрытые вручную строки, а номера 101–111 исключают их. Чтобы лучше понять разницу, давайте рассмотрим следующий пример.

Чтобы суммировать отфильтрованные строки, вы можете использовать формулу Промежуточный итог с функцией 9 или с 109, как показано на рисунке ниже:

Но если вы скрыли отдельные элементы вручную,

  • используя команду «Скрыть строки» на вкладке «Главная»> «Ячейки»> «Формат» > «Скрыть и отобразить»,
  • или щелкнув строки правой кнопкой мыши и выбрав «Скрыть»,

и теперь хотите суммировать значения только в видимых строках, использовать функцию 109 – это единственный вариант:

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

Пример 2. Промежуточные итоги с условием.

Если вы создаете сводный отчет или информационную панель, где вам нужно отображать различные сводные данные, но у вас ограничено место, чтобы разместить множество вариантов итогов, то можно сделать так:

  • В одной ячейке создайте раскрывающийся список, содержащий названия функций, такие как СУММ, МАКС, МИН и др.
  • В ячейке рядом с раскрывающимся списком введите вложенную формулу ЕСЛИ со встроенными функциями промежуточных итогов, соответствующими именам функций в раскрывающемся списке.

Например, если предположить, что значения для промежуточного итога находятся в ячейках C2: C16, а раскрывающийся список в A17 содержит элементы «Итого», «Среднее», «Максимум» и «Минимум», «динамическая» формула промежуточного итога будет выглядеть следующим образом:

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

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

Обратите внимание также на то, что если бы мы использовали для расчёта суммы продаж функцию СУММ, то в этой таблице мы не смогли бы подсчитать продажи по какому-то определённому покупателю или группе покупателей.  Пришлось бы для каждого из них использовать функцию СУММЕСЛИ. Вы можете достаточно просто посчитать промежуточные итоги с условием, если отфильтровать нужные строки по товарам, по покупателям либо по другим критериям

Результат будет показан только по значениям, оставшимся после фильтрации. Соответственно и расчет будет сделан только по ним

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

К примеру, вот как можно подсчитать сумму продаж черного шоколада, исключив молочный при помощи фильтра:

Как видите, при помощи СУММ это сделать невозможно. А использовать СУММЕСЛИ — это каждый раз корректировать условие в формуле либо делать несколько формул «на все случаи жизни». А здесь мы просто отбираем нужное при помощи фильтра. Согласитесь, это гораздо проще и удобнее, нежели писать и затем корректировать громоздкие формулы.

Рейтинг
( Пока оценок нет )
Editor
Editor/ автор статьи

Давно интересуюсь темой. Мне нравится писать о том, в чём разбираюсь.

Понравилась статья? Поделиться с друзьями:
Работатека
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: