Функция offset в excel по русски

Функция СМЕЩ в Excel используется, когда вы хотите получить ссылку, которая смещается на указанное число строк и столбцов от начального положения.

Содержание

  1. Что возвращает функция
  2. Синтаксис
  3. Аргументы функции
  4. Основной принцип работы функции
  5. Примеры использования функции СМЕЩ в Excel
  6. Пример 1. Ищем последнюю заполненную ячейку в колонке
  7. Пример 2. Создаем динамический выпадающий список с автоматическим дополнением новых данных
  8. Дополнительная информация
  9. Альтернативы функции OFFSET (СМЕЩ) в Excel

Что возвращает функция

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

Синтаксис

=OFFSET(reference, rows, cols, [height], [width]) — английская версия

=СМЕЩ(ссылка;смещ_по_строкам;смещ_по_столбцам;[высота];[ширина]) — русская версия

Аргументы функции

  • reference (ссылка) — ссылка на ячейку, от которой вы хотите сделать смещение. Это может быть ссылка на ячейку или диапазон смежных ячеек;
  • rows (смещ_по_строкам) — количество строк для смещения от изначальной позиции. Если вы укажете положительное число, то произойдет смещение строк ниже, если отрицательное — выше;
  • cols (смещ_по_столбцам) — количество колонок для смещения от изначальной позиции. Если вы укажете положительное число, то произойдет смещение колонок вправо, если отрицательное число, то влево;
  • [height] ([высота]) — количество строк в указанном диапазоне функции;
  • [width] ([ширина]) — количество колонок в указанном диапазоне функции.

Основной принцип работы функции

Функция СМЕЩ, пожалуй, самая запутанная функция в Excel.

Давайте разберем ее работу на простом примере игры в шахматы. В шахматах есть фигура Ладья.

Функция OFFSET (СМЕЩ) в Excel. Как использовать?
Источник фото: Wikipedia

По правилам игры в шахматы, Ладья может ходить только вправо, влево, вниз и вверх. Фигура не может передвигаться по диагонали.

Функция OFFSET (СМЕЩ) в Excel. Как использовать?

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

Функция OFFSET (СМЕЩ) в Excel. Как использовать?

Правильно, мы будем использовать несколько шагов, для того чтобы привести Ладью к цели. Тот же принцип действует и в функции OFFSET (СМЕЩ).

Рассмотрим перемещение Ладьи на примере в Excel. Мы хотим начать с ячейки D5 (где находится ладья), а затем перейти на две строки вниз и два столбца вправо и извлечь значение из ячейки. Для этого будем использовать формулу:

=OFFSET(стартовая позиция, на сколько строк сместиться вниз, на сколько столбцов сместиться вправо) — английская версия

=СМЕЩ(стартовая позиция, на сколько строк сместиться вниз, на сколько столбцов сместиться вправо) — русская версия

Функция OFFSET (СМЕЩ) в Excel. Как использовать?

Как вы видите формула по нашему примеру выглядит так:

=OFFSET(D5,2,2) — английская версия

=СМЕЩ(D5;2;2) — русская версия

Функции задан аргумент старта отсчета с ячейки «D5», затем смещение на две строки вниз, после этого на две колонки вправо. Так мы переместимся с ячейки «D5» на ячейку «F7». По завершении перемещения функция выдает значение ячейки «F7».

На примере выше мы рассмотрели функцию OFFSET (СМЕЩ) с тремя аргументами. Но есть еще два необязательных аргумента, которые можно использовать.

Давайте рассмотрим простой пример:

Telegram Logo Больше лайфхаков в нашем Telegram Подписаться

OFFSET - СМЕЩ - в Excel

Предположим, вы хотите использовать ссылку на ячейку «A1» (желтую), и хотите сослаться на весь диапазон, выделенный синим (C2:E4) в формуле.

Как бы вы это сделали с помощью клавиатуры? Сначала нужно перейти к ячейке C2, а затем выбрать все ячейки в диапазоне «C2:E4».

Теперь посмотрим, как это сделать, используя формулу OFFSET (СМЕЩ):

