У данной функции аргументов нет excel

 

nastyona

Пользователь

Сообщений: 5
Регистрация: 26.06.2013

Здравствуйте!

Пробую создать функцию «Сумма ячеек по цвету» (согласно инструкции из раздела «Приемы»).
Пройзводя все действия согласно инструкции, функция работает.
Но после сохранения, закрытия документа и открытия его заново, функция не работает (в ячейке с формулой пишет «#ИМЯ?»).
Повторяя заново все действия согласно инструкции — функция снова работает, но после закрытия документа снова пишет «#ИМЯ?»

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

Заранее спасибо.

 

Hugo

Пользователь

Сообщений: 23257
Регистрация: 22.12.2012

Где код?
Сохраняете как xlsx?

 

nastyona

Пользователь

Сообщений: 5
Регистрация: 26.06.2013

Простите а что за код?
Да, сохраняю как xslx.

 

Юрий М

Модератор

Сообщений: 60588
Регистрация: 14.09.2012

Контакты см. в профиле

В xlsx код (функция) не живёт. Он любит среду обитания с расширением xlsm (Книга с поддержкой макросов).

 

nastyona

Пользователь

Сообщений: 5
Регистрация: 26.06.2013

Я и в такой среде сохраняла. Тоже не работает. Пишет «Справка недоступна. У данной функции аргументов нет.»

 

Юрий М

Модератор

Сообщений: 60588
Регистрация: 14.09.2012

Контакты см. в профиле

Тогда похвастайтесь Вашей функцией. В файле.

 

Hugo

Пользователь

Сообщений: 23257
Регистрация: 22.12.2012

Ну можно код функции держать в другом файле, например в персональной книге или в надстройке, и использовать в xlsx. Так что xlsx ещё не диагноз :)

 

Юрий М

Модератор

Сообщений: 60588
Регистрация: 14.09.2012

Контакты см. в профиле

Так автор говорит, что и в xlsm не работает…

 

Hugo

Пользователь

Сообщений: 23257
Регистрация: 22.12.2012

Так может код в другом xlsx :)

 

Hugo

Пользователь

Сообщений: 23257
Регистрация: 22.12.2012

xlsm работает.
Макросы разрешены?

 

nastyona

Пользователь

Сообщений: 5
Регистрация: 26.06.2013

#12

26.06.2013 11:41:03

Я не сильна в Экселе. Не подскажите как можно проверить разрешенны ли макросы?

Цитата
Hugo пишет: Так может код в другом xlsx

[CODE][/CODE]Вроде так тоже пробовала (методом тыка).
При создании формулы в ячейке (в документе (например №2)), функция была с сылкой на документ (например №1) в котором этаже функция работала (! только тогда когда этот документ №1 был открыт) и она работала.
Как только документ №1 закрывался, значение ячейки с формулой в документе №2 вылетало и пишет «#ИМЯ?»

 

Hugo

Пользователь

Сообщений: 23257
Регистрация: 22.12.2012

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

 

dmb85

Пользователь

Сообщений: 1
Регистрация: 26.03.2020

#14

27.03.2020 12:33:40

в параметрах ексель в безопасности включите «все макросы»

AlexK, спасибо большое, именно этого я и добивался в качестве ответа по типу: «нет, братан, в Excel2003-e все с аргументами в порядке, ищи причину в другом» — т.е. 5-ти секундный ответ — и тема была бы закрыта.

На самом деле причина оказалось банальная — почему в Excel2007 все работает, а в 2003 нет — в таблице в колонке «K» я использовал стандартные функции (определение четные/нечетные), которых в 2003 небыло, поэтому просто пришлось ее переписать и проблема решилась:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Function GRADEN(sp0, sp1, sp2)
' =WENN(($I5+$J5)>0;ISTGERADE($I5+$J5)+1;WENN($H5="";"";$H5))
    Dim spin, grad As Integer
    spin = sp0 + sp1 + sp2  ' interesuet wypawshij spin - dopuskaetsja tolko w odnoj kolonke
    grad = spin Mod 2           'opredelenie chet/nechet - even/odd
    
    If sp0 = "" And sp1 = "" And sp2 = "" Then  'esli nichego net
        GRADEN = ""
    ElseIf spin = 0 Then GRADEN = 0       'zero
    Else:
        If grad = 1 Then GRADEN = 1         'nechetnye
        If grad = 0 Then GRADEN = 2         'chetnye
    End If
     
End Function

В любом случае, прикладываю файл с функциями, как Вы предложили. Правда редуцированный до одной таблицы, иначе он занимает порядка 1,5 МБ

Поэтому проблема решена, большое спасибо, тема похоже закрыта!

Skip to content

Почему пользовательская функция не работает: проблемы и решения

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

Вот о каких проблемах мы поговорим:

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

Почему не пересчитывается пользовательская функция?

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

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

Это относится и к пользовательским формулам. Excel не может проверить код VBA и определить другие ячейки, которые также могли повлиять на результат.

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

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

Как создаются волатильные и не волатильные функции. 

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

К примеру, вам необходимо записать в ячейке имя вашей рабочей книги.

Для этого вы создали пользовательскую функцию:

Function WorkbookName() As String
WorkbookName = ThisWorkbook.Name
End Function

Вы записали  =WorkbookName() в ячейку и получили там имя файла. Но вот вы решили переименовать файл и сохранили его под другим именем. И вдруг видите, что значение в ячейке не изменилось! Там по-прежнему старое имя файла, которое уже не существует.

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

Для пересчета всех формул в файле вам необходимо использовать комбинацию клавиш CTRL+ALT+F9.

Как решить эту проблему, чтобы лишний раз не нажимать клавиши?

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

Application.Volatile 

То есть, ваш код будет выглядеть так:

Function WorkbookName() As String
Application.Volatile 
WorkbookName = ThisWorkbook.Name
End Function

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

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

Поэтому рекомендую применять волатильность только там, где это действительно необходимо.

Почему пользовательской функции нет в списке?

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

Вы можете видеть такой пример на скриншоте ниже.

Однако, это происходит не всегда. Какие ошибки могут стать причиной того, что вы не видите вашу функцию в списке?

Если у вас Excel 2003-2007, то пользовательская функция никогда не появляется в выпадающем списке. Там вы можете увидеть только стандартные функции.

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

Пользовательская функция должна находиться в стандартном модуле VBA. Что это означает?

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

Но иногда случается, что новый модуль не был создан.

На скриншоте ниже вы видите, что код находится в таких модулях, как ThisWorkbook или Sheet1.

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

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

Не отображается подсказка для пользовательской функции

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

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

Для этого я предлагаю дополнительно использовать метод Application.MacroOptions. Он поможет вам показать описание не только функции, но и каждого её аргумента в окне Мастера. Это окно вы видите, когда нажимаете кнопку fx в строке формул.

Давайте попробуем создать такую справку.

Ранее мы с вами рассматривали настраиваемую функцию GetMaxBetween(). Она находит максимальное число в указанном интервале и использует три аргумента: диапазон числовых значений, а также максимальное и минимальное значение для поиска. 

Добавим в нее описание и справочную информацию. Для этого нужно создать и запустить команду Application.MacroOptions.

Для GetMaxBetween вы можете выполнить следующую команду:

Sub RegisterUDF()
Dim strFuncName As String   ' имя функции, которую регистрируем
Dim strDescr As String   'описание для самой функции
Dim strArgs() As String ' описание для аргументов
    'Регистрируем функцию GetMaxBetween 
    ReDim strArgs(1 To 3) ' номер аргумента (от 1 до 3)
    strFuncName = "GetMaxBetween"
    strDescr = "Максимальное значение в указанном диапазоне"
    strArgs(1) = "Диапазон ячеек"
    strArgs(2) = "Нижняя граница интервала"
    strArgs(3) = "Верхняя граница интервала"
    Application.MacroOptions Macro:=strFuncName, _
                             Description:=strDescr, _
                             ArgumentDescriptions:=strArgs, _
                             Category:="Определенные пользователем"
End Sub

или

Sub RegisterUDF()
    Application.MacroOptions Macro:="GetMaxBetween", _
        Description:= "Максимальное значение в указанном диапазоне", _
        Category:= "Определенные пользователем", _
        ArgumentDescriptions:=Array( _
            "Диапазон ячеек", _
            "Нижняя граница интервала", _
            "Верхняя граница интервала")
End Sub

Переменная strFuncName — это имя. strDescr —описание. В переменных strArgs записаны подсказки для каждого аргумента.

Вы спросите, для чего нужен четвертый аргумент  Application.MacroOptions? Этот необязательный аргумент называется Category и указывает на категорию функций Excel, в которую будет помещена наша пользовательская функция GetMaxBetween(). Вы можете присвоить ему имя любой из существующих категорий: Математические, Статистические, Логические и т.д. Можно указать имя новой категории, в которую вы будете помещать созданные вами макросы. Если же не использовать аргумент Category, то она будет автоматически помещена в раздел «Определенные пользователем».

Вставьте код в окно модуля, как показано на скриншоте ниже:

Затем нажмите кнопку “Run”.

Команда выполнит все настройки для использования кнопки fx с вашей функцией GetMaxBetween().

Теперь посмотрим, что у нас получилось. Если попробовать вставить в ячейку функцию при помощи инструмента Вставка функции, то увидите, что GetMaxBetween() находится в категории «Определенные пользователем»:

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

После этого вызовите Мастер при помощи кнопки fx.

Чтобы открыть Мастер функций, вы также можете использовать комбинацию клавиш CTRL + A.

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

Если вы захотите поменять текст этих подсказок, в коде RegisterUDF() измените значения переменных strDescr  и strArgs. Затем снова выполните команду RegisterUDF().

Если вы захотите отменить все сделанные настройки и очистить описание, выполните этот код:

Sub UnregisterUDF()
    Application.MacroOptions Macro:="GetMaxBetween", _
Description:=Empty, ArgumentDescriptions:= Empty, Category:=Empty
End Sub

Есть еще один способ получить подсказку при вводе пользовательской функции.

Введите название функции и затем нажмете комбинацию CTRL+SHIFT+A :

=GetMaxBetween( + CTRL + Shift + A

Вы увидите список всех аргументов функции:

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

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

Единственным доступным решением в настоящее время является  Excel-DNA IntelliSense extension. Более подробную информацию вы можете найти по этой ссылке.

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

Сумма по цвету и подсчёт по цвету в Excel В этой статье вы узнаете, как посчитать ячейки по цвету и получить сумму по цвету ячеек в Excel. Эти решения работают как для окрашенных вручную, так и с условным форматированием. Если…
Проверка данных с помощью регулярных выражений В этом руководстве показано, как выполнять проверку данных в Excel с помощью регулярных выражений и пользовательской функции RegexMatch. Когда дело доходит до ограничения пользовательского ввода на листах Excel, проверка данных очень полезна. Хотите…
Поиск и замена в Excel с помощью регулярных выражений В этом руководстве показано, как быстро добавить пользовательскую функцию в свои рабочие книги, чтобы вы могли использовать регулярные выражения для замены текстовых строк в Excel. Когда дело доходит до замены…
Как извлечь строку из текста при помощи регулярных выражений В этом руководстве вы узнаете, как использовать регулярные выражения в Excel для поиска и извлечения части текста, соответствующего заданному шаблону. Microsoft Excel предоставляет ряд функций для извлечения текста из ячеек. Эти функции…
4 способа отладки пользовательской функции Как правильно создавать пользовательские функции и где нужно размещать их код, мы подробно рассмотрели ранее в этой статье.  Чтобы решить проблемы при создании пользовательской функции, вам скорее всего придется выполнить…
Как создать пользовательскую функцию? В решении многих задач обычные функции Excel не всегда могут помочь. Если существующих функций недостаточно, Excel позволяет добавить новые настраиваемые пользовательские функции (UDF). Они делают вашу работу легче. Мы расскажем,…

Содержание

      • 0.0.1 Аргумент Excel. Теория
      • 0.0.2 Как удобно найти и выделить аргументы функции?
      • 0.0.3 Что еще важно сказать
  • 1 Аргументы функции Excel
  • 2 Как вставить функцию в Excel
  • 3 Пример создания своей пользовательской функции в Excel
  • 4 Примеры использования пользовательских функций, которых нет в Excel

Работа с большими формулами бывает проблематична даже для опытных пользователей. Самое трудное — это разбираться в чужой конструкции и понять как она работает . Недавно в рамках обучения, меня попросили разобрать несколько сложных формул, причем выяснилось, что формулы действительно награможденные — я насчитал 7-8 ЕСЛИ и еще примерно 5-6 прочих функций в одной ячейке. В таких ситуациях очень важно определить, что является аргументом каждой функции. Поэтому я решил написать небольшую статью про важную штуку — аргумент Excel и его роль в вычислениях. А самое главное, опишу в статье — как удобно найти и выделить каждый из аргументов, при написании огромных формул.

Считаю нужно вначале сказать пару слов банальной теории.

Аргумент Excel. Теория

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

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

Пример:

=ДЕНЬНЕД(дата_в_числовом_формате;)

Где «дата_в_числовом_формате» должна быть обязательно заполнена, а  — можно не вносить, причем даже точку с запятой ставить необязательно.

Важно отметить, что функции могут и не содержать аргумента

Пример:

=СЕГОДНЯ()

А могут и быть с непостоянным количеством аргументов, как:

=СУММЕСЛИМН()

Как удобно найти и выделить аргументы функции?

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

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

Для удобства так же прикладываю гифку

Но бывают записи и потяжелее. Такие:

Или такие

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

Что еще важно сказать

При подобных конструкциях очень важно разобраться формулу по частям, выделить ее аргумент. Имеющийся в Excel метод выделения аргумента очень удобен. Так же я могу посоветовать разнести каждую функцию на новую строку при помощи Alt + Enter — тоже очень помогает — подробнее здесь.

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

К примеру, вам непонятно как работает функция в примере (специально не заполнил 4й аргумент ВПР).

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

Из этой подсказки вы сможете перейти на любой из аргументов, кликнув на него

А также можете перейти в справку, кликнув на название самой формулы, в данном случае ВПР.

Удачных разборов своих и чужих формул! Пишите ваши замечания.

Поделитесь нашей статьей в ваших соцсетях:

(Visited 523 times, 1 visits today)

как сделать аргументы функции в excelДата: 27 декабря 2015 Категория: Excel Поделиться, добавить в закладки или статью

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

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

Вы можете «вкладывать» одну функцию в другую, копировать формулы с функциями (не забываем о разных типах ссылок). Главное – чётко понимать, как работает функция, иначе она может дать неверный результат или ошибку. Вы можете и не заметить этого. А чтобы разобраться в работе функций – читайте мои посты о различных функциях и справку Microsoft.

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

Аргументы функций – это исхоные данные для расчета функции. Например, для функции СУММ (суммирование) – это перечень чисел, ячеек или диапазонов ячеек для суммирования. Аргументы указываются в скобках после имени функции и разделяются точкой с запятой (в англоязычной версии — запятой). По количеству аргументов, функции могут быть:

  • Без аргументов – не нуждаются в аргументах для расчета. Например, =ПИ() – возвращает число 3,1428.
  • С одним аргументом – нужно ввести всего один аргумент. Например =СТРОЧН(А1) – переведёт в строчный вид все символы в ячейке А1.
  • С несколькими аргументами – нужно ввести определенное число аргументов, больше одного. Например, функция =ПСТР(А1;1;10) вернёт первые 10 символов из строки в ячейке А1.
  • С необязательными аргументами – функция имеет аргументы, которые указывать необязательно. Например, =ВПР(«Иванов»;А1:В30;2;0) будет искать фамилию «Иванов» в диапазоне А1:В30 и вернёт информацию о нём. Последний аргумент здесь – «Интервальный просмотр» — обозначает способ поиска, его указывать необязательно.
  • С переменным количеством аргументов – количество аргументов может изменяться. Например, =СРЗНАЧ(А1;В3:В15;С2:F2) – посчитает среднее значение цифр в указанных диапазонах. Перечисляя ячейки через точку с запятой, вы можете задать разное количество аргументов.

Как вставить функцию в Excel

Чтобы вставить функцию в формулу, можно воспользоваться одним из перечисленных способов:

  1. Если вы знаете имя функции – начните его записывать с клавиатуры, инструмент «Автозаполнение» предложит варианты функций, выберите в списке нужную, нажмите TAB и вводите аргументы;
    как сделать аргументы функции в excelАвтозаполнение при ручном вводе функции
  2. Еще один способ, если вы знакомы с перечнем функций – выбрать на ленте: Формулы – Библиотека функций. В этой группе собраны функции по типам: логические, текстовые, математические и др. Открыв нужную группу – выберите функцию и перейдите к заполнению аргументов.
    как сделать аргументы функции в excelВыбор функции на ленте

Если имя функции вам неизвестно, воспользуйтесь окном Вставка функции. Чтобы его вызвать – попробуйте один из способов:

  1. Нажмите комбинацию клавиш SHIFT+F3
  2. Выполните на ленте Формулы – Библиотека функций – Вставить функцию
  3. Нажать на значок fx слева от строки формул
    как сделать аргументы функции в excelОкно «Вставка функции»

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

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

как сделать аргументы функции в excelОкно» Аргументы функции»

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

Вот и всё о вставке функций на лист, а в следующей статье мы начнём рассматривать текстовые функции. До встречи на страницах блога OfficeЛЕГКО.com!

Поделиться, добавить в закладки или статью

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

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

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

  1. Открыть редактор языка VBA с помощью комбинации клавиш ALT+F11.
  2. В открывшемся окне выбрать пункт Insert и подпункт Module, как показано на рисунке:
  3. Новый модуль будет создан автоматически, при этом в основной части окна редактора появится окно для ввода кода:
  4. При необходимости можно изменить название модуля.
  5. В отличие от макросов, код которых должен находиться между операторами Sub и End Sub, пользовательские функции обозначают операторами Function и End Function соответственно. В состав пользовательской функции входят название (произвольное имя, отражающее ее суть), список параметров (аргументов) с объявлением их типов, если они требуются (некоторые могут не принимать аргументов), тип возвращаемого значения, тело функции (код, отражающий логику ее работы), а также оператор End Function. Пример простой пользовательской функции, возвращающей названия дня недели в зависимости от указанного номера, представлен на рисунке ниже:
  6. После ввода представленного выше кода необходимо нажать комбинацию клавиш Ctrl+S или специальный значок в левом верхнем углу редактора кода для сохранения.
  7. Чтобы воспользоваться созданной функцией, необходимо вернуться к табличному редактору Excel, установить курсор в любую ячейку и ввести название пользовательской функции после символа «=»:

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

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

  1. Создайте новый макрос (нажмите комбинацию клавиш Alt+F8), в появившемся окне введите произвольное название нового макроса, нажмите кнопку Создать:
  2. В результате будет создан новый модуль с заготовкой, ограниченной операторами Sub и End Sub.
  3. Введите код, как показано на рисунке ниже, указав требуемое количество переменных (в зависимости от числа аргументов пользовательской функции):
  4. В качестве «Macro» должна быть передана текстовая строка с названием пользовательской функции, в качестве «Description» — переменная типа String с текстом описания возвращаемого значения, в качестве «ArgumentDescriptions» — массив переменных типа String с текстами описаний аргументов пользовательской функции.
  5. Для создания описания пользовательской функции достаточно один раз выполнить созданный выше модуль. Теперь при вызове пользовательской функции (или SHIFT+F3) отображается описание возвращаемого результата и переменной:

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

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

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

Вид исходной таблицы данных:

Каждому работнику полагается 24 выходных дня с выплатой S=N*24/(365-n), где:

  • N – суммарная зарплата за год;
  • n – число праздничных дней в году.

Создадим пользовательскую функцию для расчета на основе данной формулы:

Код примера:

Public Function Otpusknye(summZp As Long, holidays As Long) As Long
If IsNumeric(holidays) = False Or IsNumeric(summZp) = False Then
    Otpusknye = "Введены нечисловые данные"
    Exit Function
ElseIf holidays
Функции представляют собой зависимость одного элемента (результата) от других элементов (аргументов,.. тех, что внутри :-)). Это как бы понятно. Для того чтобы использовать какую-либо функцию в Excel, следует ввести ее как формулу (нюансы описаны тут) или как часть формулы в ячейку рабочего листа. Последовательность, в которой должны располагаться применяемые в формуле символы и аргументы, называется синтаксисом функции. Все функции используют одинаковые правила синтаксиса. Если нарушить эти правила, то Excel выдаст сообщение о том, что в формуле имеется ошибка и не будет с вами дружить. Но поверьте, в функциях Excel все достаточно однотипно и разобравшись один раз, на одной-двух функциях, в остальных случаях все будет достаточно просто. Правила синтаксиса при записи функций Далее рассмотрены правила, которым необходимо следовать для грамотного и оптимального построения формулы с использованием одной или нескольких функций. Если функция появляется в самом начале формулы, ей должен предшествовать знак равенства, как это имеет место в начале любой формулы. Я об этом уже говорил в предыдущих статьях, но не грех ещё повторить. После этого вводится имя функции и сразу за ним – список аргументов в круглых скобках. Аргументы отделяются друг от друга точкой с запятой «;». Скобки позволяют Excel определить, где начинается и где заканчивается список аргументов. как сделать аргументы функции в excel Функция Excel Заметьте, в записи функции обязательно должны присутствовать открывающая и закрывающая скобки, при этом нельзя вставлять пробелы между названием функции и скобками. В противном случае Excel выдаст сообщение об ошибке. В качестве аргументов можно использовать числа, текст, логические значения, массивы, значения ошибок или ссылки. При этом параметры, задаваемые пользователем, должны иметь допустимые для данного аргумента значения. Например, в приведенной ниже формуле осуществляется суммирование значений в ячейках В2, В3, В4, В5 и Е7, причем часть ячеек — от В2 до В5, представлены как непрерывный диапазон. как сделать аргументы функции в excelАргументы функции Excel Рассмотрим работу функции ОКРУГЛ(арг1;арг2), которая возвращает число, округленное до заданного количества знаков после запятой, и имеет два аргумента: арг1 – адрес ячейки с числом (или само число), которое нужно округлить; арг2 – количество цифр после запятой у числа после округления.
Чтобы округлить число 2,71828, находящееся в ячейке A1, с точностью до одного, двух или трех знаков после запятой и записать результаты вычислений соответственно в ячейки B1, C1 и D1, необходимо действовать следующим образом. Ввести число 2,71828 в ячейку A1. Ввести в ячейки B1, C1 и D1 формулы следующего вида: =ОКРУГЛ(A1;1) =ОКРУГЛ(A1;2) =ОКРУГЛ(A1;3) Аргументы могут быть как константами, так и функциями. Функции, которые являются аргументами другой функции, называются вложенными. Например, просуммируем значения ячеек А1 и А2, предварительно округлив эти значения до двух десятичных знаков: =СУММ(ОКРУГЛ(A1;2);ОКРУГЛ(A2;2)) Здесь функция ОКРУГЛ является вложенной аж два раза, но это не страшно, в формулах Excel можно использовать до семи уровней вложенности функций. Стоит отметить, что в Excel существуют функции, которые не имеют аргументов. Примерами таких функций являются ПИ (возвращает значение числа π, округленное до 15 знаков) или СЕГОДНЯ (возвращает текущую дату). При использовании подобных функций следует в строке формул сразу после названия функции ставить пустые круглые скобки без аргументов. Другими словами, чтобы получить в ячейках значение числа p или текущую дату, следует ввести формулы такого вида: =ПИ() =СЕГОДНЯ() Типы функций Excel Для удобства работы пользователя при построении формул функции в Excel разбиты по категориям: функции управления базами данных и списками, функции даты и времени, финансовые, статистические, текстовые, математические, логические. Текстовые функции используются для обработки текста, а именно: поиска нужных символов, записи символов в строго определенное место текста и т.д. С помощью функций Даты и времени можно решить практически любые задачи, связанные с учетом календарных дат или времени (например, рассчитать число рабочих дней для любого промежутка времени). Логические функции используются при создании сложных формул, которые в зависимости от выполнения тех или иных условий будут реализовывать различные виды обработки данных. Они особо интересны, и о них поговорим в отдельной статье. В Excel широко представлены Математические функции и некоторые я уже привел в примерах. В распоряжении пользователя также находится библиотека Статистических функций, при помощи которой можно осуществлять поиск среднего значения, максимального и минимального элементов и пр.

