Комментарии 59
=ЕСЛИ(B1=0; СУММ(ЕСЛИОШИБКА(ПРОСМОТР(_d;_s[[date]:[rate]]);)*ТРАНСП(B5:B16)*ИНДЕКС((_d>ТРАНСП(A5:A16))*(_d<=A2);;)*1/(365+(ОСТАТ(ГОД(_d);4)=0)))-СУММ(ЕСЛИОШИБКА(ПРОСМОТР(_d;_s[[date]:[rate]]);)*ТРАНСП(D5:D16)*ИНДЕКС((_d>ТРАНСП(C5:C16))*(_d<=A2);;)*1/(365+(ОСТАТ(ГОД(_d);4)=0)));)Кошмар какой! Проще перегнать в базу и обработать данные на любом доступном «человеческом» языке.
И самое стрёмное, что «ЕСЛИ(B1=0; СУММ(...» не работает на компьютерах иностранцев.
Тот кто придумал в Excel пихать формулы на русском — является диверсантом.
Тот кто придумал в Excel пихать формулы на русском — является диверсантом.
Теперь в LibreOffice то же самое. :(
Слава еврейскому б-гу и Аллаху, что в ивритской и арабской локализациях формулы оставили на английском. А то там была бы не только мешанина кириллицы с латиницей, но ещё и RTL/LTR.
И самое стрёмное, что «ЕСЛИ(B1=0; СУММ(...» не работает на компьютерах иностранцев.
Не сработает при «копировать-вставить». Нужно или искать сайт с переводом (или вручную заменить формулы), или взять экселевский файл с этой формулой.
Тот кто придумал в Excel пихать формулы на русском — является диверсантом.
Это сделано для доступности для широких масс (очень широких масс). Ну и все таки использование его редко выходит за пределы одного языка, потому и формулы вполне можно использовать на одном языке.
Когда возникает ситуация «нужно автоматизировать рабочее место продавщицы/телефонистки, Офис уже стоит, сторонний софт устанавливать нельзя, админских прав нет, USB-разъёмы выдраны админом при сборке компа», то приходится городить в Экселе именно такие формулы.
нужно автоматизировать рабочее место продавщицы/телефонистки
сторонний софт устанавливать нельзя, админских прав нетВ данном случае это означает, что Вас никто не уполномачивал автоматизировать это рабочее место. Сначала необходимо разобраться с организационными вопросами, а уж потом браться за технические.
В данном случае это означает, что непосредственному начальнику нужно, чтобы всё работало и не важно как, а глобальные IT-политики принимаются на много уровней выше и не касаются конкретных ситуаций на местах.
В статье формулы совсем не кошмарные.
Просто экселисты делятся на макрописцев и формулистов. Построение таких формул это и развлечение, и соревнование. Учитывается остроумность алгоритма, не стандартное применение функций, их количество, аргументы и скорость обработки
Просто экселисты делятся на макрописцев и формулистов. Построение таких формул это и развлечение, и соревнование. Учитывается остроумность алгоритма, не стандартное применение функций, их количество, аргументы и скорость обработки
Позвольте с вами не согласиться.
Макросы и формулы решают разные задачи, которые пересекаются очень редко.
Макросы и формулы решают разные задачи, которые пересекаются очень редко.
Вместо построения громоздкой и трудночитаемой формулы «макропрописец» напишет свою собственную функцию для использования в формуле. Здесь они вполне пересекаются. Если понятно названы переменные, сделаны по-человечески именованые диапазоны, тогда, с учетом высокой читабельности VBA, люди со знанием английского с минимальными усилиями вполне смогут понять, что делает относительно несложный код, особенно если он с нормальными комментариями.
программистов мало, а эксель почти у всех
drive.google.com/file/d/1-yuzAfD2kRNhSVT7lEg_Z-ZWvub0uEFy/view?usp=sharing
по указанной ссылке болванка склада, которой будет достаточно очень многим небольшим фирмочкам. С помощью экселя можно решать очень большое количество задач, и для этого не надо быть программистом. Форумов, где помогут (бесплатно) — очень много, там же куча готовых решений. Было бы желание
drive.google.com/file/d/1-yuzAfD2kRNhSVT7lEg_Z-ZWvub0uEFy/view?usp=sharing
по указанной ссылке болванка склада, которой будет достаточно очень многим небольшим фирмочкам. С помощью экселя можно решать очень большое количество задач, и для этого не надо быть программистом. Форумов, где помогут (бесплатно) — очень много, там же куча готовых решений. Было бы желание
НЛО прилетело и опубликовало эту надпись здесь
Статья была бы полезной, если бы автор разжевал все эти редкие функции и сначала показал, как они работают, на тривиальных примерах. А потом уже перешёл бы к реальным применениям.
А тут вывалили сразу трёхэтажный код и разбираться в нём неохота.
А тут вывалили сразу трёхэтажный код и разбираться в нём неохота.
Мало того, что стоило бы разжевать формулы, нужно ещё их дважды записывать — в русском и английском варианте. Читать мешанину языков — мозг взрывается.
Вспомнив формулы из 1С, решил, что тут всё довольно логично, компактно и трививально. Ещё и по-английски можно написать — вообще мечта…
Не являюсь специалистом в 1С, но разве там нет возможности записать по-английский и нормально структурировав конструкцию с помощью отступов? В приведенных формулах проблема не только в не читаемых сокращенных русских словах (в конце концов автор приводит и англоязычный вариант, который выглядит лишь ненамного лучше), а еще и в отсутствии структурирования.
Если вы пользовались Экселем, то вы замечали, что он парные скобки подсвечивает одинаковым цветом. Это, конечно, не так удобно, как отступы, но намного легче читается, чем использованные в статье одноцветные формулы.
Мой единственный положительный опыт использования Экселя сводится к написанию прайс-листов с автоматическим пересчетом рублевой цены в соответствии с текущим курсом. Но было это во времена версии 1, когда эксель представлял собой именно простую электронную таблицу, да и формула, как Вы понимаете, была простейшей. Более поздние несколько попыток его использовать были с отрицательным результатом, каждый раз приходил к выводу, что я, если и не быстрее, то с меньшей затратой сил и меньшим количеством ошибок напишу свою программу конкретно под данную задачу. А когда обнаружил еще и ошибку в его математике на уровне третьей значащей цифры на определенном наборе данных (по-моему, это была версия из офиса 97), то вообще перестал рассматривать возможность его использования для чего-либо, кроме как визуализации готовых сторонних данных, и это был уже не Эксель, а Calc из Libre Office.
Подсветка парных скобок — это, конечно, лучше, чем ничего, но, если бы авторы Экселя изначально рассчитывали на обработку формул подобной сложности, то должны были бы предусмотреть хоть какое-то структурирование текста.
Подсветка парных скобок — это, конечно, лучше, чем ничего, но, если бы авторы Экселя изначально рассчитывали на обработку формул подобной сложности, то должны были бы предусмотреть хоть какое-то структурирование текста.
Скобочки не панацея.
1. Alt+enter дает отступы с новой строки
2. +Ч(«комментарий к формуле») или +N(«комментарий к формуле») с ограничениями — нельзя писать в комментариях только «числа», «даты», «истина» тк эксель будет воспринимать частью формулы
1. Alt+enter дает отступы с новой строки
2. +Ч(«комментарий к формуле») или +N(«комментарий к формуле») с ограничениями — нельзя писать в комментариях только «числа», «даты», «истина» тк эксель будет воспринимать частью формулы
Писать мегаформулы это путь экономиста ) Программист нажмет правую кнопочку мыши на ярлыке листа, выберет "исходный код" и напишет на VBA функцию с отступами. Далее будет вызывать ее =МояМегаФормула(A1:A100). Там еще и отладчик есть.
Вы таки не поверите, но для формул тоже отладчик есть.
когда надо переходить на Access
спасибо что поделились, но думаю местные не оценят. любому программисту формулы проще на родном SQL самому себе написать, чем на чуждом — пользовательском — Excel.
НЛО прилетело и опубликовало эту надпись здесь
Не всегда у программиста есть выбор, на чём писать.
Не самые длинные формулы)
Мой маразм доводил до такого:
Мой маразм доводил до такого:
помесячное распределение ресурсов между сроками начала и окончания работ с возможностью использования кривых потребления
=ЕСЛИ(
ЕСЛИОШИБКА(
ПОИСКПОЗ($A584;'Отдельные данные'!$A$1:$A$600;0);0)>0;
СУММПРОИЗВ('Отдельные данные'!$B$1:$H$600*('Отдельные данные'!$A$1:$A$600='Остатки по сметам 31010'!$A584)*('Отдельные данные'!$B$1:$H$1='Остатки по сметам 31010'!X$1))/СУММПРОИЗВ('Отдельные данные'!$B$1:$H$600*('Отдельные данные'!$A$1:$A$600='Остатки по сметам 31010'!$A584))*$H584;
ЕСЛИ(ИЛИ($H584<0; $L584=0; МЕСЯЦ(X$1)>МЕСЯЦ($M584); МЕСЯЦ(X$1)<МЕСЯЦ($L584));0;
ЕСЛИ(МЕСЯЦ($M584)=МЕСЯЦ($L584); ($M584-$L584+1)*$H584/($M584-$L584+1);
ЕСЛИ(МЕСЯЦ(X$1)=МЕСЯЦ($L584);(ДЕНЬ(КОНМЕСЯЦА(X$1;0))-ДЕНЬ($L584)+1)*$H584/($M584-$L584+1);
ЕСЛИ(МЕСЯЦ(X$1)=МЕСЯЦ($M584); ДЕНЬ($M584)*$H584/($M584-$L584+1);
$H584/($M584-$L584+1)*ДЕНЬ(КОНМЕСЯЦА(X$1;0)))))))
ЕСЛИОШИБКА(
ПОИСКПОЗ($A584;'Отдельные данные'!$A$1:$A$600;0);0)>0;
СУММПРОИЗВ('Отдельные данные'!$B$1:$H$600*('Отдельные данные'!$A$1:$A$600='Остатки по сметам 31010'!$A584)*('Отдельные данные'!$B$1:$H$1='Остатки по сметам 31010'!X$1))/СУММПРОИЗВ('Отдельные данные'!$B$1:$H$600*('Отдельные данные'!$A$1:$A$600='Остатки по сметам 31010'!$A584))*$H584;
ЕСЛИ(ИЛИ($H584<0; $L584=0; МЕСЯЦ(X$1)>МЕСЯЦ($M584); МЕСЯЦ(X$1)<МЕСЯЦ($L584));0;
ЕСЛИ(МЕСЯЦ($M584)=МЕСЯЦ($L584); ($M584-$L584+1)*$H584/($M584-$L584+1);
ЕСЛИ(МЕСЯЦ(X$1)=МЕСЯЦ($L584);(ДЕНЬ(КОНМЕСЯЦА(X$1;0))-ДЕНЬ($L584)+1)*$H584/($M584-$L584+1);
ЕСЛИ(МЕСЯЦ(X$1)=МЕСЯЦ($M584); ДЕНЬ($M584)*$H584/($M584-$L584+1);
$H584/($M584-$L584+1)*ДЕНЬ(КОНМЕСЯЦА(X$1;0)))))))
Неужели кто-то такое пишет?
Пишет. Обоснование элементарное — связка между плановым и сметным отделами через эксель. Подготовка производства так же через эксель.
В работе используем связку формулы экселя + add-in от Ablebits.com (прошу не принимать за рекламу)
Огромная нелюбовь к макросам — администрировать таблицы с ними могут только те, кто написал тк при редактировании структуры таблицы макрос становится нерабочим (поправьте, если я не прав)
Конкретно этот случай
В работе используем связку формулы экселя + add-in от Ablebits.com (прошу не принимать за рекламу)
Огромная нелюбовь к макросам — администрировать таблицы с ними могут только те, кто написал тк при редактировании структуры таблицы макрос становится нерабочим (поправьте, если я не прав)
Если макрос написан по уму и использует Named Ranges вместо абсолютных адресов, то останется рабочим.
По моему опыту, основная проблема с макросами — что с каждой версией Офиса всё сложнее и сложнее разрешить их выполнение, причём эти разрешения забываются при апгрейде.
По моему опыту, основная проблема с макросами — что с каждой версией Офиса всё сложнее и сложнее разрешить их выполнение, причём эти разрешения забываются при апгрейде.
А отсутствие структурирования текста конструкции разве не является проблемой?
Макросы (в отличие от формул) пишутся на VBA.
VBA — это полноценный язык программирования.
VBA — это полноценный язык программирования.
Хотя Бейсик в среде программистов и является словом нецензурным, но я с Вами согласен. Просто в комментарии Lego-engineer присутствует именно малочитаемая формула, а в последующем комментарии ссылка на картинку под катом не рабочая, поэтому я и написал о том, что увидел.
Всё верно: Lego-engineer пользуется формулами, а не макросами.
что с каждой версией Офиса всё сложнее и сложнее разрешить их выполнение
отнюдь. версии 2007 и далее. Параметры, центр управления безопасностью, параметры центра управления безопасностью, параметры макросов, отметить нужное.
разрешения забываются при апгрейде
да, ничто не совершенно, настройки панелей тоже улетят. И никто не предлагает сохранить их настройку, хотя это возможно. Но панель макросов и личная книга макросов всё равно в ручную
Поправляюсь.
Ссылка на картинку
НЛО прилетело и опубликовало эту надпись здесь
Давным давно, в очередной раз скучая на работе, просто ради шутки собрал в экселе такую формулу:
Из ячеек B4, C4 и D4, в которых выставляются день (1-31 число из всплывающего списка), месяц (январь-декабрь из всплывающего списка) и год соответственно (пишется произвольный, но проверяется на диапазон 1900-2100 гг.).
Что делает формула:
1) проверяет число и, если выбранная дата больше возможной в выбранном месяце, подставляет максимально возможную (с учетом високосности года для февраля)
2) меняет падеж в названии месяца (например, январь -> января)
3) вычисляет день недели для выбранной даты
4) сравнивает с сегодняшней датой и выдает «уже было», «сегодня» или «только будет», ну и в итоге выдает всю эту информацию в одну сточку.
Еще раз повторю, это было просто ради шутки. Никакой практической цели, кроме как поупражняться с многоуровневыми вложениями формул в формулы не было.
Just for fun))
Скрытый текст
=ЕСЛИ(ИЛИ(B4=0;C4=0;D4=0);«Не достаточно данных!»; СЦЕПИТЬ(ЕСЛИ(ИЛИ(И(C4=«апрель»;B4>30); И(C4=«июнь»;B4>30); И(C4=«сентябрь»;B4>30); И(C4=«ноябрь»;B4>30));30; ЕСЛИ(И(C4=«февраль»;B4>28;D4/4=ЦЕЛОЕ(D4/4));29; ЕСЛИ(И(C4=«февраль»;B4>28);28;B4)));" "; ЕСЛИ(C4=«январь»;" января "; ЕСЛИ(C4=«февраль»;" февраля "; ЕСЛИ(C4=«март»;" марта "; ЕСЛИ(C4=«апрель»;" апреля "; ЕСЛИ(C4=«май»;" мая "; ЕСЛИ(C4=«июнь»;" июня "; ЕСЛИ(C4=«июль»;" июля "; ЕСЛИ(C4=«август»;" августа "; ЕСЛИ(C4=«сентябрь»;" сентября "; ЕСЛИ(C4=«октябрь»;" октября "; ЕСЛИ(C4=«ноябрь»;" ноября ";" декабря ")))))))))));" ";D4;" года — "; ЕСЛИ(ДЕНЬНЕД(СЦЕПИТЬ(ЕСЛИ(ИЛИ(И(C4=«апрель»;B4>30); И(C4=«июнь»;B4>30); И(C4=«сентябрь»;B4>30); И(C4=«ноябрь»;B4>30));30; ЕСЛИ(И(C4=«февраль»;B4>28;D4/4=ЦЕЛОЕ(D4/4));29; ЕСЛИ(И(C4=«февраль»;B4>28);28;B4)));"."; ЕСЛИ(C4=«январь»;«01»; ЕСЛИ(C4=«февраль»;«02»; ЕСЛИ(C4=«март»;«03»; ЕСЛИ(C4=«апрель»;«04»; ЕСЛИ(C4=«май»;«05»; ЕСЛИ(C4=«июнь»;«06»; ЕСЛИ(C4=«июль»;«07»; ЕСЛИ(C4=«август»;«08»; ЕСЛИ(C4=«сентябрь»;«09»; ЕСЛИ(C4=«октябрь»;«10»; ЕСЛИ(C4=«ноябрь»;«11»;«12»)))))))))));".";D4);2)=1;«понедельник»; ЕСЛИ(ДЕНЬНЕД(СЦЕПИТЬ(ЕСЛИ(ИЛИ(И(C4=«апрель»;B4>30); И(C4=«июнь»;B4>30); И(C4=«сентябрь»;B4>30); И(C4=«ноябрь»;B4>30));30; ЕСЛИ(И(C4=«февраль»;B4>28;D4/4=ЦЕЛОЕ(D4/4));29; ЕСЛИ(И(C4=«февраль»;B4>28);28;B4)));"."; ЕСЛИ(C4=«январь»;«01»; ЕСЛИ(C4=«февраль»;«02»; ЕСЛИ(C4=«март»;«03»; ЕСЛИ(C4=«апрель»;«04»; ЕСЛИ(C4=«май»;«05»; ЕСЛИ(C4=«июнь»;«06»; ЕСЛИ(C4=«июль»;«07»; ЕСЛИ(C4=«август»;«08»; ЕСЛИ(C4=«сентябрь»;«09»; ЕСЛИ(C4=«октябрь»;«10»; ЕСЛИ(C4=«ноябрь»;«11»;«12»)))))))))));".";D4);2)=2;«вторник»; ЕСЛИ(ДЕНЬНЕД(СЦЕПИТЬ(ЕСЛИ(ИЛИ(И(C4=«апрель»;B4>30); И(C4=«июнь»;B4>30); И(C4=«сентябрь»;B4>30); И(C4=«ноябрь»;B4>30));30; ЕСЛИ(И(C4=«февраль»;B4>28;D4/4=ЦЕЛОЕ(D4/4));29; ЕСЛИ(И(C4=«февраль»;B4>28);28;B4)));"."; ЕСЛИ(C4=«январь»;«01»; ЕСЛИ(C4=«февраль»;«02»; ЕСЛИ(C4=«март»;«03»; ЕСЛИ(C4=«апрель»;«04»; ЕСЛИ(C4=«май»;«05»; ЕСЛИ(C4=«июнь»;«06»; ЕСЛИ(C4=«июль»;«07»; ЕСЛИ(C4=«август»;«08»; ЕСЛИ(C4=«сентябрь»;«09»; ЕСЛИ(C4=«октябрь»;«10»; ЕСЛИ(C4=«ноябрь»;«11»;«12»)))))))))));".";D4);2)=3;«среда»; ЕСЛИ(ДЕНЬНЕД(СЦЕПИТЬ(ЕСЛИ(ИЛИ(И(C4=«апрель»;B4>30); И(C4=«июнь»;B4>30); И(C4=«сентябрь»;B4>30); И(C4=«ноябрь»;B4>30));30; ЕСЛИ(И(C4=«февраль»;B4>28;D4/4=ЦЕЛОЕ(D4/4));29; ЕСЛИ(И(C4=«февраль»;B4>28);28;B4)));"."; ЕСЛИ(C4=«январь»;«01»; ЕСЛИ(C4=«февраль»;«02»; ЕСЛИ(C4=«март»;«03»; ЕСЛИ(C4=«апрель»;«04»; ЕСЛИ(C4=«май»;«05»; ЕСЛИ(C4=«июнь»;«06»; ЕСЛИ(C4=«июль»;«07»; ЕСЛИ(C4=«август»;«08»; ЕСЛИ(C4=«сентябрь»;«09»; ЕСЛИ(C4=«октябрь»;«10»; ЕСЛИ(C4=«ноябрь»;«11»;«12»)))))))))));".";D4);2)=4;«четверг»; ЕСЛИ(ДЕНЬНЕД(СЦЕПИТЬ(ЕСЛИ(ИЛИ(И(C4=«апрель»;B4>30); И(C4=«июнь»;B4>30); И(C4=«сентябрь»;B4>30); И(C4=«ноябрь»;B4>30));30; ЕСЛИ(И(C4=«февраль»;B4>28;D4/4=ЦЕЛОЕ(D4/4));29; ЕСЛИ(И(C4=«февраль»;B4>28);28;B4)));"."; ЕСЛИ(C4=«январь»;«01»; ЕСЛИ(C4=«февраль»;«02»; ЕСЛИ(C4=«март»;«03»; ЕСЛИ(C4=«апрель»;«04»; ЕСЛИ(C4=«май»;«05»; ЕСЛИ(C4=«июнь»;«06»; ЕСЛИ(C4=«июль»;«07»; ЕСЛИ(C4=«август»;«08»; ЕСЛИ(C4=«сентябрь»;«09»; ЕСЛИ(C4=«октябрь»;«10»; ЕСЛИ(C4=«ноябрь»;«11»;«12»)))))))))));".";D4);2)=5;«пятница»; ЕСЛИ(ДЕНЬНЕД(СЦЕПИТЬ(ЕСЛИ(ИЛИ(И(C4=«апрель»;B4>30); И(C4=«июнь»;B4>30); И(C4=«сентябрь»;B4>30); И(C4=«ноябрь»;B4>30));30; ЕСЛИ(И(C4=«февраль»;B4>28;D4/4=ЦЕЛОЕ(D4/4));29; ЕСЛИ(И(C4=«февраль»;B4>28);28;B4)));"."; ЕСЛИ(C4=«январь»;«01»; ЕСЛИ(C4=«февраль»;«02»; ЕСЛИ(C4=«март»;«03»; ЕСЛИ(C4=«апрель»;«04»; ЕСЛИ(C4=«май»;«05»; ЕСЛИ(C4=«июнь»;«06»; ЕСЛИ(C4=«июль»;«07»; ЕСЛИ(C4=«август»;«08»; ЕСЛИ(C4=«сентябрь»;«09»; ЕСЛИ(C4=«октябрь»;«10»; ЕСЛИ(C4=«ноябрь»;«11»;«12»)))))))))));".";D4);2)=6;«суббота»;«воскресенье»)))))); ЕСЛИ(ДАТА(D4; ЕСЛИ(C4=«январь»;1; ЕСЛИ(C4=«февраль»;2; ЕСЛИ(C4=«март»;3; ЕСЛИ(C4=«апрель»;4; ЕСЛИ(C4=«май»;5; ЕСЛИ(C4=«июнь»;6; ЕСЛИ(C4=«июль»;7; ЕСЛИ(C4=«август»;8; ЕСЛИ(C4=«сентябрь»;9; ЕСЛИ(C4=«октябрь»;10; ЕСЛИ(C4=«ноябрь»;11;12))))))))))); ЕСЛИ(ИЛИ(И(C4=«апрель»;B4>30); И(C4=«июнь»;B4>30); И(C4=«сентябрь»;B4>30); И(C4=«ноябрь»;B4>30));30; ЕСЛИ(И(C4=«февраль»;B4>28;D4/4=ЦЕЛОЕ(D4/4));29; ЕСЛИ(И(C4=«февраль»;B4>28);28;B4))))>СЕГОДНЯ();" (только будет)"; ЕСЛИ(ДАТА(D4; ЕСЛИ(C4=«январь»;1; ЕСЛИ(C4=«февраль»;2; ЕСЛИ(C4=«март»;3; ЕСЛИ(C4=«апрель»;4; ЕСЛИ(C4=«май»;5; ЕСЛИ(C4=«июнь»;6; ЕСЛИ(C4=«июль»;7; ЕСЛИ(C4=«август»;8; ЕСЛИ(C4=«сентябрь»;9; ЕСЛИ(C4=«октябрь»;10; ЕСЛИ(C4=«ноябрь»;11;12))))))))))); ЕСЛИ(ИЛИ(И(C4=«апрель»;B4>30); И(C4=«июнь»;B4>30); И(C4=«сентябрь»;B4>30); И(C4=«ноябрь»;B4>30));30; ЕСЛИ(И(C4=«февраль»;B4>28;D4/4=ЦЕЛОЕ(D4/4));29; ЕСЛИ(И(C4=«февраль»;B4>28);28;B4))))<СЕГОДНЯ();" (уже было)";" (сегодня)"))))
Из ячеек B4, C4 и D4, в которых выставляются день (1-31 число из всплывающего списка), месяц (январь-декабрь из всплывающего списка) и год соответственно (пишется произвольный, но проверяется на диапазон 1900-2100 гг.).
Что делает формула:
1) проверяет число и, если выбранная дата больше возможной в выбранном месяце, подставляет максимально возможную (с учетом високосности года для февраля)
2) меняет падеж в названии месяца (например, январь -> января)
3) вычисляет день недели для выбранной даты
4) сравнивает с сегодняшней датой и выдает «уже было», «сегодня» или «только будет», ну и в итоге выдает всю эту информацию в одну сточку.
Еще раз повторю, это было просто ради шутки. Никакой практической цели, кроме как поупражняться с многоуровневыми вложениями формул в формулы не было.
Just for fun))
Это чудо сокращается в разы с помощью волшебной функции ВПР и вспомогательных таблиц
впр не нужен. если нужны вспомогательные таблицы, то лучше использовать ИНДЕКС (намного гибче, и при использовании диапазонов читабельнее, ну и предсказуемее, тк при изменении таблицы данных не нужно лезть в формулу для изменения номера столбца). а конкретно здесь интереснее смотрелась формула ПОИСКПОЗ (т.к. нам нужен номер месяца). и доптаблицы не нужны. ПОИСКПОЗ(C4;{«январь»;«февраль»;«март»;«апрель»;«май»;«июнь»;«июль»;«август»;«сентябрь»;«октябрь»;«ноябрь»;«декабрь»};0)
Да, вы несомненно правы, я прекрасно знаю и много использую и ВПР, и ИНДЕКС в связке с ПОИСКПОЗ, и СУММЕСЛИМН с кучей условий, а также дополнительные вычисления на скрываемых листах… В общем много с экселем работаю.
Тут как раз была идея засунуть кучу различных вычислений именно в одну ячейку, просто ради забавы и собственно длинны всей этой формулы. Ну и чтобы это коррекетно работало в итоге.
Тут как раз была идея засунуть кучу различных вычислений именно в одну ячейку, просто ради забавы и собственно длинны всей этой формулы. Ну и чтобы это коррекетно работало в итоге.
Таких формул можно вагон и маленькую тележку нагуглить. Или не таких. Кто ж его знает, если просто вывалены куски кода без пояснений, как оно всё в Экселе работает.
Для всех кто пишет, что проще было на чем то другом сделать, скажу, что сам с таким сталкивался, когда делаешь для людей которые знают только эксель, а не аксесс или другие чудо базы.
Открывая статью, ожидал увидеть новые методы для уменьшения размеров этих формул, что-то вроде лайфхаков при работе с ними.
п.4
A1:A12 — числа от 1 до 12
B1 — год
A1:A12 — числа от 1 до 12
B1 — год
=СУММ(ЕСЛИ(ДЕНЬНЕД(ДАТА(B1;A1:A12;13);2)=5;1;0))
Эксель это круто, особенно с постоянным пересчетом данных. Но когда файл за 1 месяц растет на 2,5мб, то через 3 месяца, через сетевой диск — там просто не реально работать. Приходилось тупо руками убивать инфу за 1 месяц, а архив создавать в другом файле без формул.
Когда-то в 2006 году увидел «внутренние» sql-запросы в оракле на несколько десятков строк, такие длинные запросы с тех пор больше нигде не видел)))
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Excel и длинные формулы