«Программистам Excel не нужен».
Пожалуй, соглашусь с этим утверждением. Зачем им этот заменитель кодирования, которое составляет их смыcл жизни? Зачем писать какие-то формулы и дёргать мышкой, когда можно подавать команды компьютеру на загадочном языке и думать, что управляешь миром (не привлекая внимания санитаров).
Но всё-таки приходится небесным божествам спускаться на грешную землю и пачкать свои руки прикосновением к мерзкому продукту.
Пользователи, те самые ламеры, постоянно просят что-то выгрузить из идеального программного продукта в Excel. И почему-то они вечно недовольны результатом этой операции.
Давайте разберёмся, как делать это так, чтобы не вызывать лишнего раздражения окружающих. Я бы не сказал, что программистов уж слишком сильно любят. Постараемся снизить напряжённость. Начнём с самого сложного.
«ВОДОПАДНОСТЬ» ФОРМЫ ДАННЫХ
Известно, что все базы данных представляют собой наборы табличек особой формы. Я на лекциях употребляю термин «водопады» за непрерывный рост данных вниз в таких массивах. В среде программистов принято такие таблицы называть «плоскими». Называть можно по-разному. Главное — правильно делать.
Для меня загадка, почему при выгрузке данных из любой СУБД возникают таблицы каких-либо других форм. Казалось бы, бери эту «плоскую» (или «водопадную») форму и используй. Даже если потребуется какая доработка, то она будет минимальной, а то и вообще ничего с таблицей не придётся делать — только качай.
GIF●455 Кб
Цифропад, буквопад... Водопад!
Мне отвечают, что в выгрузках в Excel действует парадигма получения «отчётов». То бишь, готовых «печатных» форм, которые не будут обрабатываться, а будут только смотреться пользователем.
Нуда, печатная форма на 7000 строчек. Вы о чём? Всё, что не вмещается на один экран или на лист А4 будет дополнительно обрабатываться пользователем — хотя бы фильтроваться, сортироваться. Возможно, будут производиться какие-то дополнительные вычисления. И если данные представлен не в виде потоков, стремящихся вниз, то любое действие в Excel будет требовать кучу лишних телодвижений. Зачем создавать препятствия там, где они не требуются?
Напомню два основных признака водопада:
1. Excel любит таблицы, неограниченно и непрерывно растущие вниз.
2. Каждая строка должна содержать всю информацию о событии, элементе.
И поэтому любое каскадирование с промежуточными итогами, «визуальное» объединение в группы суть вредительство. Тем более вредительство — создавать таблицы, растущие вправо. Как пример, поищите в Excel горизонтально направленную фильтрацию — найдёте описание нескольких «залепух», которые её имитируют. Ну не любит Excel горизонтально растущих таблиц. На них можно бесконечно любоваться, но обрабатывать — нет уж, увольте.
ОБЪЕДИНЕНИЕ ЯЧЕЕК — ЭТО ЗЛО!
Забудьте этот эффект навсегда. Мы только что пришли к выводу, что плоды вашей работы будут дальше дорабатываться пользователем. Так вот — объединение ячеек ВСЕГДА будет мешать. Любое простое движение потребует драгоценных секунд для обхода этого препятствия. Я уже не говорю про просто идиотскую страсть известной программы с названием из одной цифры и буквы к объединению в сотни и тысячи клеточек ради «красоты» пресловутой «печатной формы».
Найди на этом рисунке объединение и получи в награду потерянное время. Отдельный вопрос — зачем здесь столбец B?
ПРОСТОЙ ЛЕГКОЧИТАЕМЫЙ ЗАГОЛОВОК — ЗАЛОГ АВТОМАТИЗАЦИИ В EXCEL
Любая команда автоматической обработки в Excel требует наличия простого заголовка. Это означает, что он должен:
А вот здесь всё правильно
Только соблюдение этого условия позволить без проблем пользоваться такими командами как сортировка, фильтрация, удаление дубликатов, построение сводных таблиц.
GIF●86 Кб
Сортировка
GIF●71 Кб
Фильтрация
GIF●74 Кб
Удаление дубликатов
«ШАПКУ» ДОЛОЙ
Над таблицей не надо делать никаких шапок. Во-первых, для целей дальнейшей обработки данных шапка не имеет никакого смысла. Во-вторых, она постоянно мешается. Из-за шапки нельзя выделить столбец — всё время в область выделения попадает кусок шапки с номером телефона или фамилией менеджера. Шапка как наклейка на яблоке — есть мешает, как лозунг на станке «Больше деталей к сроку!». Может и вдохновляет, но точно мешает эти самые детали точить.
ИТОГИ — АТАВИЗМ
Вот тут сложно. Вас будут просить сделать внизу «итого». Но не надо. Наличие итогов внизу также постоянно мешает в работе. Ну какой толк знать итог по 15 тысячам строк?! Внутри этих тысяч позиций есть гораздо больше смыслов, чем сумма только по одному критерию. А вот наличие этой суммы «где-то внизу» будет постоянно мешать вытаскивать эти смыслы. Особенность работы в Excel в том, что в нём надо постоянно выделять столбцы. И если внизу есть «Итого», то об этом приходится помнить и вместо того, чтобы выделить столбец мгновенно, приходится тащщщщщиииииииттььь мышь вниззззз, чтобы случайно не захватить лишнее. Так зачем это лишнее внизу делать?
Одна моя знакомая, финдир завода, говорит: «Я люблю итоги делать наверху. Незачем мотать 15 тысяч строчек вниз, чтобы увидеть результат. Но девчонки, которые мне помогают, любят итоги внизу, и я им разрешаю их вставлять». На моё возражение, что, дескать, итоги внизу задваивают сумму наверху таблицы, она возражает: «Ну так я делю на 2». Занавес.
ЧИСТОТА ДАННЫХ — ЗАЛОГ ПРАВИЛЬНОГО АНАЛИЗА
Представьте себе, что у диспетчера, регистрирующего событие, есть «свобода» писать дату, например, так: «31,05,2022». Ну о каком мгновенном анализе может идти речь в таком случае? Вот и приходится пользователю выгруженных данных тренировать свои навыки в очистке путём использования автоматической замены. Настоящий программист подобные огрехи ловит на входе и ставит ограничения, не позволяющие такому необразованному оператору написать, например число 500 как 5ОО. Ну и, конечно, читатель этой статьи, если он программист, принадлежит к когорте людей, которые не переносят подобную цифровую грязь и делают так, чтобы она не проникала в принципе в информационную систему предприятия.
ЦИФРОВОЙ ТЕКСТ — ЭТО ПЛОХО
Я не знаю, как это получается, но сплошь и рядом при выгрузке данных из СУБД дата выходит не в своём естественном, числовом смысле, а как текст. Как набор цифр и точек. И это сильно мешает использованию даты в Excel.
Это можно легко распознать и исправить. Но зачем?! Если можно сразу сделать так, чтобы дата выходила в Excel уже датой. Это и есть задача программиста — сразу сделать хорошо, а не так, чтобы потом десятки человек мучались и страдали.
И ещё одна загадка — почему в числа большие 1000 при выгрузке выходят с разделителем между тысячами и сотнями неизвестного происхождения. И ведь это даже не пробел. Выглядит это как тысяча, но это нисколько не тысяча! Это единица, непонятная хрень, похожая на пробел и три нулика. Пытаешься её просуммировать, но она не суммируется, поскольку это не число, а текст. И берёт несчастный бух, выделяет эту неведомую миру прозрачную хрень, затем копирует и вставляет в диалог замены.
Мудрые японцы подобную работу называют очень по-русски — muda. В переводе означает — «действия, не приносящие пользы». А мне кажется переводить-то и не надо. Вот я и предлагаю программистам перестать быть источниками этой самой muda.
Muda — хорошее японское слово. Бодрит и мотивирует
Подытожим: на выходе из любой учётной СУБД должен получаться файлик Excel, в котором находится непрерывно растущий вниз поток данных о событиях или элементах с простым заголовком, без шапок и итогов, объединений с чистым содержимым, в котором нет бессмысленного цифрового текста и прочих сюрпризов, замедляющих и затрудняющих работу пользователя. Уф.
Давайте делать друг другу хорошо и будет всем хорошо. А ведь если делать друг другу плохо, то и всем будет плохо, а мы ведь так не хотим, верно?
Засим прощаюсь, Ваш Олег Видякин.