Формула бесконечно выдаёт ошибку!

KirillOld

Дата: Четверг, 03.03.2022, 12:03 |
Сообщение № 1

Группа: Пользователи

Ранг: Прохожий

Сообщений: 4


Репутация:

0

±

Замечаний:
0% ±


Здравствуйте, магическая ошибка
Есть компьютер ю, на котором установлен Office 2016 (Excel 2016 соответственно), скачал файл и пытаюсь воспользоваться формулой =ПРОМЕЖУТОЧНЫЕ.ИТОГИ(2 N2:N7862), нажимаю Enter и выдаёт ошибку — « вы ввели для этой функции аргументов: слишком мало» , сразу увидел в формуле отсутствие «;» после функции, но опять выдаёт туже самую ошибку, попытался сделать все тоже самое но в конструкторе формул, причём заметил что Excel 2016 создаёт формулу без “;” после функции.
Перенёс файл на другой компьютер и там все работает без ошибок, формула работает, как это трактовать и как исправить не понимаю , возможно ли это в настройках самого excel на компьютере ?
Помогите разобраться пожалуйста

 

Ответить

alexa1965

Дата: Четверг, 03.03.2022, 12:23 |
Сообщение № 2

Группа: Проверенные

Ранг: Обитатель

Сообщений: 288


Репутация:

52

±

Замечаний:
0% ±


2003> 2019

Добрый день, у Вас помимо отсутствия точки с запятой имеется пробел перед диапазоном. Поставьте ; и уберите пробел. И будет счастье…


Главное не быть балабастиком

 

Ответить

KirillOld

Дата: Четверг, 03.03.2022, 12:59 |
Сообщение № 3

Группа: Пользователи

Ранг: Прохожий

Сообщений: 4


Репутация:

0

±

Замечаний:
0% ±


alexa1965, а почему тогда в конструкторе формул Excel, он сам создаёт такую структуру формулы?
И почему на 2 компьютере аналогичная формула работает без отказа?

 

Ответить

alexa1965

Дата: Четверг, 03.03.2022, 13:16 |
Сообщение № 4

Группа: Проверенные

Ранг: Обитатель

Сообщений: 288


Репутация:

52

±

Замечаний:
0% ±


2003> 2019

Заметил такую ситуацию но не к конструкторе формул, а при попытке копирования примера из справки, и точно когда перешел на 16 офис… Не знаю почему так выдает…


Главное не быть балабастиком

 

Ответить

KirillOld

Дата: Четверг, 03.03.2022, 13:26 |
Сообщение № 5

Группа: Пользователи

Ранг: Прохожий

