Polytech-soft.com

ПК журнал
7 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Длинная формула excel

Microsoft Excel

трюки • приёмы • решения

Как в таблицах Excel создавать мегаформулы

В этой статье описан метод объединения нескольких промежуточных формул для создания одной длинной формулы (мегаформулы). Если вы уже поработали в Excel определенное время, то могли видеть длинные формулы, которые были практически непонятны. Здесь вы узнаете, как они были созданы.

Поставим цель создать одну формулу, которая удаляет отчество (например, Иван Павлович Петров становится Иваном Петровым). На рис. 125.1 показан лист с некоторыми именами и шесть столбцов промежуточных формул, которые выполняют задачу. Обратите внимание, что формулы несовершенны: они не могут обрабатывать имя из одного слова.

Рис. 125.1. Удаление средних имен и инициалов требует указания шести промежуточных формул или одной мегаформулы

Формулы, введенные в строке 2, приведены в таблице ниже.

ЯчейкаПромежуточная формулаДействие
B2=СЖПРОБЕЛЫ(A2)Удаляет избыточные пробелы
C2=НАЙТИ(» «;A2;1)Находит первый пробел
D2=НАЙТИ(» «;B2;C2+1)Находит второй пробел, если он есть
E2=ЕСЛИОШИБКА(D2;C2)Использует первый пробел, если нет второго
F2=ЛЕВСИМВ(B2;C2)Извлекает имя
G2=ПРАВСИМВ(B2;ДЛСТР(B2)-E2)Извлекает фамилию
H2=F2&G2Объединяет имя и фамилию

Затратив немного времени, вы можете исключить все промежуточные формулы и заменить их одной мегаформулой. Это можно сделать путем создания всех промежуточных формул и последующего редактирования окончательной формулы (в данном случае формулы в столбце Н) с заменой каждой ссылки на ячейку копией формулы в этой ячейке. К счастью, вы можете использовать буфер обмена для копирования и вставки формул, а не вводить их заново. Продолжайте этот процесс, пока ячейка H1 не станет содержать ничего, кроме ссылки на ячейку А1. В конечном итоге у вас получится следующая мегаформула в одной ячейке:

=ЛЕВСИМВ(СЖПРОБЕЛЫ(A2);НАЙТИ(» «;СЖПРОБЕЛЫ(A2);1))&ПРАВСИМВ(СЖПРОБЕЛЫ(A2);ДЛСТР(СЖПРОБЕЛЫ(A2))-ЕСЛИОШИБКА(НАЙТИ(» «;СЖПРОБЕЛЫ(A2);НАЙТИ(» «;СЖПРОБЕЛЫ(A2);1)+1);НАЙТИ(» «;СЖПРОБЕЛЫ(A2);1)))

Когда вы будете удовлетворены тем, как работает мегаформула, вы можете удалить столбцы, содержащие промежуточные формулы, потому что они больше не используются.

Если вам все еще не ясен описанный процесс, выполните его пошагово.

  1. Проверьте формулу в Н2. Она содержит две ссылки на ячейки (F2 и 62): =F2&G2
  2. Активизируйте ячейку G2 и скопируйте содержимое формулы (без знака равенства) в буфер обмена.
  3. Выберите ячейку Н2 и замените ссылку на ячейку G2 содержимым из буфера обмена. Теперь ячейка Н2 содержит следующую формулу:
    =F2&ПРАВСИМВ(B2; ДЛСТР(B2)-E2)
  4. Активизируйте ячейку F2 и скопируйте содержимое формулы (без знака равенства) в буфер обмена.
  5. Выберите ячейку Н2 и замените ссылку на ячейку F2 содержимым из буфера обмена. Теперь формула в ячейке Н2 следующая:
    =ЛЕВСИМВ(B2;C2)&ПРАВСИМВ(B2;ДЛСТР(B2)-E2)
  6. Ячейка Н2 на данный момент содержит ссылки на три ячейки (В2, С2 и Е2). Формулы в них заменяют каждую из ссылок на эти ячейки.
  7. Замените ссылку на ячейку Е2 формулой в Е2. В результате получаем:
    =ЛЕВСИМВ(B2;C2)&ПРАВСИМВ(B2;ДЛСТР(B2)-ЕСЛИОШИБКА(D2;C2))
  8. Скопируйте формулу из D2 и замените ссылки на ячейку D2.

