Оценка листов и выражений Excel

Относится к: Excel 2013 | Office 2013 | Visual Studio

Содержимое ячеек на листах Microsoft Excel оценивается как один из четырех базовых типов данных.

  • Number;
  • Boolean (TRUE или FALSE);
  • String;
  • Errors

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

����� ������������ (��� ��������� ������) ������ ���-�� � ������, Excel �������� ���������������� ���� � ������� ��������� �� ������, ���� ��� �� �������. ���� ���� ���������� �� ���������� �������� (����� �������), Excel �������� ��� ��������� ������� � ������ ��� ��������� (��������� ������� �� ������������). (Префикс строки не отображается.) Если входные данные начинаются с =, +или -, Excel пытается интерпретировать входные данные как формулу. Если синтаксис неправильный или оценка остановлена, отображается ошибка, а ячейка помещается в режим редактирования. � ��������� ������ Excel �������� ����������, ������������� � ������� ���������, ����� ������� � �� ���������.

Операнды оцениваются слева направо перед применением оператора. Функции оцениваются начиная с операторов с самым высоким приоритетом (с максимальным уровнем вложения). Если аргументы или операнды функции не удается преобразовать в ожидаемые типы, происходит сбой оценки и выводится ошибка #VALUE!. Если маркер (не являющийся литералом) не распознается как функция, определенное имя или метка, происходит сбой оценки и выводится ошибка #NAME?.

���� ��������� ������ �� ���������� �� � ������ �� ���� ��������, Excel ������� �� � ���������� ��������� �����, �������� ������, ��������, ������� ������, ���������� ��� �������, � �������������� �� ��������������� �������. Это выполняется в соответствии с региональными стандартами. ���� �� ���� �� ���� ���������� �� ��������, Excel ������������ ��������� ������ ��� ������ � �������� �� � ������ ��� ���������.

Excel ������������ � ������ ���� ������, ����� ������� �� ������� �������� ������ �� ��������. Excel ����������� ������ � �������� ������� ����� ��� ������ ���������� ���������� ��� �������, ������� �� ��������� ������ � �������� ����������, ��� ���� ��������� � ������� ������ �������� � ������.

Excel ������������� ����������� ��������� ����� ���������� ������ �������� �� ������ �� ������� ����� ������ �� ������ � ������� ������� XLM EVALUATE � �� ����������� � API C, xlfEvaluate. ��� ������� �������������, ������ �������, ������� ������ ������ ����������� ���������� � ���� DLL. Эта функция отличается от описанного выше поведения тем, что вместо вывода сообщений об ошибках или включения редактирования ячеек она возвращает ошибку #VALUE! в случае сбоя оценки выражения.

Числа

Все числа на листах Excel представляются как 8-байтовые целые числа с плавающей запятой (двойная точность). ��� �� �����, ���������� ���� ����� � Excel �� ��������� ������������� ��������� IEEE, ��� �������� � ��������� �������.

Тип Максимум Минимум
double (8 байт) по стандарту IEEE
1.7976931348623157E+308
2.2250738585072014E-308
Лист (возвращается функцией или путем вставки значения)
1.7976931348623157E+308
2.22507385850721E-308
Лист (ввод вручную)
9.99999999999999E+307
2.22507385850721E-308

Субнормальные числа по стандарту IEEE (то есть числа в диапазоне от 2,2250738585072009E-308 до 4,9406564584124654E-324) не поддерживаются на листах Excel, но их поддерживает тип данных double в VBA.

���� ������� DLL ���������� +/- ������������� �� ��������� IEEE ��� ������������ ����� � ������� ���������, Excel ����������� ��� � �������� #NUM!. ��� ������������� ����� � ����� ���� ����������� ������������� ������� � Excel ������������� � ������������� ����. Отрицательный ноль по стандарту IEEE поддерживается, то есть может возвращаться функцией DLL и отображается как -0. (�������� < �� ��������� �������� �� ������������� ����, ������� =A1<0 ������������� ��� TRUE, ���� ������ A1 �������� ������������� ����).

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

Длинные строки Юникода

Все строки, которые пользователь видит в Excel для многих версий, теперь хранятся внутри в виде строк Юникода. Строки листа Юникода могут содержать до 32 767 (215 –1) символов в длину и могут содержать любой допустимый символ Юникода.

Когда впервые появился API C, строки на листах были байтовыми строками длиной до 255 символов, а API C отражал эти ограничения. В Excel 2007 API C обновляется для обработки длинных строк Юникода Excel. Это означает, что функции DLL, зарегистрированные правильным образом, могут принимать аргументы Юникода и возвращать строки Юникода.