Сообщений: 4


Репутация:

0

±

Замечаний:
0% ±


alexa1965, вот я об этом же, я так же не понимаю почему так и из-за чего это может быть

 

Ответить

alexa1965

Дата: Четверг, 03.03.2022, 14:01 |
Сообщение № 6

Группа: Проверенные

Ранг: Обитатель

Сообщений: 288


Репутация:

52

±

Замечаний:
0% ±


2003> 2019

Ну давайте определимся сразу, под конструктором формул Вы что понимаете? Я лично понимаю это действие как вставка функции. А тут воля фантазий от требуемых задач. И повторяю, если Вы вызываете справку по конкретной функции, то да выдает пример с пробелами.


Главное не быть балабастиком

 

Ответить

KirillOld

Дата: Четверг, 03.03.2022, 14:09 |
Сообщение № 7

Группа: Пользователи

Ранг: Прохожий

Сообщений: 4


Репутация:

0

±

Замечаний:
0% ±


alexa1965, да, под конструктором понимаю тоже самое -«Вставить функцию», в следующем окне я выбираю параметры и нажимаю ОК, он сам генерирует формулу и при изменении любого параметра выдаёт ошибку, даже делал диапазон 2 ячейки , аналогичная ошибка.

 

Ответить

alexa1965

Дата: Четверг, 03.03.2022, 14:15 |
Сообщение № 8

Группа: Проверенные

Ранг: Обитатель

Сообщений: 288


Репутация:

52

±

Замечаний:
0% ±


2003> 2019

Ну тогда приходим к правилам форума, на пальцах и по фото не лечим… Приложите свой файлик и посмотрим.


Главное не быть балабастиком

 

Ответить

Понравилась статья? Поделить с друзьями:
  • У всех функций есть только один аргумент excel
  • У вас нет разрешения на удаление этого файла word android как удалить файл
  • У вас нет разрешения на открытие этого файла word
  • У вас нет разрешения для открытия этого документа word
  • У вас есть файл excel с графиком отпусков