=OFFSET(A1,1,2,3,3) — английская версия

=СМЕЩ(A1;1;2;3;3) — русская версия

Если вы используете эту формулу в ячейке, она вернет #VALUE! Но если вы перейдете в режим редактирования, выберете формулу и нажмите клавишу «F9», вы увидите, что она возвращает все значения, выделенные синим цветом.

Надеюсь, теперь у вас есть базовое понимание использования функции OFFSET (СМЕЩ) в Excel.

Примеры использования функции СМЕЩ в Excel

Пример 1. Ищем последнюю заполненную ячейку в колонке

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

Функция OFFSET (СМЕЩ) в Excel

=OFFSET(A1,COUNT(A:A)-1,0) — английская версия

=СМЕЩ(A1;СЧЁТ(A:A)-1;0) — русская версия

Эта формула предполагает, что кроме указанных значений нет никаких других, и в этой колонке нет пустых ячеек. Функция работает, подсчитывая общее количество заполненных ячеек и соответствующим образом смещает ячейку «A1».

Например, в указанном примере есть 8 значений, поэтому функция COUNT(A:A) или СЧЁТ(A:A) возвращает 8. Мы смещаем ячейку «A1» на 7, чтобы получить последнее значение.

Пример 2. Создаем динамический выпадающий список с автоматическим дополнением новых данных

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

OFFSET (СМЕЩ) функция в Excel

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

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

Как сделать такой список:

  • Выберите ячейку, в которой вы хотите создать выпадающий список;
  • Нажмите на вкладку Data => Data Tools => Data Validation;
  • В диалоговом окне Data Validation, в разделе Настройки выберите List из выпадающего списка;
  • В параметрах Source укажите формулу =OFFSET(A1,0,0,COUNT(A:A),1) или =СМЕЩ(A1;0;0;СЧЁТ(A:A);1)
  • Нажмите ОК

Как эта формула работает:

Первые три аргумента функции OFFSET (СМЕЩ) A1, 0, 0. Это означает что начальное значение в ячейке «A1», которое не смещается ни по строкам и по колонкам (0, 0);
Четвертый аргумент функции указывает на высоту, и здесь функция COUNT (СЧЁТ) возвращает суммарное количество ячеек в диапазоне данных для выпадающего списка. Главное условие — отсутствие пустых ячеек в диапазоне.
Пятый аргумент функции “1”, обозначает ширину диапазона данных, которая в нашем случае равна одной колонке.

Дополнительная информация

  • Функция OFFSET (СМЕЩ) — волатильная функция. Она пересчитывается каждый раз, как только вы открываете Excel файл. Работа этой функции может сильно сказываться на скорости работы всего файла.
  • Если значения высоты и ширины не указаны, функция учитывает только первые три аргумента;
  • Если значения аргументов rows (смещ_по_строкам) и cols (смещ_по_столбцам) отрицательны, то смещение будет происходить в обратную сторону.

Альтернативы функции OFFSET (СМЕЩ) в Excel

Ввиду некоторых ограничений функции, многие из вас рассматривают альтернативные методы:

  • Функция INDEX (ИНДЕКС) также может использоваться для возврата ссылки на ячейку.
  • Excel таблицы: если вы используете структурированные ссылки в таблице Excel, вам не нужно беспокоиться о добавлении новых данных и необходимости корректировки формул.

Вчера в марафоне 30 функций Excel за 30 дней мы заменяли текстовые строки с помощью функции REPLACE (ЗАМЕНИТЬ) и выяснили, что вставлять символы она тоже умеет.

В 26-й день марафона мы будем изучать функцию OFFSET (СМЕЩ). Она возвращает ссылку заданного размера, отстоящую от стартовой ссылки на указанное количество строк и столбцов.

Итак, давайте изучим информацию и примеры применения функции OFFSET (СМЕЩ), а если у Вас есть дополнительные сведения и свои примеры, пожалуйста, делитесь ими в комментариях.

