Три вопроса, на которые ABC по одному показателю не отвечает
Обычный ABC-анализ берёт одну колонку чисел — скажем, выручку за год — и делит список на три класса: A, B и C. Это работает, и с этого стоит начинать. Как именно считаются классы, откуда взялось правило 80/20 и почему его не надо принимать за закон — разобрано отдельно, в статье «Что такое ABC-анализ — простыми словами». Здесь я это повторять не буду.
Но у одномерного отчёта есть предел. Вот три вопроса, на которые он не отвечает в принципе:
- Где заморожены деньги? Позиция даёт большую выручку — но как: постоянными продажами или несколькими крупными отгрузками в год?
- Что на самом деле держит поток покупателей? В хвосте по выручке всегда есть позиции, которые берут почти в каждом заказе. По выручке они выглядят кандидатами на вывод.
- Где ядро, а где просто крупные цифры? Позиция может быть в классе A по деньгам и при этом продаваться штучно.
Все три вопроса — про одно и то же: одной колонки мало, потому что вклад в деньги и вклад в объём — разные вещи. Комплексный ABC-анализ считает классы сразу по двум показателям и присваивает каждой позиции код из двух букв. Дальше — как этот код читается и что делать с каждой из девяти ячеек.
Как собирается код из двух букв
Механика простая: обычный ABC считается дважды, по каждому столбцу отдельно, а потом две буквы соединяются в код. Никакой новой математики — те же накопленные доли и те же границы 80 / 15 / 5.
Отсюда главное, о чём почти всегда забывают написать:
Первая буква — это класс по первому из двух столбцов, вторая — по второму. Первым при этом считается не тот, на который вы щёлкнули раньше, а тот, который в вашей выгрузке стоит левее: мастер упорядочивает выбор по файлу. Поменяйте столбцы местами в файле — и AC превратится в CA, то есть отчёт будет говорить прямо противоположное.
Проверить порядок можно на следующем шаге, не дожидаясь отчёта: границы категорий настраиваются по каждому столбцу отдельно, и карточки идут в том же порядке, в каком столбцы уйдут в расчёт.
В нашем примере первый столбец — «Выручка за год», второй — «Продано, шт». Значит AC читается как «класс A по выручке, класс C по количеству», то есть много денег при малом числе проданных штук.
По каждой оси по отдельности картина получилась почти учебниковая:
- класс A — 40 позиций (20% ассортимента) — 80,3% результата;
- класс B — 50 позиций (25%) — 14,8%;
- класс C — 110 позиций (55%) — 4,9%.
И так по обеим осям — совпадение здесь не случайно, а специально подобрано для примера. Интересное начинается, когда эти два деления накладываются друг на друга.