=ЛЕВСИМВ(B2;C2)&ПРАВСИМВ(B2;ДЛСТР(B2)-ПРАВСИМВ(НАЙТИ(» «;B2;B2+1);C2))
В формуле есть три ссылки на ячейку С2.

  • Замените каждую из этих ссылок формулой, содержащейся в ячейке С2. Формула в ячейке Н2:
    =ЛЕВСИМВ(B2;НАЙТИ(» «;B2;1))&ПРАВСИМВ(B2;ДЛСТР(B2)-ЕСЛИОШИБКА(НАЙТИ(» «;B2;НАЙТИ(» «;B2;1);НАЙТИ(» «;B2;1)))
  • И, наконец, замените семь ссылок на ячейку В2 формулой в ячейке В2. В результате получаем:
    =ЛЕВСИМВ(СЖПРОБЕЛЫ(A2);НАЙТИ(» «;СЖПРОБЕЛЫ(A2);1))&ПРАВСИМВ(СЖПРОБЕЛЫ(A2);ДЛСТР(СЖПРОБЕЛЫ(A2))-ЕСЛИОШИБКА(НАЙТИ(» «;СЖПРОБЕЛЫ(A2);НАЙТИ(» «;СЖПРОБЕЛЫ(A2);1)+1);НАЙТИ(» «;СЖПРОБЕЛЫ(A2);1)))
  • Обратите внимание, что формула в ячейке Н2 теперь содержит ссылки только на ячейку А2. Мегаформула завершена и выполняет те же самые задачи, что и промежуточные формулы (которые теперь можно удалить). Вы можете, конечно, адаптировать этот метод для собственных нужд. Приятной особенностью является то, что одна мегаформула часто рассчитывается быстрее, чем несколько промежуточных формул.

    При замене ссылок на ячейки текстом формулы убедитесь, что формула продолжает отображать правильный результат после каждой замены. В некоторых ситуациях вам, возможно, понадобится поставить вокруг скопированной формулы круглые скобки.

    Длинная формула excel

    Дельта принтеры крайне требовательны к точности изготовления комплектующих (геометрия рамы, длины диагоналей, люфтам соединения диагоналей, эффектора и кареток) и всей геометрии принтера. Так же, если концевые выключатели (EndStop) расположены на разной высоте (или разный момент срабатывания в случае контактных концевиков), то высота по каждой из осей оказывается разная и мы получаем наклонную плоскость не совпадающая с плоскостью рабочего столика(стекла). Данные неточности могут быть исправлены либо механически (путем регулировки концевых выключателей по высоте), либо программно. Мы используем программный способ калибровки.
    Далее будут рассмотрены основные настройки дельта принтера.
    Для управления и настройки принтера мы используем программу Pronterface.
    Калибровка принтера делится на три этапа:

    1 Этап. Корректируем плоскость по трем точкам

    Выставление в одну плоскость трех точек — A, B, C (расположенных рядом с тремя направляющими). По сути необходимо уточнить высоту от плоскости до концевых выключателей для каждой из осей.
    Большинство (если не все) платы для управления трехмерным принтером (В нашем случае RAMPS 1.4) работают в декартовой системе координат, другими словами есть привод на оси: X, Y, Z.
    В дельта принтере необходимо перейти от декартовых координат к полярным. Поэтому условимся, что подключенные к двигателям X, Y, Z соответствует осям A, B, C.(Против часовой стрелки начиная с любого двигателя, в нашем случае смотря на логотип слева — X-A, справа Y-B, дальний Z-C) Далее при слайсинге, печати и управлении принтером в ручном режиме, мы будем оперировать классической декартовой системой координат, электроника принтера сама будет пересчитывать данные в нужную ей систему. Это условность нам необходима для понятия принципа работы и непосредственной калибровки принтера.

  • Обнуляем высоты осей X, Y, Z командой M666 x0 y0 z0.
    И сохраняем изменения командой M500. После каждого изменения настроек необходимо нажать home (или команда g28), для того что бы принтер знал откуда брать отсчет.
  • Калибровка принтера производится “на горячую”, то есть должен быть включен подогрев стола (если имеется) и нагрев печатающей головки (HotEnd’а) (Стол 60град., сопло 185 град.) Так же нам понадобится щуп, желательно металлический, известных размеров. Для этих задач вполне подойдет шестигранный ключ (самый большой, в нашем случае 8мм, он предоставляется в комплекте с принтерами Prizm Pro и Prizm Mini)
  • Опускаем печатающую головку на высоту (условно) 9мм (от стола, так, что бы сопло еле касалось нашего щупа, т.к. высота пока что не точно выставлена.) Команда: G1 Z9.
  • Теперь приступаем непосредственно к настройке наших трех точек.
    Для удобства можно вместо g- команд создать в Pronterface четыре кнопки, для перемещения печатающей головки в точки A, B, C, 0-ноль.

  • Последовательно перемещаясь между тремя точками (созданными ранее кнопками или командами) выясняем какая из них находится ниже всего (визуально) и принимает эту ось за нулевую, относительно нее мы будем менять высоту остальных двух точек.
  • Предположим, что точка A у нас ниже остальных. Перемещаем головку в точку B(Y) и клавишами управления высотой в Pronterface опускаем сопло до касания с нашим щупом, считая величину, на которую мы опустили сопло (в лоб считаем количество нажатий на кнопки +1 и +0.1)
    Далее командой меняем параметры высоты оси Y: M666 Y <посчитанная величина>
    M666 Y0.75
    M500
    G28
  • Ту же операцию проделываем с оставшимися осями. После чего следует опять проверить высоту всех точек, может получится, что разброс высот после первой калибровки уменьшится, но высота все равно будет отличатся, при этом самая низкая точка может изменится. В этом случае повторяем пункты 6-7.
  • 2 Этап. Исправляем линзу

    После того как мы выставили три точки в одну плоскость необходимо произвести коррекцию высоты центральной точки. Из за особенности механики дельты при перемещении печатающей головки между крайними точками в центре она может пройти либо ниже либо выше нашей плоскости, тем самым мы получаем не плоскость а линзу, либо вогнутую либо выпуклую.

    Важно: Вычисляемые результаты формул и некоторые функции листа Excel могут несколько отличаться на компьютерах под управлением Windows с архитектурой x86 или x86-64 и компьютерах под управлением Windows RT с архитектурой ARM. Подробнее об этих различиях.

    Создание формулы, ссылающейся на значения в других ячейках

    Введите знак равенства «=».

    Примечание: Формулы в Excel начинаются со знака равенства.

    Выберите ячейку или введите ее адрес в выделенной.

    Введите оператор. Например, для вычитания введите знак «минус».

    Выберите следующую ячейку или введите ее адрес в выделенной.

    Нажмите клавишу ВВОД. В ячейке с формулой отобразится результат вычисления.

    Просмотр формулы

    При вводе в ячейку формула также отображается в строке формул.

    Чтобы просмотреть формулу, выделите ячейку, и она отобразится в строке формул.

    Ввод формулы, содержащей встроенную функцию

    Выделите пустую ячейку.

    Введите знак равенства «=», а затем — функцию. Например, чтобы получить общий объем продаж, нужно ввести «=СУММ».

    Введите открывающую круглую скобку «(«.

    Выделите диапазон ячеек, а затем введите закрывающую круглую скобку «)».

    Нажмите клавишу ВВОД, чтобы получить результат.

    Скачивание книги «Учебник по формулам»

    Мы подготовили для вас книгу Начало работы с формулами, которая доступна для скачивания. Если вы впервые пользуетесь Excel или даже имеете некоторый опыт работы с этой программой, данный учебник поможет вам ознакомиться с самыми распространенными формулами. Благодаря наглядным примерам вы сможете вычислять сумму, количество, среднее значение и подставлять данные не хуже профессионалов.

    Подробные сведения о формулах

    Чтобы узнать больше об определенных элементах формулы, просмотрите соответствующие разделы ниже.

    Формула также может содержать один или несколько таких элементов, как функции, ссылки, операторы и константы.

    1. Функции. Функция ПИ() возвращает значение числа пи: 3,142.

    2. Ссылки. A2 возвращает значение ячейки A2.

    3. Константы. Числа или текстовые значения, введенные непосредственно в формулу, например 2.

    4. Операторы. Оператор ^ (крышка) применяется для возведения числа в степень, а * (звездочка) — для умножения.

    Константа представляет собой готовое (не вычисляемое) значение, которое всегда остается неизменным. Например, дата 09.10.2008, число 210 и текст «Прибыль за квартал» являются константами. выражение или его значение константами не являются. Если формула в ячейке содержит константы, а не ссылки на другие ячейки (например, имеет вид =30+70+110), значение в такой ячейке изменяется только после редактирования формулы. Обычно лучше помещать такие константы в отдельные ячейки, где их можно будет легко изменить при необходимости, а в формулах использовать ссылки на эти ячейки.

    Ссылка указывает на ячейку или диапазон ячеек листа и сообщает Microsoft Excel, где находятся необходимые формуле значения или данные. С помощью ссылок можно использовать в одной формуле данные, находящиеся в разных частях листа, а также использовать значение одной ячейки в нескольких формулах. Вы также можете задавать ссылки на ячейки разных листов одной книги либо на ячейки из других книг. Ссылки на ячейки других книг называются связями или внешними ссылками.

    Стиль ссылок A1

    По умолчанию Excel использует стиль ссылок A1, в котором столбцы обозначаются буквами (от A до XFD, не более 16 384 столбцов), а строки — номерами (от 1 до 1 048 576). Эти буквы и номера называются заголовками строк и столбцов. Для ссылки на ячейку введите букву столбца, и затем — номер строки. Например, ссылка B2 указывает на ячейку, расположенную на пересечении столбца B и строки 2.

    Ячейка или диапазон

    Ячейка на пересечении столбца A и строки 10

    Диапазон ячеек: столбец А, строки 10-20.

    Диапазон ячеек: строка 15, столбцы B-E

    Все ячейки в строке 5

    Все ячейки в строках с 5 по 10

    Все ячейки в столбце H

    Все ячейки в столбцах с H по J

    Диапазон ячеек: столбцы А-E, строки 10-20

    Создание ссылки на ячейку или диапазон ячеек с другого листа в той же книге

    В приведенном ниже примере функция СРЗНАЧ вычисляет среднее значение в диапазоне B1:B10 на листе «Маркетинг» в той же книге.

    1. Ссылка на лист «Маркетинг».

    2. Ссылка на диапазон ячеек от B1 до B10

    3. Восклицательный знак (!) отделяет ссылку на лист от ссылки на диапазон ячеек.

    Примечание: Если название упоминаемого листа содержит пробелы или цифры, его нужно заключить в апострофы (‘), например так: ‘123’!A1 или =’Прибыль за январь’!A1.

    Различия между абсолютными, относительными и смешанными ссылками

    Относительные ссылки . Относительная ссылка в формуле, например A1, основана на относительной позиции ячейки, содержащей формулу, и ячейки, на которую указывает ссылка. При изменении позиции ячейки, содержащей формулу, изменяется и ссылка. При копировании или заполнении формулы вдоль строк и вдоль столбцов ссылка автоматически корректируется. По умолчанию в новых формулах используются относительные ссылки. Например, при копировании или заполнении относительной ссылки из ячейки B2 в ячейку B3 она автоматически изменяется с =A1 на =A2.

    Скопированная формула с относительной ссылкой

    Абсолютные ссылки . Абсолютная ссылка на ячейку в формуле, например $A$1, всегда ссылается на ячейку, расположенную в определенном месте. При изменении позиции ячейки, содержащей формулу, абсолютная ссылка не изменяется. При копировании или заполнении формулы по строкам и столбцам абсолютная ссылка не корректируется. По умолчанию в новых формулах используются относительные ссылки, а для использования абсолютных ссылок надо активировать соответствующий параметр. Например, при копировании или заполнении абсолютной ссылки из ячейки B2 в ячейку B3 она остается прежней в обеих ячейках: =$A$1.

    Скопированная формула с абсолютной ссылкой

    Смешанные ссылки Смешанная ссылка содержит абсолютный столбец и относительную строку, а также абсолютную строку и относительный столбец. Абсолютная ссылка на столбец имеет форму $A 1, $B 1 и т. д. Абсолютная ссылка на строку имеет форму $1, B $1 и т. д. При изменении положения ячейки, содержащей формулу, относительная ссылка будет изменена, а абсолютная ссылка не изменится. Если вы копируете или заполните формулу в строках или столбцах, относительная ссылка автоматически корректируется, а абсолютная ссылка не изменяется. Например, при копировании и заполнении смешанной ссылки из ячейки a2 в ячейку B3 она корректируется с = A $1 на = B $1.

    Скопированная формула со смешанной ссылкой

    Стиль трехмерных ссылок

    Удобный способ для ссылки на несколько листов Трехмерные ссылки используются для анализа данных из одной и той же ячейки или диапазона ячеек на нескольких листах одной книги. Трехмерная ссылка содержит ссылку на ячейку или диапазон, перед которой указываются имена листов. В Microsoft Excel используются все листы, указанные между начальным и конечным именами в ссылке. Например, формула =СУММ(Лист2:Лист13!B5) суммирует все значения, содержащиеся в ячейке B5 на всех листах в диапазоне от Лист2 до Лист13 включительно.

    При помощи трехмерных ссылок можно создавать ссылки на ячейки на других листах, определять имена и создавать формулы с использованием следующих функций: СУММ, СРЗНАЧ, СРЗНАЧА, СЧЁТ, СЧЁТЗ, МАКС, МАКСА, МИН, МИНА, ПРОИЗВЕД, СТАНДОТКЛОН.Г, СТАНДОТКЛОН.В, СТАНДОТКЛОНА, СТАНДОТКЛОНПА, ДИСПР, ДИСП.В, ДИСПА и ДИСППА.

    Трехмерные ссылки нельзя использовать в формулах массива.

    Трехмерные ссылки нельзя использовать вместе с оператор пересечения (один пробел), а также в формулах с неявное пересечение.

    Что происходит при перемещении, копировании, вставке или удалении листов . Нижеследующие примеры поясняют, какие изменения происходят в трехмерных ссылках при перемещении, копировании, вставке и удалении листов, на которые такие ссылки указывают. В примерах используется формула =СУММ(Лист2:Лист6!A2:A5) для суммирования значений в ячейках с A2 по A5 на листах со второго по шестой.

    Вставка или копирование. Если вставить листы между листами 2 и 6, Microsoft Excel прибавит к сумме содержимое ячеек с A2 по A5 на новых листах.

    Удаление . Если удалить листы между листами 2 и 6, Microsoft Excel не будет использовать их значения в вычислениях.

    Перемещение . Если листы, находящиеся между листом 2 и листом 6, переместить таким образом, чтобы они оказались перед листом 2 или после листа 6, Microsoft Excel вычтет из суммы содержимое ячеек с перемещенных листов.

    Перемещение конечного листа . Если переместить лист 2 или 6 в другое место книги, Microsoft Excel скорректирует сумму с учетом изменения диапазона листов.

    Удаление конечного листа . Если удалить лист 2 или 6, Microsoft Excel скорректирует сумму с учетом изменения диапазона листов.

    Стиль ссылок R1C1

    Можно использовать такой стиль ссылок, при котором нумеруются и строки, и столбцы. Стиль ссылок R1C1 удобен для вычисления положения столбцов и строк в макросах. При использовании стиля R1C1 в Microsoft Excel положение ячейки обозначается буквой R, за которой следует номер строки, и буквой C, за которой следует номер столбца.

    относительная ссылка на ячейку, расположенную на две строки выше в том же столбце

    Относительная ссылка на ячейку, расположенную на две строки ниже и на два столбца правее

    Абсолютная ссылка на ячейку, расположенную во второй строке второго столбца

    Относительная ссылка на строку, расположенную выше текущей ячейки

    Абсолютная ссылка на текущую строку

    При записи макроса в Microsoft Excel для некоторых команд используется стиль ссылок R1C1. Например, если записывается команда щелчка элемента Автосумма для вставки формулы, суммирующей диапазон ячеек, в Microsoft Excel при записи формулы будет использован стиль ссылок R1C1, а не A1.

    Чтобы включить или отключить использование стиля ссылок R1C1, установите или снимите флажок Стиль ссылок R1C1 в разделе Работа с формулами категории Формулы в диалоговом окне Параметры. Чтобы открыть это окно, перейдите на вкладку Файл.

    Дополнительные сведения

    Вы всегда можете задать вопрос специалисту Excel Tech Community, попросить помощи в сообществе Answers community, а также предложить новую функцию или улучшение на веб-сайте Excel User Voice.

    Excel и длинные формулы

    VBA – очень полезная вещь. Можно консолидировать данные из многих файлов и обрабатывать большие объемы информации с использованием интересных алгоритмов. Например, макрос Nodupes. Он использует возникающую в процессе выполнения кода ошибку как проверку наличия элемента в формируемой коллекции. Есть макросы, использующие рекурсию для формирования всех возможных комбинаций и перестановок.

    Но я бы хотел показать несколько примеров использования стандартных функций листа программы Excel. Достаточно часто приходится городить огород из формул, чтобы вытащить из ячеек нужный текст или числа. Происходит это как правило из-за неверного представления данных. Числа — это числа, текст — это текст, не надо их смешивать. Даты (и время) это числа, с которыми можно и нужно производить вычисления. Не надо путать 14.03.2018 с 14 марта 2018 г. Второе это только пользовательский формат даты [$-F800], то, что мы видим в ячейке, а в строке формул будет 14.03.2018. И хватит об этом.

    1. Допустим у вас есть таблица с временами начала и окончания каких-то событий, например, телефонных разговоров.

    На рисунке часть таблицы _t2. Необходимо вычислить максимальное одновременное количество событий. Для этого есть такая формула:

    Формула массивная, ввод подтверждается одновременным нажатием кнопок Control, Shift, Enter (CSE). В строке формул будет видно, что формула в фигурных скобках. МУМНОЖ делает виртуальную матрицу размером число строк таблица на число строк таблицы, в строках которой результаты вычисления, как если бы в строки таблицы была введена следующая формула (для второй строки) =СУММПРОИЗВ(Ч((C$2:C2>A2)))/ =SUMPRODUCT(N((C$2:C2>A2))), и протянуть на всю таблицу.

    2. То же самое, но посложнее. Кроме начала и окончания есть количество агрегатов или отдаваемая/получаемая мощность. Необходимо определить максимальную мощность в какой-то момент времени.

    Часть таблицы _t1:

    Поскольку время — это доля единицы, умножаем значения на количество минут в сутках, чтобы получить целые числа. И второй аргумент МУМНОЖ – столбец значений мощности. В первом случае был сформирован столбец единиц.

    3. Слева в таблице представлены суммы, соответствующие определенным интервалам. Необходимо вычислить суммы по месяцам. Предполагается, что суммы распределены равномерно внутри своих интервалов.

    В столбце Н первые числа месяцев, в столбце I следующие формулы:

    Формулы массивные. Можно было бы использовать СУММПРОИЗВ/SUMPRODUCT, но ЕСЛИОШИБКА не работает без массивного ввода. Также, к сожалению, МАКС и МИН не могут сформировать виртуальный массив значений. Поэтому для вычисления частей интервалов, приходящихся на месяц, используется ЕСЛИ. Так как полученные части могут быть отрицательными, искусственно вызывается ошибка (квадратный корень из отрицательного числа приводит к ней). В исходной таблице можно было обойтись без столбцов длительности интервала и дневной суммы. Формула стала бы немного длиннее.

    4. Небольшое развлечение. Сколько в году может быть счастливых пятниц?

    Это очень хорошо (здесь), что первая строка листа соответствует 01.01.1901. Поэтому достаточно легко сформировать массив дат года с помощью ИНДЕКС и СТРОКА и считать только пятницы тринадцатое.

    5. Размер процентной ставки, зависящей от суммы, встречается достаточно часто. Если пользоваться ими неправильно, то график полученных сумм будет такой как красный график ниже:

    Чтобы этого избежать, необходимо применять ставку только к части суммы, приходящейся на интервал. А для младших интервалов брать фиксированные суммы.

    Для таких исходных данных:

    Формула массивная. В А3 – сумма, для которой нужно вычислить проценты. Исходные данные –tbl.
    И, напоследок, кредитная линия с изменяемой процентной ставкой. Формула для расчета суммы процентов в зависимости от дат/сумм траншей/возвратов.

    Формула массивная. Считает проценты по дням, учитывает високосные года.

    Спасибо за внимание!

    Ой, у вас баннер убежал!

    Редакторский дайджест

    Присылаем лучшие статьи раз в месяц

    Скоро на этот адрес придет письмо. Подтвердите подписку, если всё в силе.

    • Скопировать ссылку
    • Facebook
    • Twitter
    • ВКонтакте
    • Telegram
    • Pocket

    Похожие публикации

    • 23 марта 2013 в 23:37

    Microsoft показала «умный» Excel — «формулы» можно задавать на «обычном» языке

    Талмуд по формулам в Google SpreadSheet

    Инъекция Excel-формул в Google Docs

    Вакансии

    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Комментарии 59

    =ЕСЛИ(B1=0; СУММ(ЕСЛИОШИБКА(ПРОСМОТР(_d;_s[[date]:[rate]]);)*ТРАНСП(B5:B16)*ИНДЕКС((_d>ТРАНСП(A5:A16))*(_d ТРАНСП(C5:C16))*(_d

    И самое стрёмное, что «ЕСЛИ(B1=0; СУММ(. » не работает на компьютерах иностранцев.

    Тот кто придумал в Excel пихать формулы на русском — является диверсантом.

    И самое стрёмное, что «ЕСЛИ(B1=0; СУММ(. » не работает на компьютерах иностранцев.

    Тот кто придумал в Excel пихать формулы на русском — является диверсантом.

    нужно автоматизировать рабочее место продавщицы/телефонистки

    сторонний софт устанавливать нельзя, админских прав нет

    Статья была бы полезной, если бы автор разжевал все эти редкие функции и сначала показал, как они работают, на тривиальных примерах. А потом уже перешёл бы к реальным применениям.

    А тут вывалили сразу трёхэтажный код и разбираться в нём неохота.

    Мой единственный положительный опыт использования Экселя сводится к написанию прайс-листов с автоматическим пересчетом рублевой цены в соответствии с текущим курсом. Но было это во времена версии 1, когда эксель представлял собой именно простую электронную таблицу, да и формула, как Вы понимаете, была простейшей. Более поздние несколько попыток его использовать были с отрицательным результатом, каждый раз приходил к выводу, что я, если и не быстрее, то с меньшей затратой сил и меньшим количеством ошибок напишу свою программу конкретно под данную задачу. А когда обнаружил еще и ошибку в его математике на уровне третьей значащей цифры на определенном наборе данных (по-моему, это была версия из офиса 97), то вообще перестал рассматривать возможность его использования для чего-либо, кроме как визуализации готовых сторонних данных, и это был уже не Эксель, а Calc из Libre Office.

    Подсветка парных скобок — это, конечно, лучше, чем ничего, но, если бы авторы Экселя изначально рассчитывали на обработку формул подобной сложности, то должны были бы предусмотреть хоть какое-то структурирование текста.

    Писать мегаформулы это путь экономиста ) Программист нажмет правую кнопочку мыши на ярлыке листа, выберет «исходный код» и напишет на VBA функцию с отступами. Далее будет вызывать ее =МояМегаФормула(A1:A100). Там еще и отладчик есть.

    Хабр — это вон там. А тут не все местные являются программистами 🙂

    Если макрос написан по уму и использует Named Ranges вместо абсолютных адресов, то останется рабочим.

    По моему опыту, основная проблема с макросами — что с каждой версией Офиса всё сложнее и сложнее разрешить их выполнение, причём эти разрешения забываются при апгрейде.

    что с каждой версией Офиса всё сложнее и сложнее разрешить их выполнение

    разрешения забываются при апгрейде

    Формула массивная
    Не очень-то она массивная. Скорее это — «формула массива»

    =ЕСЛИ(ИЛИ(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)))) января)
    3) вычисляет день недели для выбранной даты
    4) сравнивает с сегодняшней датой и выдает «уже было», «сегодня» или «только будет», ну и в итоге выдает всю эту информацию в одну сточку.

    Еще раз повторю, это было просто ради шутки. Никакой практической цели, кроме как поупражняться с многоуровневыми вложениями формул в формулы не было.
    Just for fun))

    Таких формул можно вагон и маленькую тележку нагуглить. Или не таких. Кто ж его знает, если просто вывалены куски кода без пояснений, как оно всё в Экселе работает.

    Читать еще:  Как отфильтровать в excel одинаковые данные
    Ссылка на основную публикацию
    Adblock
    detector