На своём веку я занимался многими странными вещами, о некоторых из которых не могу рассказать, однако использование Excel вместо кодинга — одно из тех постыдных удовольствий, которые я не буду ни от кого скрывать.
Всегда задавайтесь вопросом: а можно ли использовать для этого Excel?
Забудьте о тесте Тьюринга — проходит ли ваша гениальная идея программы тест Excel? Например, все пользовались простыми табличными формулами для генерации отчётов, но знаете ли вы что Excel может запросто выполнять замены регулярными выражениями, применять операторы if, и даже можно вызывать онлайн-функции, чтобы подгружать актуальные цены онлайн-сервисов?
Excel может подключаться к реальным базам данных, создавать файлы .csv и JSON, его можно запрашивать снаружи с помощью Python или других языков программирования. Можно использовать электронные таблицы в качестве базы данных, применять их для генерации контента и импортировать их на сайты Wordpress для массового создания тысяч постов агрегатора новостей или веб-сайтов с видео.
И всё это у вас под рукой, так что пользуйтесь этим инструментом и не бойтесь насмешек более слабых разработчиков, ведомых чувством превосходства, но на самом деле не знающих, что они просто тратят впустую время.
Генерация тестовых сценариев
Недавно для рабочего проекта мне нужно было примерно две сотни тестовых сценариев на основании различных параметров, тестировать которые требовалось по отдельности и в сочетании с другими.
Я написал в Excel матрицу, указал в строках основные тестовые сценарии, а в столбцах — параметры, после чего смог просто написать формулу для генерации из них тестовых сценариев и перетащить настолько далеко вниз, насколько мне было нужно.
После этого я даже мог использовать вот такую формулу:
="[TestCase(""&A2&"")]"
Она генерирует декораторы тестовых сценариев для автоматизированных тестов, которые мне нужно будет проводить.
SQL-запросы
Хотя мне уже привычно написание SQL-запросов с помощью Excel, позвольте вернуться к предыдущему примеру, чтобы продемонстрировать, насколько это здорово: для каждого из тестовых сценариев мне нужно было сгенерировать соответствующий SQL-запрос, то есть всего две сотни запросов.
Разумеется, писать их вручную я не хотел, поэтому создал один скрипт, а затем сопоставил значения со столбцами базы данных с помощью сравнения строк и операторов if. Примерно так:
="union select id from tb_test test where test.customer_property "&IF(A2="larger";">";"<")&"5;"
Особенно обратите внимание на оператор
union
, поскольку он позволил мне запустить скрипт один раз, затем скопировать все получившиеся id из результата и вставить их обратно в электронную таблицу.После чего я мог даже использовать эти id и параметры для манипуляций с тестовыми данными и менять любые значения, которые мне понадобятся для конкретных тестовых сценариев.
Отображения баз данных
Одна из самых раздражающих задач в моей карьере — отображение столбцов базы данных на объекты в коде; когда мне приходится заниматься подобной работой, я подумываю об увольнении прыжком из окна.
Так было, пока я не начал пользоваться Excel. При помощи электронных таблиц можно просто скопировать объявление таблицы базы данных и использовать значения для написания короткой формулы, создающей объектные нотации:
string test_column = Convert.ToString("test_column");
Как видите, если известны имя и тип данных исходного столбца, то можно создать всю строку программным образом. Однажды мне довелось отображать таким образом пятнадцать таблиц; я понимаю, что есть решения и получше на основе автоматических преобразователей, но не в том проекте, над которым я работал.
Todo и отслеживание ошибок
Когда-то я работал с человеком, который настаивал, что Excel ужасно неадекватен для планирования проектов и отслеживания проблем, поэтому мы провели с ним двухчасовое совещание, на котором вставляли всё это в его PowerPoint. Это похоже на шутку, но ему, похоже, казалось, что разноцветные прямоугольники, разбросанные по множеству слайдов, делали всё ярче и удобнее.
У полезных в работе людей для планирования проектов гораздо более традиционным инструментом является Excel — особенно легко в нём настраивать графики, ведь можно сдвигать столбцы и строки, а также беспроблемно вставлять даты.
На самом деле, для крупных проектов эта среда гораздо удобнее, чем работа с нуля в специализированной системе отслеживания проблем наподобие Jira — можно сделать всё за один раз после создания графика и согласования со всеми индивидуальных задач. Однажды мы впустую потеряли целую неделю, потому что нам постоянно приходилось начинать с чистого листа на доске Jira из-за того, что руководитель проекта понимал нереалистичность установленных графиков.
Ещё одно реальное преимущество такой среды заключается в том, что не относящиеся к ИТ сотрудники уже знакомы с Excel, а попытки научить их пользоваться новой системой приведут к откладыванию этапа планирования. Если кто-нибудь вернётся к преобразованию этого списка в предпочитаемый для него формат, то это уже его проблема или радость, но, на мой взгляд, на ранних этапах планирования Excel проявляет себя во всём своём блеске.
Подведём итог: я жалею, что мы отказались от электронных таблиц
Чем старше я становлюсь, тем больше меня раздражают люди, ненавидящие то, что они не понимают.
То же самое относится и к Excel: это невероятно мощный инструмент, если вы сможете освоить его возможности, но достаточно всего одного человека в команде, который воскликнет «боже, только не Excel», чтобы мы потратили час на его объяснения преимуществ того современного инструмента, который он предпочитает. Другие инструменты приходят и уходят, а Excel всегда рядом, когда вам нужно крепкое плечо, в которое можно поплакать.
На правах рекламы
Эпичные серверы для разработчиков и не только! Недорогие VDS на базе новейших процессоров AMD EPYC и NVMe хранилища для размещения проектов любой сложности, от корпоративных сетей и игровых проектов до лендингов и VPN.
silent_jeronimo
С некоторых пор Excel тьюринг-полный.
И его можно использовать, чтобы не писать код.
MykolaPetiukh
Это мой первый инструмент в парсинге сайтов — минимум в половине случаев его функциональности достаточно.
Antervis
silent_jeronimo
Ну на самом деле нет.
Первичная обработка данных, которую можно сделать скриптом ИЛИ в excel-таблице.
Прототип структуры данных с правилами обработки и поиском узких мест на уровне анализа-проектирования, а не при реализации системы.
Парсинг разрозненных данных из сайтов и таблиц в единый вид с довольно простой схемой получения интересующих данных.
Ну и так далее. Excel — очень хороший инструмент для проектирования, сбора и первичной обработки данных без привлечения программистов. Просто это задачи менеджеров и аналитиков которые, в больших командах, не должны доезжать до программистов. Потому что 80% из того, на что они требуют написание скриптов и обработчиков, на самом деле решается в Excel'е со скоростью написания технического задания на указанные скрипты и разработчики.
antirek
А еще в Excel картины рисовать можно ;)
etozhesano
И в игры играть (и создавать соответсвтенно)
foxcode85
Ага. Я например пытался, вышло более — менее https://m.habr.com/ru/post/542242/
vmkazakoff
До сих пор придерживаюсь мнения, что если какой-то процесс (технический, организационный, логический) не получается офрмить в Экселе или он там выглядит очень сложным, то надо внимательно посмотреть ещё раз на сам процесс — возможно в нем есть что улучшить.
Myclass
Согласен. Тоже так думаю. И везде так и говорю. Хотя убедился — редко, кто в это верит.
Пойду дальше в высказывании. В большем количестве фирм, где используется Excel, то со всеми в встроенными возможностями (vba, автоматизация) можно делать много чего, что будет получше, чем тонна всякого черезчур платного софта. Почти все бизнес процессы можно с Excel и Office оцифровать. А с пакетом Office 365 (Excel, Word, PowerPoint, Teams, OneNote, PowerBI etc.) так и вообще — все.
Кстати на примере с Excel я вижу как думают люди. Там сразу видно, если созданные ими конструкции нелогичны, сложные, часто не поддающие пониманию или последующему сопровождению или видоизменению итп. Это как своего рода визитная карточка. Мне сразу понятно, кто передо мной.
Am0ralist
Когда это может делать только парочка человек из IT отдела и несколько менеджеров, оцифровать не представляется реальным(
А так, добавление того же Acсess в ваш список ещё на порядок увеличивало возможности оцифровки)
unsignedchar
Как у Excel с контролем версий? diff между изменениями посмотреть можно?
silent_jeronimo
есть надстройка XLTools, в ней есть контроль версий.
Xaliuss
Самое базовое в комплекте — история с возможностью отката и механизмы рецензирования (примечания). Для большего надстройки видимо нужны. Так же при совместном редактировании видно, что делает другой человек.
GerrAlt
а как там с параллельными операциями? горизонтально отмасштабируемся, или будет искать машину помощнее? как там с ACID?
YMA
«Родные» функции параллелятся отлично, я как-то на предыдущем месте работы напряг весь офис, запустив на терминальном сервере пересчет таблицы Excel на 25 столбцов и ~40000 строк с поиском подстрок из этой таблицы в списке из ~80000 элементов (нечеткий поиск возможных банкротов-физических лиц по ФИО и ИНН из клиентских баз множества банков в общем списке банкротов Российской федерации).
Да, это было не очень оптимальное решение, но Excel радостно загрузил 32 ядра из 40 на 100%, и посчиталось всё быстро, минут за 5. Но админу позвонить по поводу неожиданных тормозов коллеги успели. В будущем админ попросил больше 4-8 процессоров не захапывать ;)
PS: А вот со встроенным VBA сложнее, пользовательские функции параллелятся плохо, а процедуры на VBA приходится запускать через OnTime, чтобы они работали хоть как-то параллельно.
Xaliuss
Отмечу что в последнее время разработчики уделяют скорости работы много внимания. При переходе к Excel 2016 я увидел поддержку многопоточности с использованием нескольких ядер, не так давно (порядка года) переписали все функции поиска, что на больших массивах должно давать существенный прирост. В этом плане Excel существенно лучше аналогов.
pronskiy
Лучшее, что я видел в екселе
axtrace
Ну есть еще эмулятор энигмы, игра, клип AC/DC
k12th
Удивительно, как много вещей выглядят как гвозди, когда ты наловчился орудовать молотком...
DirectoriX
А потом Британское правительство теряет данные о ковид-пациентах из-за ошибки в использовании Excel. И даже гены переименовывают, потому что их названия упорно заменяются названиями месяцев, потому что Excel же ж умный, ага.
Я не призываю перестать использовать Excel, просто помните, что «универсальный» — совсем не то же самое, что «наиболее подходящий».
PATRI0T
Ексель конечно подкупает своей универсальностью.
И при выборе инструмента всегда приходится решать дилемму — искать что-нибудь под свою конкретную задачу, или попробовать быстро запилить на ексельке, если задача не большая, и возможности таблиц хватает.
И очень часто второе быстрее сделать, чем найти готовый инструмент, который бы хорошо подходил под задачу…
В ваших примерах люди, которые разрабатывали структуру хранения, просто допустили пару грубых ошибок — например, если бы поставили тип данных «текстовый», не было бы беды с заменой названий месяцев.
Поэтому вопрос об выборе инструмента все равно открытый, т.к. никто не хочет изобретать велосипеды в ексельке, когда рядом находится идеальное, подходящее по всем параметрам, и в т.ч. и цене решение.
Flammar
Xaliuss
Такие же ошибки можно сделать где угодно. Любым инструментом надо уметь пользоваться. В первом случае Excel не виноват абсолютно. Даже если б просто перешли на новую версию ошибка не возникла бы. Во втором коррекция сделана больше для удобства, так как генетиков много, многие пользуются Excel, и не все из них гарантировано могут избежать ошибок из-за автозамены, так что переименование просто экономит время.
domix32
keypressingmonkey изобрел data driven development
alexhott
Если уметь пользоваться то все гуд.
Иначе только спец интерфейс с одной большой кнопкой.
Ant80
не стоит ещё забывать о VBA внутри экселя. и о том, что интерфейс экселя привычен для большинства офисных работников. это позволяет очень быстро делать очень эффективные средства малой механизации для не технических сотрудников.
YMA
Еще одно достоинство, что Office+VBA вызывает гораздо меньше настороженности у безопасников, чем любая другая среда разработки. В крупных организациях, когда в твоих должностных нет написания программ — убедить, что тебе нужно установить дополнительное ПО — сложно.
А VBA позволяет реально очень много, вплоть до перемещения мыши и кликов ей через дергание системных вызовов, что позволяет заменить AutoIt — например. Ну и дергать из Word методы Outlook — удобно. Можно, например — сформировать красивый отчет по выполненным задачкам, или календарь с предстоящими событиями. Жаль, что VBA уже готовятся списать в анналы истории…
dimaaannn
Единственно что бесит — это синтаксис VBA
Loki13
Ещё больше бесит встроенная IDE. Глюками с подсказками, выскакивающими окнами при ошибке и т.д. С нормальной IDE и синтаксис не так бы раздражал.
DmitriiR
В экселе работала самая крупная в РФ контора по книгам.
В нем же+VBA делал систему заказов с подбором товара по признакам.
+
Нейросеть по прогнозированию продаж по фото.
Правда 14 лет назад.))
Тогда правда было сильное ограничение на количество столбцов и строк.
Плохо что его народ толком и не знал (обычных работников)
Stronczzz
Новосибирская Топ-книга?
DmitriiR
Она )
Woodroof
А потом они купили какую-то умную систему за миллионы, начали её внедрять и разорились. Все совпадения случайны.
XanKraegor
Можете смеяться, но я в экселе иногда даже кодогенерацию делаю, когда нет смысла тащить в код целый фреймворк.
tyomitch
Компилятор, над которым мы работаем прямо сейчас, начинался как набор макросов в Excel, но за несколько лет упёрся в ограничения среды, и нам приходится всё переписывать.
Woodroof
+
В частности, делал скрипт для заполнения базы данных. Оказалось проще на разных листах в нужных местах вписать нужные данные, а потом скопировать готовый SQL.
Но, справедливости ради, я использую гуглотаблицы, а не непосредственно Excel.
Ant80
продолжаем славословие. в кровавом энтерпрайзе эксель — очень удобный инструмент для отправки всевозможных таблиц на печать. можно генерировать таблицу любой сложности в хтмл, потом программно открывать экселем и в нём программно же подкручивать области печати, ориентацию и проч. выделенные рейнджи из таблиц экселя сами копипастятся в вотсап картинкой с сохранением формата, это тоже очень удобно при общении с клиентами.
bipiem
Есть ли примеры веб-сайтов с базой на excel? Обновил данные в excel файлике, нажал обновить и сайт с обновленными данными. В идеале чтобы и формулы работали.
Можно через js -библиотеки (другие библиотеки) вручную читать данные из excel-файла, но может проще можно?
vmkazakoff
1) есть много js либ для работы с гуглтаблицами. Я часто на них делаю сайтики. Если ещё учесть что к гунлтаблицам легко прикрутить скрипты через гуглскрипт или ifttt то вообще целый бэкенд.
2) не в Гугл таблицах, а виде обычного экселя у меня на работе сделана страница со структурой подразделений — коллеги заполняют Эксель т.к. они не умеют верстать, Эксель формулами генерит сложный многоуровневый json, который мне остаётся только скопипастить и отправить в прод. На основе этого json страница генерит вложенную структуру подразделений, с поиском по ней и прочими плюшками.
3) можно было бы сохранить в csv и брать файл из js напрямую (это же просто текст был бы), но это точно потребует вебсервера даже при разработке (элементарный "200ок" в хроме пойдет) из-за ограничений браузера.
4) согласно старой игре, где надо брать случайное английское слово, подставлять ".js" и выпивать если такая либа есть, я моментально увидел что есть и xlsx.js которая умеет и из Эксель файла все забирать. Пойду выпью за это )
Am0ralist
Были примеры САПР, в которых вместо БД использовались таблички экселя для конфигурирования под производство конкретное)
В экселе иногда очень удобно делать скрипты для апдейта БД большой порцией данных, вместо того, чтоб вбивать вручную. Скопировал нужный столбец, вставил в бат файл или ибэксперт — и готово.
Через печать на виртуальный принтер мы в экселе генерим анализ данных с мед.анализаторов.
Так что эксель и аналоги — это такие универсальные солдаты. И если к ним прикрутить что-нибудь внешнее, то можно сделать много чего вообще. Только иногда возникает вопрос: «зачем»?
0serg
Я долго пользовался экселем (и продолжаю сейчас пользоваться), но python / pandas для обработки данных объективно удобнее. В Экселе многое работает «из коробки», но проблема в том что во-первых функционал часто нетривиально запрятан, а во-вторых части нужных вещей просто нет и лечится это только VBA который откровенно ужасен. Скажем я с женой как-то два часа искал как поставить фильтр по значению колонки в pivot table. Обычно фильтр в экселе можно поставить из ribbon или щелкнув на заголовке колонки. Но вот конкретно в pivot table надо кликать на строке, выбирать из контекстного меню «добавить фильтр» и тогда откроется отдельное окошко где можно ввести название колонки по которой фильтровать. Это осмысленно (в pivot table входят строки разных уровней и на разные уровни можно поставить разные фильтры), но боже, если этого не знаешь, то черта с два найдешь / догадаешься. В pandas все это делалось куда проще и не надо было тащить макросы чтобы k-means сделать. Да и графики с seaborn выходят красивее :).
В Экселе по сути сегодня одно преимущество: несколько удобнее смотреть / вводить данные. Интересно как скоро кому-нибудь придет в голову сделать удобный excel-подобный вьювер / редактор для pandas dataframe?
mSnus
Эксель не умеет нормально работать с CSV
Эксель может при сохранении угробить большой файл так, что он потом будет открываться полчаса
Эксель не умеет в PCRE
Красивые графики в нём не сделать
Про совместную работу надо документом и говорить не приходится, то, что есть — глючит
Для меня этого достаточно, чтобы не рассматривать его как серьезный или универсальный инструмент. Он удобен и быстро для довольно частых задач, таблиц среднего размера, но не более.
DirectoriX
CSV — это прям моя больная боль. Чтоб правильно загрузить даже примитивный CSV (две колонки целых чисел, разделённых каноничной comma-запятой, без заголовка) нужно проходить через весь этот инструмент импорта. Ну или в самое начало файла вставлять указание для Экселя, что разделитель — запятая.
Это одна из причин, почему я поставил себе LibreOffice — его Calc при открытии CSV сразу спрашивает, всё то, что Excel делает в рамках мастера импорта.
unsignedchar
КМК, если это часто повторяющаяся задача, то ее можно сделать на екселевских макросах, или на VBA, или даже сделать конвертор csv2xlsx на python.
Am0ralist
Ну вот часто повторяющаяся задача — открывать CSV. Вообще. Любые. Разные. И чтоб текст в даты не конвертился автоматом, например. И много чего.
В итоге ставишь либеру и получаешь удобный инструмент по умолчанию. В этом либера реально обходит эксель, в последнем в принципе договориться с автозаменой практически не реально.
unsignedchar
Ну, так открывать CSV и открывать CSV в Excel — это таки 2 разные задачи ;)
Am0ralist
Задача получить эксель в конце) Поэтому из либеры сохраняем эксель формат)
drWhy
Если десятичный разделитель в системе поменять на точку, процесс импорта csv в Excel становится гораздо более предсказуемым.
Am0ralist
Там у нас основная проблема, что проще, чтоб почти все строки были «текст» без их слишком умного парсера. Либера это даёт делать при открытии сразу и легко)
unsignedchar
Но что-то обязательно сломается в другом, непредсказуемом, месте ;)
drWhy
Ну генетики предпочли переименовать несколько генов, чем менять привычный инструмент.
YunSergey
Причем разделитель запятая это только в руской версии Windows, в иностранных разделитель — точка. Мне это крови попило при импорте CSV из экселя в Python
drWhy
Именно. Видимо не совсем дотестировано.
Но на одном компьютере держал несколько лет точку именно для импорта в Excel. И ещё американский формат даты — он гораздо лучше подходит для целей сортировки файлов, содержащих дату в имени.
Am0ralist
А как 3/30/2021 (мм/дд/гггг,) сильно улучшает ситуацию относитально 30/03/2021?
По мне так это вообще ужас.
Единственно верный это 2021/03/30
drWhy
Из трёх вариантов правильно отсортируется по имени только последний, американский.
Am0ralist
Эм, американский это первый. Я даже в винде ради интереса поставил «Английский (США)» и дата сразу стала 3/30/2021
drWhy
Вы правы, хотя всегда был уверен, что YYYY-MM-DD это американский формат. Википедия говорит, что это ISO 8601. Этот формат КМК наиболее удобен для применения на компьютерах.
tyomitch
Он китайско-японско-канадский — жёлтый на этой карте.
Flammar
Ну, год редко сильно важен…
drWhy
Разве что раз в год ;)
tyomitch
В немецкой тоже запятая. Мне это крови попило совсем недавно.
YunSergey
Спасибо друг, за сэкономленные нервы, в списке DE тоже предстоит. :)
DirectoriX
Писать макросы или тем более внешние скрипты для того формата, с которым Excel автоматически ассоциирует себя при установке, но не поддерживает как ожидается?..
unsignedchar
Вам ехать или страдать? ;)
DmitryLTL
Тоже иногда использую Excel для быстрой генерации скриптов.
Основная претензия это отсутствие поддержки хороших regexp при поиске и замене.
Вторая, совершенно неудобная конкатенация.
А так конечно за пару минут сделать простенький скриптик, очень удобная вещь.
OBIEESupport
RegExp ставится через меню установки надстроек. Да, немного непривычный он, но после Java, и он позволяет делать чудеса.
Fodin
Можно без надстроек. Модуль на 20 строк с использованием CreateObject(«VBScript.RegExp»)
LuchS-lynx
По работе использую для быстрого заполнения подготовленных данных в шаблоны, с попутной сортировкой, проверку на правильность и просто что бы разложить все по-полочкам, что в строительстве при оформлении исполнительной документации спасает.
Vinchi
Только не забывайте что excel еще купить надо, а пара строчек кода в том же python вам ничего не стоит.
OBIEESupport
А LibreOffice макрос можно и на Питоне написать.
Flammar
Не перешёл на него лет 8 назад именно из-за плохой ситуации с созданием макросов.
lxsmkv
Мне кажется, что еще лет 12 назад это сошло бы за сарказм.
Эксель исторически был и остается — табличным калькулятором. Это как программирование игр на TI-83 — можно, но, как правило, в сегодняшних реалиях редко нужно. Хотя, среди калькуляторов там идет сильнейшая борьба по функциям. Однако тот же Матлаб уроет любой калькулятор по возможностям. Да даже смартфон уроет любой калькулятор по возможностям. Но свой узкий резон иметь такой швейцарский нож есть.
Это как открывать консервы кухонным ножом, когда нет открывашки или пиво зажигалкой — это все от «неимения». Неимения навыка, подходящего инструмента и пр. Но всегда найдутся те кто сочтет это видом искусства.
1c80
А я не пойму, неужели никто в ограничение строк не влетал? Или что то изменилось в экселе?
Какой офис сейчас самый крутой считается в этом плане (не облако конечно)?
Am0ralist
Или вам всё ещё мало строк?
YMA
Миллиона строк вполне хватает, а если у вас данных больше — welcome to Access, его из экселя тоже можно дергать.
Ant80
access — бесчеловечное зло с интуитивно непонятным интерфейсом и кучей ограничений относительно даже ms sql dev express, не говоря уже о фактически бесплатном постгресе. мне кажется, использование access оправдано разве что в условиях жёстких ограничений от безопасников. ну или в случае, когда человек принципиально не хочет/не умеет писать код.
DirectoriX
Access было бы правильнее сравнивать, например, с DB Browser for SQLite.
Ant80
ну я рассматривал с позиции «на чём бы быстро набросать базу для личного использования». тут архитектура менее важна чем, например, ограничение на размер файла данных 2 гб или невозможность писать сильно вложенные запросы.
vladkorotnev
Ну вот у нас на текущем проекте почему-то переводчики активно отрицают нормальные форматы типа XLIFF, поэтому все переводы пишутся в экселе — пришлось написать на VBA тулзу, которая экспортирует переводы в айос- и андроид-проекты, с форматированием, комментариями и всем-всем-всем, плюс скрипт на питоне, чтоб рушил сборку в икскоде при отсутствии какого-либо ключа в строках, и получилось вполне себе удобно :-)
На прошлом проекте тимлиду уж больно нравилось проектирование апи начинать с описания объектов в ворде таблицами по строгому шаблону. За счёт строгости шаблона можно было пробежаться по документу VBA-скриптом, преобразовать таблицы в дерево типов, которые впоследствии скормить классу-генератору, выдающему код на тайпскрипте, джаве или жсоны для примеров в той же документации. И даже авто-обновление установленного в локальный шаблон макроса из моей шары на офисном сервере было — не знаю, как безопасники меня не прибили за такое :-)
В общем, VBA — мощнейшая штука, но не для слабонервных.