Девять ячеек распределились так:
- AA — 26 позиций, AB — 8, AC — 6;
- BA — 8, BB — 32, BC — 10;
- CA — 6, CB — 10, CC — 94.
Обратите внимание на пропорцию: по диагонали — 152 позиции из 200, то есть у трёх четвертей ассортимента обе буквы совпали. Расхождения — это оставшиеся 48 строк, а самые резкие (AC и CA) — вообще 12. Интересного в матрице мало, но оно дорогое: ради этих двенадцати строк второй столбец и добавляли. Если бы буквы всегда совпадали, комплексный анализ был бы не нужен.
Цвет ячеек — от зелёного к красному, с подписями «Лучший» и «Худший». Читать его стоит как «больше вклада — меньше вклада», а не как оценку товара: метод меряет вклад в выбранные показатели и ничего не знает ни про маржу, ни про то, зачем позиция стоит в ассортименте. К красному углу матрицы мы ещё вернёмся.
Ещё одна вещь, которую легко прочитать неправильно. В ячейке матрицы стоит число позиций и доля ассортимента — не доля выручки. Это те самые две доли, которые постоянно путают: «AA — 13%» означает 13% строк списка, а не 13% денег. Денег в AA, наоборот, почти 70%. Подробный разбор этой ловушки — в парной статье.
И сразу закрою частое заблуждение: вторая буква — не про цену. Код составлен из рангов, а не из значений, и сам по себе про уровень цены не говорит ничего. В нашей выгрузке средняя цена за единицу в AA — от 4 до 8 EUR, и ровно такая же в CC: 4,8–6,7 EUR. Ячейки противоположные, цена одна и та же. А вот расхождение букв про цену говорит всегда: если позиция ушла в AC или CA, значит её цена резко выбивается из середины — вверх или вниз. Ниже это видно на конкретных строках.
Где заморожены деньги: ячейка AC
Шесть позиций. Класс A по выручке, класс C по количеству: 3,6% годовой выручки при 0,6% всех проданных штук.
Вот они целиком, из настоящего отчёта:
- масло растительное рапсовое, 10 л — 6 806 EUR за 190 штук;
- мука цельнозерновая, 25 кг — 6 416 EUR за 195 штук;
- чай листовой зелёный, 1 кг — 6 082 EUR за 181 штуку;
- круассаны классические, 48 шт — 5 707 EUR за 209 штук;
- чай листовой ромашка, 1 кг — 5 449 EUR за 193 штуки;
- круассаны с шоколадом, 48 шт — 5 095 EUR за 188 штук.
Цена за единицу здесь — от 27 до 36 EUR при медиане по всей выгрузке 5,6 EUR. Это и есть «дорогое и редкое»: выручка набирается не потоком, а несколькими десятками отгрузок.
Что из этого следует практически:
- страховой запас считается в штуках, а не в деньгах. Пара упаковок на складе — это уже заметная сумма, но по частоте продаж такой запас может закрывать месяцы. Ровно здесь чаще всего и лежат замороженные оборотные средства;
- проверьте, сколько покупателей за этой выручкой. Если за 190 отгрузками стоят три клиента, это не позиция класса A, а зависимость от трёх клиентов, и рисковать надо ей, а не ассортиментом;
- дефицит здесь стоит дорого, но заметен не сразу. Позиция может не продаваться две недели просто потому, что так устроен спрос, — и не продаваться, потому что её нет, выглядит точно так же.
И чего делать не надо. Старые разборы комплексного ABC обычно советуют для таких позиций «поднять цену или увеличить продажи». Цена здесь уже в пять-шесть раз выше медианной по ассортименту — поднимать её дальше некуда, а «продавать больше» упирается не в усилия, а в характер спроса: 25 кг муки просто не покупают каждую неделю.