Примечание.

В целях обратной совместимости байтовые строки не полностью поддерживаются в API C. Тем не менее, на них распространяется то же ограничение в 255 символов.

Возврат ошибок

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

#NULL!

Ошибка #NULL! возвращается некоторыми информационными функциями XLM. ��������, ����� GET.DOCUMENT(78) ��� ����������� ������� API C xlfGetDocument � ���������� 78, ���� ������� �� ����������, �������� � ���� ������. �� ����� ����� ���������� ��������� �������, ����� ���, � �������, ��������� ������ ������.

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

#ДЕЛ/0!

Оператор деления Excel возвращает ошибку #DIV/0!, если знаменатель равен нулю или число слишком мало, чтобы представить его в Excel как значение, отличное от нуля. Некоторые функции, которые по определению связаны с делением, также могут возвращать эту ошибку. Например, функция AVERAGE возвращает эту ошибку, если никакие из входных данных невозможно преобразовать в числа.

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

#ЗНАЧ!

Excel возвращает ошибку #VALUE!, аргумент функции или оператора невозможно преобразовать в требуемый тип. В случае аргументов функции, которые не могут быть преобразованы, например =LN("X"), Excel не вызывает код функции. Это важно помнить при создании и отладке собственных дополнительных функций.

��������� ������� ���������� ��� ������, ���� �������� ���������� ������������� � ���� �������. Например, происходит сбой с этой ошибкой, несмотря на то, DATEVALUE("30-Feb-2007") что аргумент имеет правильный тип. В этом случае это функция, которая возвращает ошибку из своего кода. Некоторые функции возвращают эту ошибку, даже если типы значений и диапазоны допустимы, например FIND("a","xyz") возвращает эту ошибку.

Вы можете возвращать эту ошибку из своей дополнительной функции, чтобы обозначить, что аргументы имеют неправильный тип, не могут быть преобразованы в правильный тип или выходят за пределы диапазона, хотя для числовых аргументов вне диапазона можно возвращать ошибку #NUM!. Эту ошибку также рекомендуется возвращать, когда аргументы в виде диапазонов или массивов имеют неподходящие форму или размер.

#ССЫЛКА!

Excel возвращает ошибку #REF! в выражении, если оно копируется в ячейку, где получившаяся относительная ссылка выходит за границы. Например, если ячейка B2 содержит формулу =A1, копирование этого элемента в ячейку B1 приводит к формуле =#REF!. Эта ошибка также создается в формулах, которые содержат ссылку, переписанную с помощью операции вырезания и вставки или удаленную в составе строки, столбца или листа. Некоторые функции, которые могут возвращать ссылки, могут возвращать эту ошибку, например OFFSET(A1,-1,-1). � ���� ������ ����������� ����� ������, ����������� ������� �������� ������, ������� �������������.

���� ���� �������������� ������� ��������� ������ � �������� ����������, ��� ������ ����� ����������, ���� ������ ��������������� ��� ������� �������� ������ ������. � ������� XLOPER/XLOPER12s ������ ���������� ������� � Excel �����������, ��� ��������� �������, ������� ����� ��������� � ���������� ������ � �������� ����������.

#NAME?

Excel ���������� ������ #NAME?, ���� ��������� �������� ������, ������� �� ������������ ��� ������� ��� �������� ���. Если ваша дополнительная функция пытается получить доступ к заданному имени, а оно не задано, рекомендуется возвращать эту ошибку.

#ЧИСЛО!

Многие встроенные числовые и математические функции в Excel возвращают ошибку #NUM! , если числовой ввод выходит за пределы допустимого диапазона, например LN(0). Эту ошибку рекомендуется возвращать в дополнительных функциях, чтобы обозначить, что входные числовые данные недопустимы или выходят за пределы диапазона.

#N/A

������ #N/A ����� ����������, ��� �������� ��� ����������� ��������� ����������. ��������, ������� ��� � ������� ������� ���������� ���������� ��� ������, ���� ������ ���������� �� �������. ��� ������ ����� ����� ������� � ������� ������� NA � ������������ � ������� ������� ISNA. ����� �������, ��� ������ ����� ������������ �� ������ ��� ����������� ��������� �������, ��������� � �����������.

См. также

Понятия, связанные с программированием для Excel

Программирование с использованием API C в Excel

Оценка имен и других выражений в формулах листов

Справочник по функциям API SDK XLL для Excel