den_erfort Пользователь Сообщений: 77 |
Стоит чистая версия Офиса 2003 на машине, переустанавливать нельзя ,она зарегистрированная. В Eхcel отсутствует ряд функций( мне нужна очень функция ЧИСТРАБДНИ ) можно как-то догрузить их туда или как-то встроить? |
The_Prist Пользователь Сообщений: 14182 Профессиональная разработка приложений для MS Office |
Конкретно для этой функции надо всего лишь подключить надстройку Пакет анализа. Если речь про функции, которые были добавлены вне надстроек(вроде ЕСЛИОШИБКА, СУММЕСЛИМН), то никак. Только написав свой аналог на VBA. Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
den_erfort Пользователь Сообщений: 77 |
The_Prist,как включить Пакет анализа |
The_Prist Пользователь Сообщений: 14182 Профессиональная разработка приложений для MS Office |
А Яндекс не дает ответа? Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
den_erfort Пользователь Сообщений: 77 |
The_Prist,яндекс не пользую, а гугл не говорит толком |
The_Prist Пользователь Сообщений: 14182 Профессиональная разработка приложений для MS Office |
#6 27.02.2016 14:57:59
http://g.zeos.in/?q=%D0%BA%D0%B0%D0%BA%20%D0%B2%D0%BA%D0%BB%D1%8E%D1%87%D0%B8%D1%82%D1%8C%20%D0%BF%D… первые две ссылки раскрывают вопрос на все 100% Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
||
den_erfort Пользователь Сообщений: 77 |
The_Prist, вы не читали то что там написано. 1я ссылка касается перевода. Вторая вообще не про 2003 офис |
Юрий М Модератор Сообщений: 60585 Контакты см. в профиле |
#8 27.02.2016 15:28:58
Похоже, это Вы плохо читали )) По первой ссылке прочитайте второе сообщение. |
||
The_Prist Пользователь Сообщений: 14182 Профессиональная разработка приложений для MS Office |
#9 27.02.2016 17:03:53
Ну это да. Если прочитать первые пару строк — то конечно ничего нет. Вы так никогда ничего не найдете в интернете. Откройте вротую ссылку и доберитесь до сообщения: Автор: ayrin, Дата: 13.04.2010 17:50. Может появится понимание как информацию в интернете искать. Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
||
МВТ Пользователь Сообщений: 1198 |
#10 27.02.2016 17:56:22 Ладно, пожалеем человека, который не умеет пользоваться поиском. Вот макрос, вроде бы работает правильно
Изменено: МВТ — 27.02.2016 17:57:52 |
||
Sanja Пользователь Сообщений: 14838 |
#11 27.02.2016 18:04:12
. это наверное еще в больший ступор введет. Будьте готовы рассказать что это и как это применить Согласие есть продукт при полном непротивлении сторон. |
||
МВТ Пользователь Сообщений: 1198 |
#12 27.02.2016 18:09:35 Sanja, не, теперь не моя очередь |
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. Более подробную информацию вы можете найти по этой ссылке.
Надеюсь, эти рекомендации помогут вам решить проблему, когда ваша пользовательская функция не работает либо работает не так, как вам хотелось бы.
AlexK, спасибо большое, именно этого я и добивался в качестве ответа по типу: «нет, братан, в Excel2003-e все с аргументами в порядке, ищи причину в другом» — т.е. 5-ти секундный ответ — и тема была бы закрыта.
На самом деле причина оказалось банальная — почему в Excel2007 все работает, а в 2003 нет — в таблице в колонке «K» я использовал стандартные функции (определение четные/нечетные), которых в 2003 небыло, поэтому просто пришлось ее переписать и проблема решилась:
Visual Basic | ||
|
В любом случае, прикладываю файл с функциями, как Вы предложили. Правда редуцированный до одной таблицы, иначе он занимает порядка 1,5 МБ
Поэтому проблема решена, большое спасибо, тема похоже закрыта!
Функция поиск решения в Excel по умолчанию отключена. Для того, что начать пользоваться данным инструментом, вам необходимо его сначала подключить.
Как включить поиск решения в Excel 2003? Ответ очень прост. Для этого необходимо подключить надстройку Поиск решения. Для ее подключения перейдите в Сервис | Надстройки
Обратите внимание, что функция Поиск решения подключается в меню Надстройки, а не Настройки. Далее откроется окно доступных надстроек и вам необходимо поставить галочку напротив надстройки Поиск решения.
Если компонент Поиск решения не установлен, то Microsoft Excel предложит вам установить его.
После установки функции Поиск решения в Excel 2003, она станет доступной для использования.
Где находится Поиск решения в Excel 2003? Ответ так же очень прост — в меню Сервис | Поиск решения
Содержание
- Пропажа строки формул
- Причина 1: изменение настроек на ленте
- Причина 2: настройки параметров Excel
- Причина 3: повреждение программы
- Вопросы и ответы
Строка формул – один из основных элементов приложения Excel. С её помощью можно производить расчеты и редактировать содержимое ячеек. Кроме того, при выделении ячейки, где видно только значение, в строке формул будет отображаться расчет, с помощью которого это значение было получено. Но иногда данный элемент интерфейса Экселя пропадает. Давайте разберемся, почему так происходит, и что в этой ситуации делать.
Пропажа строки формул
Собственно, пропасть строка формул может всего по двум основным причинам: изменение настроек приложения и сбой в работе программы. В то же время, эти причины подразделяются на более конкретные случаи.
Причина 1: изменение настроек на ленте
В большинстве случаев исчезновение строки формул связано с тем, что пользователь по неосторожности снял галочку, отвечающую за её работу, на ленте. Выясним, как исправить ситуацию.
- Переходим во вкладку «Вид». На ленте в блоке инструментов «Показать» около параметра «Строка формул» устанавливаем флажок, если он снят.
- После этих действий строка формул вернется на свое прежнее место. Перезагружать программу или проводить какие-то дополнительные действия не нужно.
Причина 2: настройки параметров Excel
Ещё одной причиной исчезновение ленты может быть её отключение в параметрах Excel. В этом случае её можно включить таким же способом, как было описано выше, а можно произвести включение и тем же путем, которым она была отключена, то есть, через раздел параметров. Таким образом, пользователь имеет выбор.
- Переходим во вкладку «Файл». Кликаем по пункту «Параметры».
- В открывшемся окне параметров Эксель перемещаемся в подраздел «Дополнительно». В правой части окна этого подраздела ищем группу настроек «Экран». Напротив пункта «Показывать строку формул» устанавливаем галочку. В отличие от предыдущего способа, в этом случае нужно подтвердить изменение настроек. Для этого жмем на кнопку «OK» в нижней части окна. После этого строка формул будет включена снова.
Причина 3: повреждение программы
Как видим, если причина была в настройках, то исправляется она довольно просто. Намного хуже, когда исчезновение строки формул стало следствием сбоя работы или повреждения самой программы, а вышеописанные способы не помогают. В этом случае имеет смысл провести процедуру восстановления Excel.
- Через кнопку Пуск переходим в Панель управления.
- Далее перемещаемся в раздел «Удаление программ».
- После этого запускается окно удаления и изменения программ с полным перечнем приложений, установленных на ПК. Находим запись «Microsoft Excel», выделяем её и жмем на кнопку «Изменить», расположенную на горизонтальной панели.
- Запускается окно изменения пакета Microsoft Office. Устанавливаем переключатель в позицию «Восстановить» и жмем на кнопку «Продолжить».
- После этого выполняется процедура восстановления программ пакета Microsoft Office, в том числе и Excel. После её завершения проблем с показом строки формул быть не должно.
Как видим, строка формул может пропасть по двум основным причинам. Если это просто неправильно выставленные настройки (на ленте или в параметрах Excel), то вопрос решается довольно легко и быстро. Если же проблема связана с повреждением или серьезным сбоем в работе программы, то придется пройти процедуру восстановления.
Еще статьи по данной теме: