Часто ли Вам приходилось разбирать чужой файл с непонятными на первый взгляд формулами? Вроде считают, но как? Вроде и разобраться хочется как работает какая-нибудь мега-формула - но как это сделать? Я хочу рассказать о паре простых шагов, которые необходимо сделать, чтобы разобраться в работе любой формулы. Давайте попробуем разобраться на примере формулы из моей статьи: Как получить список уникальных(не повторяющихся) значений?:
Что нам понадобится для начала:
- Знать что такое формула
- Знать что такое формула массива
- Не лениться заглядывать в справку по неизвестной функции. Как это сделать: ставим курсор мыши на интересующую формулу и жмем F1(в Excel 2003 и более ранних версиях только так можно). Начиная с Excel 2007 можно еще и иначе: ставим курсор внутрь функции - появится подсказка по функции. После чего нажимаем на имя функции из подсказки:
Чем это поможет? Чтобы понять как работает формула в целом, необходимо знать, что делает каждая функция в неё вложенная и для чего предназначены её аргументы хотя бы в общих чертах. - Не обязательно, но желательно скачать файл, приложенный к статье Как получить список уникальных(не повторяющихся) значений?, чтобы наглядно пройти все шаги, описанные ниже
Скачать пример: Tips_All_ExtractUnique.xls (108,0 КиБ, 19 648 скачиваний)
Вот теперь можно начать потрошить формулу. В принципе, самый сложный этап уже пройден. Теперь остается только воспользоваться встроенным средством Excel - окно просмотра этапов вычислений формулы. Выделяем ячейку с нужной формулой и:
вкладка Формулы-группа кнопок Зависимости формул-Вычислить формулу
Сервис-Зависимости формул-Вычислить формулу
Появится форма
После каждого нажатия на кнопку Вычислить
Далее будет произведено вычисление логического выражения
Этот результат(ИСТИНА, ЛОЖЬ) обрабатывается далее функцией
Т.к. функция
Чтобы в этом примере было более просто разобраться(насколько это возможно), коротко расскажу о принципе работы этой формулы: если значение из диапазона
Помимо кнопки Вычислить в этом окне есть и другие: Шаг с заходом
Небольшой практический совет: если используете инструмент Вычислить формулу для поиска ошибки в своей формуле для поиска ошибки и в формуле используются слишком большие диапазоны, то просматривать по шагам такую формулу неудобно. Чтобы было проще - можно уменьшить диапазоны ячеек до 10, выделить ячейку с ошибочным результатом и посмотреть этап вычисления - все участвующие ячейки будут на виду и проще будет понять где ошибка.
Конечно, если формулу создал кто-то другой такой подход не всегда справедлив для сложных формул, т.к. изменение диапазонов без понимания для чего они может привести к нерабочей формуле и в этом случае смотреть этапы вычисления бесполезно.
Есть еще одна возможность анализировать этапы вычислений. Необходимо выделить ячейку с нужной формулой, перейти в строку формул и там выделить фрагмент формулы, результат вычисления которого требуется получить:
после чего, не снимая выделения нажимаем клавишу F9. Выделенный блок формулы будет вычислен и результат будет помещен на место выделенного блока формулы:
Мне этот метод нравится меньше, т.к. он не показывает именно шаги вычисления, а вычисляет разом выделенный блок. Поэтому его можно применять в случаях, когда порядок вычисления известен и надо лишь убедиться, что интересующий блок формулы работает правильно.
Здравствуйте! Подскажите пожалуйста новичку! Почему при добавление новой строки перед массивом (Главная-> Вставить -> Вставить строки на лист) Все значения в формуле =ИНДЕКС($A$2:$A$51;НАИМЕНЬШИЙ(ЕСЛИ(СЧЁТЕСЛИ($C$1:C1;$A$2:$A$51)=0;СТРОКА($A$1:$A$50));1))
меняются на новые:
=ИНДЕКС($A$3:$A$52;НАИМЕНЬШИЙ(ЕСЛИ(СЧЁТЕСЛИ($C$1:C1;$A$3:$A$52)=0;СТРОКА($A$1:$A$51));1))
корректирую до таких:
=ИНДЕКС($A$3:$A$52;НАИМЕНЬШИЙ(ЕСЛИ(СЧЁТЕСЛИ($C$2:C2;$A$3:$A$52)=0;СТРОКА($A$2:$A$52));1)),
а формула не работает?
Заранее благодарен за помощь!
Только вот вы забыли упомянуть тот факт, что ИНДЕКС работает с номерами строк из указанного массива, а СТРОКА с номерами строк самого рабочего листа. Поэтому нельзя так просто взять и указать одинаковые диапазоны в этих двух функциях.
Изучите для начала мат.часть. Функция СТРОКА вернет номер строки листа, если не указано аргументов. Но если указан аргумент(ссылка на ячейку/диапазон) - функция вернет номер строки именно указанной ячейки. И приведенная мной формула, которая разбирается в статье работает на все 100%, что говорит о том, что все же можно вот так взять и указать одинаковые диапазоны в этих двух функциях. Главное понимать для чего это делается.
Интересное решение, но мне кажется более наглядным потрошить формулу руками, разделяя её по ячейкам. Тогда можно рядом с каждой описать смысл конкретного куска и понять общий механизм формулы, модифицировать... ну, или выявить ошибки. Может есть какой-то макрос, который бы раскидывал формулу таким образом (без описания, естественно)?..