Содержание

  1. Функция 26: OFFSET (СМЕЩ)
  2. Как можно использовать функцию OFFSET (СМЕЩ)?
  3. Синтаксис OFFSET (СМЕЩ)
  4. Ловушки OFFSET (СМЕЩ)
  5. Пример 1: Находим сумму продаж для выбранного месяца
  6. Пример 2: Суммируем продажи за выбранные месяцы
  7. Пример 3: Создаем динамический диапазон, основанный на подсчете
  8. Пример 4: Суммируем продажи за последние n месяцев

Функция 26: OFFSET (СМЕЩ)

Функция OFFSET (СМЕЩ) возвращает ссылку, смещённую от заданной ссылки на определенное количество строк и столбцов.

Функция СМЕЩ в Excel

Как можно использовать функцию OFFSET (СМЕЩ)?

Функция OFFSET (СМЕЩ) может возвратить ссылку на диапазон, а также работать в сочетании с другими функциями. Используйте её для того, чтобы:

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

Синтаксис OFFSET (СМЕЩ)

Функция OFFSET (СМЕЩ) имеет вот такой синтаксис:

OFFSET(reference,rows,cols,[height],[width])
СМЕЩ(ссылка;смещ_по_строкам;смещ_по_столбцам;[высота];[ширина])

  • reference (ссылка) – ячейка или диапазон смежных ячеек.
  • rows (смещ_по_строкам) – может быть положительным (вниз от начальной ссылки) или отрицательным (вверх от начальной ссылки).
  • cols (смещ_по_столбцам) — может быть положительным (вправо от начальной ссылки) или отрицательным (влево от начальной ссылки).
  • height (высота) – количество строк в возвращаемой ссылке, должен быть положительным.
  • width (ширина) – количество столбцов в возвращаемой ссылке, должен быть положительным.
  • Если аргументы height (высота) или width (ширина) не указаны, используются размеры исходной ссылки.

Ловушки OFFSET (СМЕЩ)

Функция OFFSET (СМЕЩ) пересчитывается каждый раз при любом изменении значений на листе Excel. Используя эту функцию во многих формулах, можно сильно замедлить работу. Вместо OFFSET (СМЕЩ) Вы можете использовать функцию INDEX (ИНДЕКС), чтобы возвратить ссылку. INDEX (ИНДЕКС) пересчитывает результат только при изменении своих аргументов.

Пример 1: Находим сумму продаж для выбранного месяца

При помощи функции OFFSET (СМЕЩ) Вы можете возвращать ссылку на диапазон, отталкиваясь от стартовой ссылки. В этом примере мы хотим получить сумму продаж в ячейке G2.

  • Стартовая ссылка – это ячейка C1.
  • Количество строк для сдвига вводится в ячейке F2.
  • Суммы продаж находятся в столбце C, поэтому сдвиг по столбцам равен нулю.
  • Аргумент height (высота) равен 1 строке.
  • Аргумент width (ширина) равен 1 столбцу.

=OFFSET(C1,F2,0,1,1)
=СМЕЩ(C1;F2;0;1;1)

В ячейке H2 находится формула, очень похожая на предыдущую, которая возвращает имя месяца. Единственное отличие – это сдвиг по столбцам: 1 вместо 0.

=OFFSET(C1,F2,1,1,1)
=СМЕЩ(C1;F2;1;1;1)

Замечание: В данном примере аргументы height (высота) и width (ширина) можно не указывать, поскольку нам нужна ссылка того же размера, что и стартовая.

Функция СМЕЩ в Excel

Пример 2: Суммируем продажи за выбранные месяцы

В этом примере функция OFFSET (СМЕЩ) возвращает ссылку на данные о продажах за выбранный месяц, а функция SUM (СУММ) подсчитывает сумму для этого диапазона. В ячейке B10 указан номер выбранного месяца 3, следовательно, результатом будет сумма продаж в марте (Mar).

  • Начальная ссылка A3:A6.
  • Сдвиг по строкам равен нулю (если ноль вообще не указать, результат будет тот же).
  • Сдвиг по столбцам соответствует значению ячейки B10.
  • Высота и ширина не указаны, поскольку итоговый диапазон должен быть того же размера, что и начальный.

