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