Что держит поток покупателей: ячейка CA
Тоже шесть позиций — и полная противоположность предыдущим. Класс C по выручке, класс A по количеству: 0,6% выручки при 4,0% всех проданных штук.
Это вода в полуторалитровых бутылках (1 023–1 127 EUR за 1 200–1 350 штук) и салфетки по сто штук в пачке. Цена за единицу — от 0,81 до 1,01 EUR, то есть в пять-шесть раз ниже медианной по выгрузке.
Главное про эту ячейку: в одномерном отчёте по выручке все шесть позиций попали бы в класс C и оказались бы первыми кандидатами на вывод. Комплексный код показывает, что по количеству они в самом верху списка — их берут постоянно, почти в каждом заказе. Убрать их — значит убрать не 0,6% выручки, а повод для части заказов вообще состояться.
Что с ними делают:
- не выводят, не посмотрев на роль в заказе. Полезно проверить, сколько накладных содержат такую позицию и что в них ещё;
- аккуратно работают с ценой. Здесь как раз тот случай, когда цена — рабочий рычаг: маленькая надбавка умножается на большое количество. Но и чувствительность покупателя к ней максимальная, потому что цену такого товара помнят наизусть;
- считают стоимость обслуживания. Дешёвая позиция с большим числом продаж съедает место на складе, время комплектовщика и строки в накладных. Иногда выгоднее не поднять цену, а укрупнить фасовку;
- следят за наличием. Дефицит здесь замечают сразу, и он бьёт по всему заказу.
AC и CA — зеркальные ситуации, и решения по ним обратные. Поэтому их нельзя сваливать в общую корзину «расхождения» и давать один совет на всех: любой такой совет будет верен для одной ячейки и вреден для другой.
Ядро ассортимента: ячейка AA
Двадцать шесть позиций — 13% списка. На них приходится 69,5% выручки и 68,3% проданных штук: крупно и в деньгах, и в объёме. Самая большая строка отчёта — паста фузилли в пятикилограммовой упаковке: 49 730 EUR за 8 163 штуки.
Это то, что нельзя терять, и здесь максимальная цена ошибки — как и в обычном ABC. Разница в том, что вторая буква добавляет уверенности: позиция крупная не за счёт разовых сделок, а за счёт потока. Такие позиции держат в наличии, им дают приоритет в переговорах с поставщиком и по ним чаще всего проверяют остатки.
Обратная сторона — концентрация: две трети бизнеса держатся на тринадцати процентах ассортимента. Это не плохо и не хорошо, но это фактор риска, и он должен быть у вас записан.
И оговорка, без которой отчёт читают неверно: AA — это не «лучшие товары», а самые весомые в двух выбранных показателях. Про маржинальность метод не знает ничего — он видит ровно те колонки, которые вы ему дали. Посчитайте ещё раз, взяв вместо количества маржу, и состав AA заметно изменится.
Промежуточные ячейки: AB, BA, BC, CB
Тридцать шесть позиций, у которых буквы разошлись на один шаг. Их разбирают по тому же принципу, что AC и CA, только выводы мягче.
AB — 8 позиций, 7,2% выручки при 3,4% штук. В нашем примере это крупные фасовки и премиальные позиции: печенье по 3 кг, оливковое масло в пятилитровых канистрах, молотый кофе, маффины — от 10 до 15 EUR за упаковку. Крупные деньги при среднем объёме: смотрят на устойчивость спроса и на то, не тянет ли позиция за собой лишние остатки.
BA — 8 позиций, 3,5% выручки при 7,9% штук. Паста в полукилограммовых пачках, соусы, сливки, джем — 2–3 EUR за единицу. Хорошо расходятся, денег приносят средне. Это ближайший резерв роста: небольшое изменение цены или условий поставки заметно меняет их вклад именно потому, что штук много.
BC — 10 позиций (1,9% / 0,9%) и CB — 10 позиций (0,9% / 1,9%). Те же перекосы, что у AC и CA, но в ослабленном виде. Отдельных решений обычно не требуют — их смотрят, когда занимаются соседней сильной ячейкой.
Общее правило по всем шести «расходящимся» ячейкам: чем сильнее разошлись буквы, тем сильнее позиция выбивается по цене относительно ассортимента, и тем полезнее посмотреть на неё отдельно.
Хвост: ячейка CC и когда его не трогают
Девяносто четыре позиции — почти половина списка при 3,3% выручки и 3,4% проданных штук. Мало и там, и там.
Это и есть тот самый красный угол матрицы с подписью «Худший». Здесь чаще всего и портят отчёт неверной формулировкой. CC — это не «убыточные позиции». ABC-анализ ничего не знает про убытки: он делит список по вкладу в те показатели, которые вы ему дали. «Мало выручки и мало штук» и «приносит потери» — совершенно разные утверждения, и второе из первого не следует.
Проверить это можно прямо по нашей выгрузке: средняя цена за единицу в CC — 4,8–6,7 EUR, ровно та же, что в AA. Хвост — это не «дешёвка» и не брак, это позиции с малым вкладом.
Правильная формулировка мягче и полезнее: CC — место, где стоит искать кандидатов на вывод, а не список приговорённых. Прежде чем выводить позицию, посмотрите на три вещи: её маржинальность, роль в ассортименте (не за ней ли приходят за остальным) и возраст — новинка ещё не успела набрать оборот, а в отчёте выглядит как хвост.
Практический смысл этой ячейки другой: девяносто четыре строки при трёх процентах результата — это в первую очередь стоимость управления. Заказы по ним стоит укрупнить и перевести на автоматическое пополнение, а внимание закупщика перенести туда, где цена ошибки выше.
Как получить такой отчёт
Нужен файл XLSX, в котором есть колонка-идентификатор (артикул или наименование) и две числовые колонки с показателями за один и тот же период. Требования к данным те же, что и для обычного ABC, — они разобраны в парной статье. Файл никуда не загружается: расчёт целиком идёт в браузере.
Порядок такой:
- Открыть файл — перетаскиванием в окно анализа.
- Выбрать два столбца. Порядок значим, и задаёт его файл: первую букву кода даёт тот из выбранных столбцов, который в выгрузке левее. У нас это выручка, за ней количество.
- Проверить границы категорий — по умолчанию 80 / 15 / 5 по каждой оси.
- Прочитать отчёт: матрица, таблица и рекомендации.

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

