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

Нарушение этого правила выглядит безобидно. Кто-то поправил опечатку прямо в выгрузке, кто-то дописал строку «плюс наличными», кто-то добавил на витрину формулу «чтобы не переключаться». Через два месяца файл считает не то, что в источнике, и никто не может сказать, где именно разошлось. Именно так умирает большинство самодельных дашбордов — не от объёма данных, а от смешивания слоёв.

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

Три слоя, которые нельзя смешивать

Три листа в одном файле, и у каждого свой режим доступа. Разделение выглядит избыточным ровно до первого расхождения цифр, после которого оно объясняет всё за минуту.

СлойЧто лежитКто трогаетЧто запрещено
Сырые данныеВыгрузки из CRM, учётной системы и банка как есть, ни одной формулыНикто вручную — только процедура обновленияСортировать, править опечатки, добавлять столбцы и строки, удалять лишнее
Расчётный листФормулы, таблицы соответствия, промежуточные итоги, справочник периодовОдин человек — владелец файла, по имениВводить числа руками: каждое значение либо ссылка на сырой слой, либо формула
ВитринаШесть блоков для чтения и строка о полноте данныхНикто не правит, все смотрятСчитать что-либо на месте: только ссылки на расчётный лист
Ручная правка в сыром слое — самая дорогая привычка

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

схема процессаdashbord-na-tablitsah-bez-bi--01
Схема трёх слоёв дашборда: сырые данные, расчётный лист и витрина, поток только вверх

Вертикальная схема из трёх горизонтальных полос-слоёв, снизу вверх. Нижняя полоса «Сырые данные» с тремя входящими стрелками слева, подписанными «CRM», «учётная система», «банк», и пометкой «правки запрещены». Средняя полоса «Расчётный лист» с подписью «формулы и таблицы соответствия, владелец — одно имя». Верхняя полоса «Витрина» с шестью маленькими прямоугольниками-блоками и подписью «только ссылки, ничего не считает». Между полосами широкие стрелки вверх; отдельная тонкая стрелка вниз перечёркнута крестом с подписью «обратной правки не бывает». Подписи по-русски, чертёжный стиль.

Данные идут снизу вверх и никогда обратно — это и есть весь секрет конструкции

Сборка за день: пять шагов с проверкой

Порядок важен: витрина рисуется последней, хотя хочется начать именно с неё. После каждого шага есть проверка на несколько минут — если она не проходит, дальше идти бессмысленно.

  1. 1
    Шаг 1. Назвать решение, ради которого всё это

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

  2. 2
    Шаг 2. Три листа и режимы доступа

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

  3. 3
    Шаг 3. Источник и обновление

    Выгрузка из CRM и учётной системы подключается так, чтобы обновляться сама. Здесь начинается зона инженера: настройка регулярной выгрузки — это то, как настроить выгрузку отчёта по расписанию, и делается она вне таблицы. Получилось, если после обновления число строк в сыром слое совпало с числом записей в источнике за тот же период, а не «примерно совпало».

  4. 4
    Шаг 4. Ключи соответствия

    Строки из разных источников связываются по идентификатору, а не по названию: по коду клиента и номеру документа, а не по «ООО Ромашка». Названия различаются пробелами, регистром и кавычками, и связка по ним рассыпается на первой же выгрузке. Получилось, если доля строк, которым не нашлось пары, ниже 2 %, и все несовпадения выписаны поимённо, а не списаны на округление.

  5. 5
    Шаг 5. Расчёты и витрина

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

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

Шесть блоков витрины

Витрина читается с телефона за двадцать секунд. Шесть блоков — рабочий максимум для руководителя небольшой компании; седьмой блок съедает внимание у первых шести.

  1. 1Строка о полноте. Когда обновлялось, за какой период данные, из скольких источников собрано: «на 08:00, источники — 3 из 3». Без неё вчерашние цифры выглядят как сегодняшние.
  2. 2Деньги месяца. Выручка с начала месяца, план и отклонение одним числом. Три значения, не таблица.
  3. 3Воронка за месяц. Заявки, сделки, оплаты — и рядом те же три числа за прошлый месяц. Сравнение важнее абсолютных значений.
  4. 4Топ-5 по марже. Клиенты или позиции, дающие больше всего валовой прибыли. Именно по марже, а не по выручке: сортировка по выручке регулярно выводит наверх убыточных.
  5. 5Просрочка одним числом. Дебиторская задолженность старше 30 дней. Один показатель, по которому чаще всего немедленно принимают решение.
  6. 6Пять сделок, требующих решения на этой неделе. Не показатель, а список с именами и суммами. Это единственный блок, который превращает просмотр дашборда в действие.
разбор экранаdashbord-na-tablitsah-bez-bi--02
Абстрактная витрина из шести блоков со строкой о полноте данных наверху

Нарисованный абстрактный экран витрины в чертёжном стиле, без имитации конкретного продукта. Сверху узкая служебная полоса «на 08:00, период — сентябрь, источники 3 из 3», обведённая рамкой с подписью «строка о полноте». Ниже сетка: два крупных блока «Деньги месяца: выручка, план, отклонение» и «Воронка: заявки, сделки, оплаты + прошлый месяц»; под ними два блока поменьше «Топ-5 по марже» в виде пяти полос и «Просрочка старше 30 дней» одним крупным числом. Внизу широкий блок «Пять сделок, требующих решения» в виде пяти строк с именем и суммой. Все подписи по-русски.