=SUM(OFFSET(A3:A6,0,B10))
=СУММ(СМЕЩ(A3:A6;0;B10))

Функция СМЕЩ в Excel

Пример 3: Создаем динамический диапазон, основанный на подсчете

Вы можете использовать функцию OFFSET (СМЕЩ), чтобы создать динамический диапазон. В этом примере мы создали именованный диапазон MonthList с такой формулой:

=OFFSET('Ex03'!$C$1,0,0,COUNTA('Ex03'!$C:$C),1)
=СМЕЩ('Ex03'!$C$1;0;0;СЧЁТЗ('Ex03'!$C:$C);1)

Функция СМЕЩ в Excel

Если к списку в столбце C добавить ещё один месяц, он автоматически появится в выпадающем списке в ячейке F2, который использует имя MonthList, как источник данных.

Функция СМЕЩ в Excel

Пример 4: Суммируем продажи за последние n месяцев

В этом заключительном примере OFFSET (СМЕЩ) работает вместе с SUM (СУММ) и COUNT (СЧЁТ), чтобы показать сумму за последние n месяцев. Как только добавляются новые значения, результат формулы будет автоматически скорректирован, чтобы включить величину продаж за последний месяц. В ячейке E2 количество месяцев равно 2, поэтому складываться будут суммы за август (Aug-10) и сентябрь (Sep-10).

  • Начальная ссылка – ячейка C2.
  • Количество строк для сдвига рассчитывается так:
    • подсчитываем количество чисел в столбце C,
    • вычитаем из результата количество месяцев, указанное в ячейке E3,
    • и прибавляем 1.
  • Продажи находятся в столбце C, поэтому сдвиг по столбцам равен нулю.
  • Высота введена в ячейке E3.
  • Ширина равна 1 столбцу.

=SUM(OFFSET(C2,COUNT(C:C)-E3+1,0,E3,1))
=СУММ(СМЕЩ(C2;СЧЁТ(C:C)-E3+1;0;E3;1))

Функция СМЕЩ в Excel

Оцените качество статьи. Нам важно ваше мнение:

Improve Article

Save Article

