Поваренная книга Экселиста #0 - Пару слов об Экселе
Для начала - рад видеть, что моих любимых и обожаемых подписчиков стало 21.. Шутки про "За 2 дня на Пикабу у меня - очко" оставлю себе))) В первую лавочку пишу для вас, ну и отдельная вам благодарочка за то, что вам это интересно.
Так как я такой же логичный, как стол-жираф-48, начну с того, с чего надо было начать изначально - а зачем, в принципе, Эксель то нужен, и что с ним можно делать (кроме Зиночка_Счет_В_Экселе_Сделает). Тут уже предвижу холивар, прям чувствую, потому сразу подкину на вентилятор.
Основные задачи в классическом понимании это НЕ ХРАНЕНИЕ данных, а их обработка. То есть, если рассматривать классическую MVC-модель - это контроллер. Потому что для представления есть бумага и принтер.
То, что мы храним в Экселе данные - ну да, нам так проще. Но по факту любая СУБД Эксель уничтожит по скорости работы непосредственно с данными. Но, чтобы что-то похожее на обработку организовать на уровне работы с СУБД - придется уже городить несколько этажей SQL запросов.
Потому данные выгружают в Эксель, а там уже и "понеслась звезда по кочкам".
Да, сравнивать табличный процессор и модель разделения данных полностью неправильно, и все равно что сравнивать ежа и ужа, но... приходится, так как другой аналогии я с ходу не подберу. Да и, хоть она кривая, но определенное сходство есть.. Ну помним про мою логику, да?))
Отсюда, как мне кажется, возникает одна такая ошибочка - Эксель это не способ сделать "правильно", это способ сделать БЫСТРО и РАБОЧЕ. 90% расчетных файлов в экселе понимает разработчик и Майкл Джексон, ситуация ровно такая же, как и с ремонтом ( "вот пусть тот криворукий исправляет пол, без пола лампочку не повесить").
Далее чуть объяснений и примеров...
В последнее время очень "модно и молодежно" вводить машинный анализ в прогнозирование возможного поведения клиента (про b2c сегмент говорим). То есть, допустим, на основе покупок клиента делать прогноз (не статистику собираем, а Вангу косплеим) совершения им следующей покупки (как даты, так и состава комплексной покупки) и о возможных similar к ней. И уже на основании этого делать какие-либо выводы и офферы разные предлагать (ну там сырный соус к покупке, ну вы поняли да?)) ).
Реализация этого в экселе занимает от часов до дня, реализация этого в CRM занимает от недель до "на третьи сутки после второго пришествия". Причем реализация на уровне CRM нифига не будет работать без прототипа, реализованного или на бумажке (в виде ТЗ) или в виде костылявых обработок в Экселе. Ведь программист, про кодера даже не будем, не обязан и не будет представлять себе вашу бизнес-логику, ему до нее как Ильичу до лампочки. Да и по поводу ТЗ крайне метко выразился мой препод в институте - то, что вы написали в ТЗ не будет работать так, как это вы написали, а будет так, как прочел (понял) разработчик. Потому мы делает что? Правильно - бьемся челом об сруб светлицы что-то невообразимо-кривое в Экселе, но при перемножении лося и порося получаем искомые 63,3%. Что и служит уже как и вашей (дядиной) прибыли, так и методом контроля разработки. То есть вы берете чистые данные, которые хранятся НЕ в Экселе, а в СУБД, и уже их вьювите и контролите.
Ну и, чтобы разбавить это "много-букофф-ниочем" - боевой пример.
Делаем простейшую экспертную систему в Экселе (без регистации и смс).
Вот таблица:
Найдите глазами столбец "% win". В зависимости от нее - строка перекрашивается в другой цвет, меняется шрифт, ну и чем значение больше - тем больше вероятность покупки. Цифры относительны, получены крайне простым способом - телефон в руки и обзвон разных групп клиентов. Вычитаем оттуда погрешность "на идиота" и вуаля.
Сама формула:
=VLOOKUP(I109/J109*1000;_tech!$F$2:$G$10;2;TRUE)+
IF(K109="";0;IF(K109>43689;15;VLOOKUP(DATEDIF
(K109;"12/8/19";"D");_tech!$J$2:$K$9;2;TRUE)))
А теперь понимаем как это сделать.
Конкретно этот пример - фитнес. Далее мы ищем данные. Конкретно в моем случае искалось так:
- Таблица с клиентами - CRM (оттуда выгрузка в эксель, листы 62_кк)
- СКУД - с сервера СКУД (да, в CRM она интегрирована криво + карты можно и "забыть" внести в саму CRM, потому что некогда админам) (лист "посещения_приведенные", и "пос_")
- Статистика звонков - с телефонии (потому что оттуда она тупо информативнее, и мне не интересно мнение менеджера о клиенте. Если менеджер говорил более минуты - значит клиенту интересно, просто ему предлагали не то, что ему нужно). (лист 4)
- Дополнительные покупки - CRM (лист "Этот")
- Экспертная оценка - эмпирически-добытые факты. (лист _tech)
(часть данных потер, ибо прайваси-все-дела + обработку специально взял аж с августа, с того времени их было еще версий 20)
Теперь включаем чем думать:
Клиент ходит постоянно -> его все устраивает
Клиент купил карту за сумму N -> сумма его устраивает (то есть предложи столько же или меньше, но не больше)
Клиент покупает что-либо еще -> деньги у клиента не кончились
Карта заканчивается в течение квартала -> купит сейчас, если пункты 1-3 соблюдены.
Клиент женщина 30+, на дворе август, клиент не ходит с июня -> предложить карту и детские занятия со скидкой
Клиенту не звонили с сервисными звонками в течение месяца и пункты 1-3 соблюдены -> звонить в ПЕРВУЮ очередь (не задрочен)
Клиент ходил, сейчас не ходит, возраст до 21 -> звонить и предлагать рассрочку, свалил на лето.
Каждому событию присваиваем свой вес, получаем 2 группы для обзвона. Клиенты на продление и клиенты с детьми на детские занятия.
Все просто, да? А теперь попытайтесь внедрить это в CRM за неделю) А за две? А за месяц? Да фиг выйдет.. В экселе заняло чуть больше 2х часов.
Коэфы задаем отдельно, даже цвета для выделения строк - тоже задаем через "техническую" вкладку.
И да, это тоже можно сделать по другому. А можно и не делать, ведь зачем нужно что-то делать, когда можно просто обсудить все в комментах, неправда ли?))
Используя Эксель для этих целей, понимаешь насколько это гениальный продукт.
Вот долго думал - а по факту то реально продукт без аналогов. Мда, что-то с этой стороны на вопрос никогда не смотрел) Можно докопаться только до совместимости со сторонними ОС... но у других и этого нет. Потому вы чертовски правы)
Согласен полностью с фразой "чтобы работало и быстро"
В экселе получаются отличные приложения-на-коленке,эдакая интерфейсная прокладка между пользователем и данными. А если добавить немного интерактивности и автоматизации на VBA ,что приналичии готовых решений тоже очень быстро, то получается вообще идеальный инструмент
Об чем и звон собственно... Только VBA, как уже сто раз писал, не кросс-платформенное решение, потому если можно без него - лучше делать без него.
ну у меня больше всего заморочек выходило с макосью. а вот если макрос готовится для корпоративного использования - и все оборудование внутри конторы стандартизовано - то только в путь.
раньше я считал, что эксель (+аксесс+аутлук) с вба - идельный инструмент (а если контора еще и сап юзает - то дешевая автоматизация начинает рулить), чтобы расзработать что-то для 5-15 человек. Но как оказалось на западе вба штука в принципе более востребованная, чем у нас.
5-15 - SaaS, их ща столько выпустилось, что зашататься можно...
Я тут в сторону еще вот чего смотрел - собственное облако (если знаком с SharePoint, тогда прям сразу поймешь о чем я) на базе Nextcloud. И как ни странно - это для 5-15 человек может служить фактически полной заменой автоматизации...
Скоро напишу отдельно об этом. Там достаточно объемный материал.
если в кратце - вот сюда, а там - вот так
Категорически ничего советовать не могу, так как сам обучался по F11)) а что нужно/ хотите узнать / с чем сталкиваетесь? Может подскажу способ попроще зубрежки литературы )
Если рукожопы делают идентичные вводные файлы (не обязательно ИДЕНТИЧНЫЙ ЕДИНЫЙ, пусть их будет N-количество, но каждый рукожоп обязан делать ровно так, как и делал) - то это автоматизируется через Data->New Query->From File
Один раз пишите обработки, сохраняете и погнали...
Ну из простого - сначала пишем обработку с нормализацией данных, и потом делаем с ними что угодно.
На этапе нормализации ( то есть приведение всех данных под единый формат) я бы очень рекомендовал еще и проверочное поле захерачить... ну допустим:
- Из строки "Адрес", которая вбита как душе угодно, вы хотите вытащить массив вот такого формата
[ Почтовый индекс , Город, Улица , Тип улицы (улица, проспект, отсутствует, тд), № дома, Дополнительное поле ]
Дополнительное поле - тут и номер квартиры и всякие экзотичные моменты типа деления одного участка, но это мы в кадастр уже лезем, просто учли что НЕ только номер квартиры и может квартиры и не быть.
Так вот - у вас на моменте разбора исходных данных будут косяки (и много) в обработке поля "№ дома". Дом 3/1 стр2 корпус 4 - можно написать НАСТОЛЬКО по разному, что диву даешься откуда такие
долбоебыконченныебольные ублюдки с такой фантазией появляются... Потому дойдя до этой строки - отдельный столбец с проверкой вот с такой логикой:ЕСЛИ всякие строения и прочее - там на 95% будет многоэтажка, а не частный сектор. ЗНАЧИТ будет что? Дополнительное поле в виде номера квартиры. Ну и далее просто сравниваете - если в проверочном поле (=if(условие сравнения)=1;1;"") есть значение 1, то ОБЯЗАН быть элемент Дополнительное поле, и он должен быть числом. Если нет - проверяете строку вручную/ усложняете обработку.
Сколько у вас строк в вводных файлах? Если, допустим, мы говорим не о всей Матушке Рассеи, а о каком-то городе/ регионе - я бы данные нормализовал через гео справочники, и тогда вам вообще "пофигу с какой стороны тюбитейка".. )
а их много? Ну, допустим, если сложить всех "рукожопов" за месяц - количество строк?
И самое главное - если там адрес - адрес по городу / региону / стране?
Лови ещё одного подписчика