Шесть блоков и один список действий — больше на витрине не читают

Что пойдёт не так: шесть сообщений

Формулировки в разных табличных редакторах различаются, но узнаваемы. Пять из шести случаев чинятся за минуты, если знать, что искать.

Что видитеЧто это значитЧто делать
#ССЫЛКА! или #REF!Формула ссылается на удалённую ячейку: выгрузка отдала другой набор столбцовСсылаться на столбцы по заголовку, а не по букве, и фиксировать состав выгрузки при настройке
#Н/Д или #N/AКлюч соответствия не найден: пробел в конце значения, разный регистр, разное написание организацииСвязывать по идентификатору, а не по названию; временно вывести все ненайденные ключи отдельным списком
#ЗНАЧ! или #VALUE!Число пришло текстом: разделитель разрядов пробелом, запятая вместо точки, символ валюты в ячейкеПриводить типы в расчётном слое, а не править выгрузку руками
Циклическая ссылкаРасчётный лист ссылается на витрину, а витрина обратно на расчётПризнак нарушенного разделения слоёв: убрать все вычисления с витрины
Файл заблокирован другим пользователемФайл лежит там, где его одновременно открывают несколько человекВитрину раздавать только на просмотр; редактирование оставить одному владельцу
Две копии файла показывают разные итогиКто-то скопировал файл, чтобы не сломать оригинал, и работает в копииЕдинственный источник истины — один файл по одной ссылке; копии удалять, а не переименовывать

Последняя строка — не техническая ошибка, а организационная, и она самая частая. Файл копируют из осторожности, потом правят копию, потом в копию заглядывает кто-то ещё. Через месяц в компании три версии правды и никто не знает, какая настоящая.

Сколько это стоит и когда окупается

Модельная ситуация: помощник руководителя каждый понедельник собирает цифры к совещанию — выгружает из CRM и учётной системы, сводит, верстает слайд. Замер по секундомеру: 2 часа 15 минут в неделю. Ставки сквозные: полный час рядового сотрудника — 700 ₽, час инженера — 3 000 ₽.

Ручная сборка к совещанию против дашборда на таблицах
Сейчас: 2 часа 15 минут × 52 недели117 часов в год
По полной стоимости часа сотрудника 700 ₽81 900 ₽ в год
Сборка дашборда: 7 часов сотрудника4 900 ₽ разово
Настройка регулярной выгрузки: 2 часа инженера × 3 000 ₽6 000 ₽ разово
Поддержка: 1,5 часа в месяц1 050 ₽ в месяц, 12 600 ₽ в год
Итого10 900 ₽ разово, экономия 69 300 ₽ в год — окупается примерно за 2 месяца

Считать надо по своим числам, и все три измеримы за неделю. Время сборки — засеките секундомером три раза подряд, а не спрашивайте «сколько примерно»: в подобных замерах названное время расходится с фактическим в полтора-два раза в обе стороны. Ставка часа — из фонда оплаты с учётом взносов и рабочего места, а не из оклада. Если сборка занимает 20 минут в неделю, экономии почти не будет, и это нормальный результат расчёта.

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

Три признака, что таблица кончилась, и когда дашборд не нужен вовсе

Переход на BI перестаёт быть блажью, когда совпадают минимум два признака из трёх. Все три измеряются, а не ощущаются.

  • Файл открывается дольше 20 секунд или пересчитывается дольше 10. Обычно это значит, что в сыром слое больше 100 000 строк или формулы протянуты на весь столбец до миллионной строки. Первое лечится только переносом хранения, второе — переписыванием расчётов, и второе стоит дешевле.
  • Формулы правят руками чаще раза в месяц. Каждая ручная правка — это расчёт, который знает один человек. Когда таких правок больше десятка, файл превращается в личное знание, и его отпуск становится риском для отчётности.
  • Две копии файла дают разные итоги. Признак того, что единственного источника истины уже нет. Дальше расхождение растёт само, и обнаруживается оно обычно на разговоре с налоговой или с банком.

Куда переезжать — отдельный вопрос со своими ограничениями. Из живых российских систем чаще всего рассматривают Visiology, Yandex DataLens, Polymatica, Luxms BI и Apache Superset в самостоятельной установке. Важная оговорка, которая всплывает поздно и дорого: Yandex DataLens формально не включён в реестр отечественного ПО, хотя данные лежат в российском облаке, — для государственного заказчика это блокер. Критерии выбора мы собрали в разборе того, как выбрать российскую BI-систему, а устройство полноценного контура отчётности на CRM и таблицах — в материале про отчётность без BI.

И случай, в котором не нужен ни дашборд, ни BI. Если решение по цифре принимается раз в квартал, четыре просмотра в год не окупают ни семи часов сборки, ни 1 050 ₽ поддержки в месяц: такой отчёт дешевле открыть руками, когда он понадобится. То же самое, если на витрину нечего выносить, потому что первый шаг не пройден — ни для одного блока не названо решение, которое он обслуживает. Дашборд, который просто показывает, как идут дела, перестают открывать примерно через три недели.

Таблица держится не на формулах, а на дисциплине: сырой слой не трогают, витрина не считает, файл один.