Excel для Microsoft 365 Excel для Microsoft 365 для Mac Excel для Интернета Excel 2021 Excel 2021 для Mac Excel 2019 Excel 2019 для Mac Excel 2016 Excel 2016 для Mac Excel 2013 Excel 2010 Excel 2007 Еще…Меньше
Проблема
Объект _xlfn. Префикс отображается перед функцией в формуле. Когда формула вычисляется, отображается #NAME? (значение ошибки).
Причина
Книга Excel содержит функцию, которая не поддерживается в версии Excel, которая выполняется в данный момент. Например, вы могли открыть книгу, содержащую функцию IFERROR, которая не поддерживается в версиях Excel более ранних версий, чем Excel 2007. Функции, которые не поддерживаются в версиях Excel, предшествующих Excel 2007, включают: AVERAGEIF, AVERAGEIFS, MAXIFS, MINIFS, IFS, CUBEKPIMEMBER, CUBEMEMBER, CUBEMEMBERPROPERTY, CUBERANKEDMEMBER, CUBESET, CUBESETCOUNT, CUBEVALUE, COUNTIFS, IFERROR и SUMIFS.
Решение
Удалите неподдерживаемые функции или, если возможно, замените неподдерживаемые функции поддерживаемыми функциями.
Дополнительные сведения
Вы всегда можете задать вопрос специалисту Excel Tech Community или попросить помощи в сообществе Answers community.
См. также
Функции Excel (по алфавиту)
Функции Excel (по категориям)
Нужна дополнительная помощь?
Нужны дополнительные параметры?
Изучите преимущества подписки, просмотрите учебные курсы, узнайте, как защитить свое устройство и т. д.
В сообществах можно задавать вопросы и отвечать на них, отправлять отзывы и консультироваться с экспертами разных профилей.
Хитрости »
30 Ноябрь 2022 4318 просмотров
Иногда, при работе с «чужими» файлами(т.е. с теми, которые были созданы или отредактированы на другом ПК), в формулах можно встретить формулы, которые начинаются на =_xlfn.(нечто вроде: =_xlfn.MAXIFS, _xlfn.IFERROR и т.п.)
При первом открытии файла такие функции показывают последний успешно вычисленный результат и при вычислении не обновляются, а если попытаться их пересчитать вручную, то в результате можно получить ошибку #ИМЯ!(#NAME!).
Что это и откуда? Для начала попробуем разобраться откуда берется это загадочное _xlfn. и что оно означает. Таким префиксом обозначаются функции, которые были созданы в более новых версиях Excel(чем та, в которой на данный момент открыт файл) и в текущей версии отсутствуют. По сути они читаются как =_xlfn.ИМЯ_ФУНКЦИИ. Например, =_xlfn.MAXIFS – это функция МАКСЕСЛИ(MAXIFS), _xlfn.IFERROR – ЕСЛИОШИБКА(IFERROR), _xlfn.UNIQUE – УНИК(UNIQUE) и т.д. Т.е. после самого префикса _xlfn идет как раз имя недоступной функции на английском. Если Вы увидели такой префикс в своем Excel в какой-либо формуле на листе — значит ваш Excel не поддерживает ту функцию, которая указана после префикса _xlfn.
Ниже перечень некоторых функций с их переводом на русскую локализацию и версии, начиная с которых эти функции будут работать(соответственно для версий ниже функции недоступны):
| Префикс | Функция и доступность |
|---|---|
| _xlfn.IFERROR | ЕСЛИОШИБКА (доступна, начиная с Excel 2007) |
| _xlfn.AGGREGATE | АГРЕГАТ (доступна, начиная с Excel 2010) |
| _xlfn.GAMMA | ГАММА (доступна, начиная с Excel 2013) |
| _xlfn.MAXIFS | МАКСЕСЛИ (доступна, начиная с Excel 2019 и в Excel 365) |
| _xlfn.MINIFS | МИНЕСЛИ (доступна, начиная с Excel 2019 и в Excel 365) |
| _xlfn.CONCAT | СЦЕП (доступна, начиная с Excel 2019 и в Excel 365) |
| _xlfn.SORTBY | СОРТПО (доступна, начиная с Excel 2019 и в Excel 365) |
| _xlfn.XLOOKUP | ПРОСМОТРХ (доступна, начиная с Excel 2021 и в Excel 365) |
| _xlfn.UNIQUE | УНИК (доступна, начиная с Excel 2021 и в Excel 365) |
| _xlfn.LAMBDA | LAMBDA (доступна только в Excel 365) |
| _xlfn.TOCOL | ПОСТОЛБЦ (доступна только в Excel 365) |
| _xlfn.TOROW | ПОСТРОК (доступна только в Excel 365) |
Конечно, в этой таблице перечислены далеко не все функции и их может быть гораздо больше и список будет расти, т.к. Microsoft на данный момент постоянно пополняет коллекцию функций в новых версиях.
Как же появляется это самое _xlfn.ИМЯ_ФУНКЦИИ и откуда Excel вообще понимает, какой именно функции нет и что писать после _xlfn, если в самом текущем Excel такой функции нет? Здесь все достаточно просто — _xlfn.ИМЯ_ФУНКЦИИ создается в тот момент, когда на лист записывается функция, у которой могут быть проблемы с вычислением в более старых версиях. Т.е. создается это в самой исходной книге и еще в той версии Excel, которая эту функцию успешно может вычислить. А записывается в диспетчер имен, как новая именованная формула(вкладка Формулы(Formulas) —Диспетчер имен(Name Manager)). При этом имена эти создаются скрытыми – т.е. просто вызвав диспетчер имен мы эти все _xlfn не увидим. И удалить эти имена тоже нельзя, даже если до них добраться.
Так же можно встретить и чуть иной префикс: _xlfn._xlws.SORT и _xlfn._xlws.FILTER. Это как правило относится к формулам динамических массивов. SORT – СОРТ и FILTER – ФИЛЬТР. Эти функции записываются всегда только в одну ячейку, но результат возвращают сразу в несколько. При этом количество занимаемых ячеек в итоге динамически изменяется в зависимости от того, сколько строк и столбцов передано в качестве исходных данных и сколько после обработки было возвращено функцией.
А еще есть и такие имена: _xlfn.ANCHORARRAY и _xlfn.SINGLE. Они тоже относятся к динамическим массивам, но не являются напрямую именно функциями:
Можно ли исправить?
Как же быть, если одна из таких функций попалась в файле? Можно ли как-то её все же сделать вычисляемой?
Для того, чтобы ответить на эти вопросы разберемся
для чего это придумано
. Сделано такое именование(
_xlfn.ИМЯ_ФУНКЦИИ
) неподдерживаемых функций для того, чтобы можно было безошибочно определить, какая именно функция не доступна и при этом не сломать всю формулу, в которой такая функция используется. Но вычислить её, увы, не получится никак. Ведь раз появилось
_xlfn
— функции просто нет в текущей версии, а значит вычислить именно её невозможно. Но если определить имя функции(которое записано после префикса) — можно обратиться к справке Microsoft, найти эту функцию и попробовать заменить её доступной функцией(или связкой функций), которая будет выполнять ту же задачу. Да, далеко не всегда для этого может хватить знаний, а в некоторых случаях и вовсе придется использовать VBA для восполнения функционала, т.к. какие-то функции будет невозможно воспроизвести встроенными. Но других вариантов все равно нет: либо так, либо устанавливать ту версию Excel, в которой эти функции есть.
В данной статье я, к сожалению, тоже никаких однозначных рекомендаций по замене
_xlfn
не дам, т.к. все зависит от конкретной задачи, которая выполняется функцией. Могу лишь привести пару примеров простой замены. Например, возьмем классическую ситуацию — есть таблица отгрузок товара:
надо определить самую минимальную, но при этом не учитывать нулевые отгрузки, т.к. в выходные отгрузка не производится, но в отчете нулевые отгрузки все же есть. В Excel 2019 и новее можно применить одну функцию:
=МИНЕСЛИ(B2:B10;B2:B10;»>0″)
=MINIFS(B2:B10,B2:B10,»>0″)
в более старых версиях вместо неё появится =
_xlfn.MINIFS(B2:B10;B2:B10;»>0″)
и её придется заменить такой формулой массива:
=МИН(ЕСЛИ(B2:B10>0;B2:B10))
=MIN(IF(B2:B10>0,B2:B10))
Или другая задача, которая в Excel 2019 и новее легко решается функцией
МАКСЕСЛИ(MAXIFS)
. Из таблицы ниже необходимо определить максимальную сумму по операции «приход»:
=МАКСЕСЛИ(A2:A10;B2:B10;»приход»)
=MAXIFS(A2:A10,B2:B10,»приход»)
в более старых версиях придется опять же решать задачу при помощи нескольких функций формулой массива:
=МАКС(ЕСЛИ(B2:B10=»приход»;A2:A10))
=MAX(IF(B2:B10=»приход»,A2:A10))
А такие функции как
СОРТ(SORT)
и
ФИЛЬТР(FILTER)
так просто заменить не получится — там уже необходимо применять достаточно серьезные связки функций, да еще и заранее определять минимально необходимое количество ячеек для вывода результата и обрабатывать ошибки «лишних» строк.
Статья помогла? Поделись ссылкой с друзьями!
Видеоуроки
Поиск по меткам
Access
apple watch
Multex
Power Query и Power BI
VBA управление кодами
Бесплатные надстройки
Дата и время
Записки
ИП
Надстройки
Печать
Политика Конфиденциальности
Почта
Программы
Работа с приложениями
Разработка приложений
Росстат
Тренинги и вебинары
Финансовые
Форматирование
Функции Excel
акции MulTEx
ссылки
статистика
for i,cellObj in enumerate(sheet_formula['R'],1):
cellObj.value='= days($AG$1,C{0})'.format(i)
sheet_formula.cell(row=1, column=18).value = 'Days Since'
using this concept to enter the excel formula in excel
after entering excel formula in excel i am getting «#NAME?» in excel column i don’t know where i am doing wrong
asked Feb 18, 2020 at 7:35
4
open-pyxl does not work with some of the excel function. add the full name as such:
= days($AG$1,C{0})’.format(i)
change to = _xlfn.days($AG$1,C{0})’.format(i)
And it will be working correctly.
If you’re trying to use a formula that isn’t known this could be because you’re using a formula that was not included in the initial specification. Such formulae must be prefixed with xlfn. to work.
To check if a formula is included you can use:
from openpyxl.utils import FORMULAE
print «DAYS» in FORMULAE
if it false then _xlfn prefixed before the function
answered Feb 19, 2020 at 6:56
|
Galina15 Пользователь Сообщений: 3 |
В файле, при открытии на компьютере, в фомулах, появляется префикс _xlfn.IFS. На экране смартфона отображается все корректно. Подскажите, пож, что можно сделать? |
|
Alec Perle Пользователь Сообщений: 172 |
#2 25.02.2020 11:00:17
Открывается, вероятно, максимально корректно в данных условиях. Дело в том, что функция IFS (ЕСЛИМН) появилась в Excel 2016. |
||
|
sokol92 Пользователь Сообщений: 4456 |
Это — общий механизм. Если Excel открывает файл, в котором используется встроенная функция из более поздних версий, то к имени (англоязычному) такой функции добавляется префикс «_xlfn.» Уточнение: IFS появилась в 2019. Изменено: sokol92 — 25.02.2020 15:12:21 |
|
БМВ Модератор Сообщений: 21650 Excel 2013, 2016 |
#4 25.02.2020 15:11:14
2019 IFS function Excel for Office 365, Excel for Office 365 for Mac, Excel for the web, Excel 2019, Excel 2019 for Mac, Less По вопросам из тем форума, личку не читаю. |
||
|
Galina15 Пользователь Сообщений: 3 |
Спасибо всем огромное за ответ! Пожалуйста, подскажите, можно самостоятельно и без денег установить Excel 2016 или 2019? |
|
БМВ Модератор Сообщений: 21650 Excel 2013, 2016 |
#6 25.02.2020 15:43:19
Конечно можно, если у вас админские права на машине, установщик подскажет по шагам что делать. По вопросам из тем форума, личку не читаю. |
||
|
Galina15 Пользователь Сообщений: 3 |
БМВ, спасибо Вам!!!! Вы мой спаситель! Подскажите, пож, еще, для тех, кто в танке, где можно скачать excel2016 или 2019 для установки на компе. пробую сейчас, какие-то другие программы пытаются подгрузиться. |
|
БМВ Модератор Сообщений: 21650 Excel 2013, 2016 |
#8 25.02.2020 21:58:36
вот тут в п 3.9 По вопросам из тем форума, личку не читаю. |
||
|
Дмитрий(The_Prist) Щербаков Пользователь Сообщений: 14264 Профессиональная разработка приложений для MS Office |
#9 26.02.2020 09:19:53
так офф.сайт Microsoft же есть. А взломанное ПО мы тут не обсуждаем. Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
||
Если вы открываете электронную таблицу, которую не создавали, вы можете встретить префикс «__xlfn» перед некоторыми функциями. Общее значение xlfn — «неподдерживаемая функция». Как правило, это означает, что рабочий лист был создан в более новой версии Excel и использует функции, недоступные в текущей версии.
В показанном примере функция XLOOKUP используется для поиска. XLOOKUP доступен только в Excel 365 и был представлен в 2020 году. Когда книга открывается в более старой версии Excel, появляется префикс __xlfn. Обратите внимание, что исходный результат все еще отображается. Однако формула не будет обновляться, чтобы показать новый результат, если данные изменятся.
Решение или обходной путь
Если вы откроете ту же книгу в версии Excel, которая содержит недостающую функцию (-ы), префикс _xlfn исчезнет, и функция будет рассчитываться нормально. Если это невозможно, вы можете использовать другую формулу, которая не зависит от новой функции.