Like Article

  • Read
  • Discuss
  • Improve Article

    Save Article

    Like Article

    Excel contains many useful formulas and functions that make it more and more useful and at the same time user-friendly. Such a function is the OFFSET() function. In many cases, this function is also used inside another function. This function basically returns a reference of a single cell or a range of cells depending on the input. With the help of this function, we can traverse from one cell to another cell. Moreover, the user can specify the number of rows and columns to be returned.

    This function is a volatile function that also works according to its name. It returns a reference of the desired element(s) that is(are) ‘offset’ of some distance from the given starting point. This can be used within some functions to make tasks easier. 

    Syntax:

    OFFSET(reference, rows, cols, [height], [width])
    
    -->Here the [height] and [width] are optional.

    This function takes a valid reference, rows, and columns(To know how much distance the function will traverse), and height and width(that describes the height and width of output reference) as its arguments and returns the desired reference of the cell or the range of cells. These arguments are discussed below elaborately.

    Arguments:

    • reference (Required): This is the reference of the starting point or the base of the OFFSET() function and this reference must be provided by the user. The reference must be valid i.e. a reference of a single cell or a reference to a range of adjacent cells.
    • rows (Required): This argument contains the number of rows(up or down) that are used by the OFFSET() function to traverse up or down. Again this argument must be provided by the user. This value may be negative or positive. A negative value denotes that the function has to traverse upwards and a positive value denotes traversing downwards.
    • cols (Required): This argument contains the number of columns provided by the user. With the help of this argument OFFSET(), function traverse left or right of the starting point. This value may also be negative or positive. A negative value means traversing to the left and a positive value means traversing to the right.
    • [height] (Optional): This is the height of the reference to be returned by the OFFSET() function. Basically, this value denotes the number of rows of the returned reference. This value must be a positive number. But this is an optional argument. If this argument is omitted, OFFSET() returns a reference of the same height as the ‘reference’(starting point).
    • [width] (Optional): This is the width of the reference to be returned by the OFFSET() function. Basically, this value denotes the number of columns of the returned reference. This value must also be a positive number. But again this is an optional argument. If this argument is omitted, OFFSET() returns a reference of the same width as the ‘reference’(starting point).
    Note: The number of rows and columns must not exceed the height and width of the worksheet.

    Return Value: This function naturally returns a reference to a range of cells(sometimes a single cell depending on the input arguments) of a certain height and width either same as the ‘reference’ argument or as the user has provided. 

    Example:

    An Excel sheet has been taken as an example and the OFFSET function has been used in several formats.

    Value 1 Value 2 Value 3
    25 5 5
    35 7 5
    23 0 0
    26 25 5
    28 3 6

    OFFSET function has been applied to the above table.

    OFFSET() function  Results Remarks
    =OFFSET(C4, 2, -2, 1, 1) 28

    OFFSET function traverses 2 rows down and 2 columns left, 

    and returns the reference of cell A6.

    =OFFSET(C2, 5, -5) #REF! Rows and columns arguments exceed the height and width of the worksheet. So it shows the error(#REF!).
    =SUM(OFFSET(B2:C5, 0, -1)) 146 Here OFFSET is used within the SUM() function. It returns the sum of all elements from A2 to B5 as OFFSET returns the reference of A2:B5 cells.

    Output:

    Like Article

    Save Article


    Функция

    СМЕЩ(

    )

    , английский вариант OFFSET(),

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

    Функция

    СМЕЩ()

    часто используется при создании

    динамических диапазонов

    . Рассмотрим ее подробнее.

    Синтаксис функции СМЕЩ()

    СМЕЩ(ссылка;смещ_по_строкам;смещ_по_столбцам;высота;ширина), где


    • ссылка

      — ссылка, от которой вычисляется смещение;

    • смещ_по_строкам

      — количество строк, которые требуется отсчитать вверх или вниз, чтобы левая верхняя ячейка результата ссылалась на нужную ячейку (по умолчанию =0);

    • смещ_по_столбцам

      – аналогично

      смещ_по_строкам,

      только смещение отсчитывается по столбцам (по умолчанию =0);

    • высота

      — число строк возвращаемой ссылки. Значение аргумента «высота» должно быть положительным числом;

    • ширина

      — число столбцов возвращаемой ссылки (по умолчанию =1).

    Чтобы было понятнее, потренируемся с функцией

    СМЕЩ()

    , используя

    файл примера

    .

    Примеры

    Дана исходная таблица с тремя столбцами.

    Задавая параметры функции

    СМЕЩ()

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

    СМЕЩ()

    , использовано

    Условное форматирование

    . Для удобства изменения параметров функции

    СМЕЩ()

    использованы

    Элементы управления

    Счетчик

    .

    Для подсчета суммы значений в столбце

    Продажа1

    запишем формулу:

    =СУММ(СМЕЩ($B$2;0;0;8;1))

    диапазон суммирования —

    $B$2:$B$9

    (левый верхний угол —

    $B$2

    , высота

    8

    , смещения верхнего угла нет). Результат

    34

    .

    Для подсчета суммы значений в столбце

    Продажа2

    запишем формулу:

    =СУММ(СМЕЩ($B$2;0;

    1

    ;8;1))

    Теперь левый верхний угол диапазона суммирования смещен от

    $B$2

    на один столбец вправо, т.е. диапазон суммирования стал

    $C$2:$C$9

    . Результат

    68

    .

    Для подсчета суммы значений в столбцах

    Продажа1

    и

    Продажа2,

    изменим ширину диапазона.

    =СУММ(СМЕЩ($B$2;0;0;8;

    2

    ))

    указав ширину в 2 ячейки, результат составит

    102

    , диапазон будет модифицирован в

    $В$2:$С$9

    .

    Добавив смещение по строкам (+1), получим результат

    99

    :

    =СУММ(СМЕЩ($B$2;

    1

    ;0;8;2))

    диапазон будет модифицирован в

    $В$3:$С$9

    .

    Функция СМЕЩ() vs ИНДЕКС()

    Пусть имеется диапазон с числами (

    А2:А10

    ) Необходимо найти сумму первых 2-х, 3-х, …9 значений. Конечно, можно написать несколько формул

    =СУММ(А2:А3)

    ,

    =СУММ(А2:А4)

    и т.д. Но, записав формулу ввиде:


    =СУММ(СМЕЩ(A2;;;4))

    получим универсальное решение, в котором требуется изменять только последний аргумент (если в формуле выше вместо 4 ввести 5, то будет подсчитана сумма первых 5-и значений). Вышеуказанная формула эквивалентна формуле

    =СУММ(A2:ИНДЕКС(A2:A10;4))

    , которая, в свою очередь, эквивалентна формуле

    =СУММ(A2:A5)

    Формула

    ИНДЕКС(A2:A10;4)

    возвращает ссылку на ячейку

    А5

    .

    Бывают ситуации, когда заранее не известно какие именно ячейки на листе нужно подсчитывать. Например, представим, что нам нужно реализовать в Excel небольшой транспортный калькулятор для расчета расстояния проезда от одной заданной станции до другой:

    Калькулятор проезда с функцией СМЕЩ (OFFSET)

    В выпадающих списках в желтых ячейках F3 и F5 пользователь выбирает станции отправления и назначения, а в зеленой ячейке F7 должна подсчитываться сумма всех ячеек в заданном «окне» на листе. Для проезда от Останкино до Ховрино, как на рисунке, например, нужно будет просуммировать все ячейки в обведенном зеленым пунктиром диапазоне.

    Как считать суммму — понятно, а вот как определить диапазон ячеек, которые нужно просуммировать? Ведь при выборе станций он будет постоянно трансформироваться?

    В подобной ситуации может помочь функция СМЕЩ (OFFSET), способная выдать ссылку на «плавающее окно» — диапазон заданного размера, расположенный в определенном месте листа. Синтаксис у функции следующий:

    =СМЕЩ(Точка_отсчета; Сдвиг_вниз; Свиг_вправо; Высота; Ширина)

    Эта функция на выходе дает ссылку на диапазон, сдвинутый относительно некоей стартовой ячейки (Точка_отсчета) на определенное количество строк вниз и столбцов вправо. Причем размер диапазона («окна») тоже может задаваться параметрами Высота и Ширина

    В нашем случае, если взять за точку отсчета ячейку А1, то:

    Параметры СМЕЩ

    • Точка отсчета = А1
    • Сдвиг_вниз = 4
    • Свиг_вправо = 2
    • Высота = 4
    • Ширина = 1

    Чтобы рассчитать необходимые для СМЕЩ аргументы, давайте сначала применим функцию ПОИСКПОЗ (MATCH), которую мы уже разбирали, для вычисления позиций станций отправления и назначения:

    Вычисляем позиции станций

    И, наконец, используем функцию СМЕЩ, чтобы получить ссылку на нужное «окно» на листе и просуммировать все ячейки из него:

    Суммируем ячейки из динамического окна на листе функцией СМЕЩ

    Вот и все, задача решена :)

    P.S.

    В отличие от большинства остальных функций Excel, СМЕЩ является волатильной (volatile) или, как еще говорят, «летучей» функцией. Обычные функции пересчитываются только в том случае, если меняются ячейки с их аргументами. Волатильные же пересчитываются каждый раз при изменении любой ячейки. Само-собой, это отрицательно сказывается на быстродействии. В больших тяжелых таблицах разница по скорости работы книги может быть очень ощутимой (в разы). Для некоторых случаев быстрее оказывается заменить медленную СМЕЩ на неволатильную ИНДЕКС или другие аналоги.

    Ссылки по теме

    • Поиск позиции заданного элемента в списке функцией ПОИСКПОЗ (MATCH)
    • 4 способа создать выпадающий список в ячейке листа Excel
    • 5 вариантов применения функции ИНДЕКС

    Понравилась статья? Поделить с друзьями:
  • Функция ocr в word
  • Функция npv в excel на русском
  • Функция now в excel на русском
  • Функция not в excel на русском
  • Функция not vba excel