Отчёт сохраняется в XLSX, так что дальше с ним можно работать привычными средствами — фильтрами, сводными таблицами, отправить закупщику.
Рядом с отчётом продукт показывает разбор: что в этой структуре стоит сделать. Для комплексного анализа среди подсказок есть две, посвящённые ровно тем ячейкам, о которых шла речь выше: «Позиции с кодом AC» и «Позиции с кодом CA». Обе описаны через первый и второй выбранный показатель, а не через выручку и штуки, — и это честно: движок видит только те колонки, которые вы ему дали, а про их смысл не знает ничего. По той же причине подсказка про CA прямо оговаривает, что прибыльность этих позиций расчёт не оценивает.
На нашей выгрузке подсказок семь, а панель показывает первые четыре: предупреждение про раздутый хвост, подсказку про CA, портфельное «около 20% позиций дают 80% результата» и класс A. Остальные три — класс B, класс C и подсказка про AC — открываются по строке «Показать ещё 3 рекомендации»; на снимке ниже список раскрыт целиком. Щёлкать можно не по любой подсказке, а по тем, у которых стоит значок фильтра: нажатие оставляет в таблице ниже только те строки, о которых подсказка говорит. У AC и CA это шесть позиций соответствующей ячейки, у классовых подсказок — весь класс; портфельные говорят про список целиком и не фильтруют ничего.

И важная деталь: сами советы написаны в расчёте на то, что первым идёт денежный показатель, а вторым — объём. Текст подсказки от порядка столбцов не зависит — он говорит «по первому показателю» и «по второму», — а вот совет зависит: «проверьте цены, наборы и стоимость обслуживания» осмысленно для дешёвого товара, который берут часто. Если в выгрузке количество окажется левее выручки, коды в матрице поменяются местами, и совет достанется не той ячейке. Ещё один повод посмотреть на порядок столбцов до расчёта, а не после.
Что легко сделать неправильно
- Не посмотреть, какой столбец оказался первым. Порядок берётся из файла, а не из порядка щелчков; без этого код из двух букв нечитаем, а отчёт через месяц бесполезен.
- Сводить девять ячеек в четыре группы и давать группе один совет. AC и CA попадают при этом в одну корзину, хотя решения по ним обратные, — так теряется единственное, ради чего считали.
- Читать CC как «убыточные». Метод меряет вклад, а не прибыльность.
- Считать вторую букву характеристикой цены. Цена проступает только в расхождениях букв, а у совпавших ячеек она может быть любой.
- Путать две доли. В матрице — доля ассортимента, во фразе «AA даёт 70%» — доля выручки.
- Сравнивать прогоны с разными границами или разным порядком столбцов. Это разные отчёты, а не динамика.
Что дальше
Комплексный ABC отвечает на вопрос «что у нас крупное и в деньгах, и в объёме», но не отвечает на вопрос «насколько это стабильно». Позиция может быть в AA и при этом продаваться рывками — а это уже другой разговор про запасы. За стабильность отвечает XYZ-анализ, который смотрит на разброс продаж по периодам.
Если хочется посмотреть, как двухбуквенный код применяют в управленческих решениях на нечисто товарных данных, есть кейс: директор медицинского центра разбирает базу пациентов комплексным ABC и рассказывает, что решила по каждой группе и что из этого вышло через три месяца.
А начать проще всего с той же выгрузки, что у вас уже есть: если в ней рядом с выручкой лежит количество, второй столбец не будет стоить вам ни одной дополнительной минуты работы — а двенадцать строк в углах матрицы почти наверняка окажутся неожиданными.

