Табличні процесори / Практич роб VBA для Excel / Занятие №2
Прежде чем приступить к написанию программ на VBA, воспользуемся простой возможностью создания программы (макроса) на языке VBA с использованием MacroRecorder.
MacroRecorder — это стандартное средство записи макросов в Excel, посредством которого можно записывать последовательность действий пользователя и получать соответствующий код (программу) на VBA. Программа, созданная с помощью MacroRecorder, называется макросом.
Основное назначение макросов — автоматизация работы пользователя. Кроме этого, созданный код макроса может служить основой для дальнейших разработок.
При записи макроса запоминаются все действия пользователя, будь то нажатие клавиши или выбор определенной команды меню, которые автоматически преобразуются в программный код на языке VBA.
Каждому макросу дается имя, а для быстрого запуска макроса можно создать или присвоить ему “горячую” клавишу (клавишу, по нажатию на которую будет производиться запуск макроса). После запуска макрос будет автоматически выполнен тем приложением, в котором он создан и запущен. При выполнении макроса компьютер воспроизведет все действия пользователя.
Макрос — это именованная последовательность заданных пользователем команд и действий, хранящаяся в форме программы на языке VBA.
Для работы с макросами в приложении Excel имеется специальная панель.
Для вызова этой панели необходимо выполнить последовательно команды меню: “Вид | Панель инструментов | Visual Basic”.
1. Нажать на кнопку “Запись макроса” на панели Visual Basic.
2. В диалоговом окне “Запись макроса” присвоить имя макросу. (В имени макроса первым символом должна быть буква, не допускается использование пробелов.)
Рассмотрим процедуру записи последовательности действий на следующем примере: определим максимальное значение в выделенном диапазоне ячеек.
В таблице представлена информация о самых ценных алмазах в мире. Нам требуется создать макрос для нахождения алмаза с максимальной массой в граммах.
Это действие в Excel можно выполнить с помощью стандартной функции МАКС, но мы продемонстрируем на этом примере, как сохранить последовательность действий пользователя и на их основе создать макрос.
3. В ячейке D10 наберите “Максимальная масса в граммах”. Курсор после набора текста может находиться в любой ячейке, кроме ячейки, в которой мы хотим получить результат. На панели Visual Basic нажмите на кнопку “Запись макроса”. Появится диалоговое окно “Запись макроса”:
Введите вместо названия “Макрос1” название макроса “Алмаз” и нажмите “ОК”. На экране появится панель инструментов “Остановить запись”. Теперь все производимые нами действия будут записываться до тех пор, пока не будет нажата эта кнопка. Не выполняйте никаких лишних действий. Все ваши действия фиксируются и записываются.
Установите курсор в ячейку E10. В этой ячейке должен появиться результат.
4. Выполните команду “Вставка | Функция”. Появится диалоговое окно “Мастер функций”. В окне “Категории функций” выберите “Статистические”. Затем выберите функцию МАКС. Появится диалоговое окно, в первой строке которого необходимо указать диапазон, в котором мы будем искать максимальное значение, — E2:E9. Нажмите “ОК”.
5. Щелкните на кнопке “Остановить запись” на панели Visual Basic. Запись макроса завершена.
При выполнении макроса Excel повторяет те же действия, которые пользователь выполнял в процессе его создания. Продолжим работу с созданным макросом.
Чтобы проверить, как работает созданный нами макрос, прежде всего надо удалить из ячейки E10 полученный результат.
2. Выполните команду “Сервис | Макрос | Макросы”. Появится диалоговое окно, показанное на рис. 4:
3. Выделите макрос “Алмаз” и щелкните по кнопке “Выполнить”. В ячейке E10 появится результат.
Во время записи макроса Excel запоминает ваши действия и преобразует их в код VBA. Можно просмотреть полученный код и отредактировать его, если в этом есть необходимость. Для просмотра созданного макроса выполните команду “Сервис | Макрос | Макросы”. Появится уже знакомое диалоговое окно “Макрос”.
Выделим макрос “Алмаз” и щелкнем по кнопке “Изменить”. Откроется окно редактора.
Рис. 5. Использование редактора Visual Basic для просмотра и редактирования кода VBA
При записи макроса выполнялись всего два действия. Сначала мы установили курсор в ячейку E10. На языке VBA этому действию соответствует строка:
Затем мы вызвали функцию МАКС и в качестве аргумента указали диапазон ячеек E2:E9:
Полученный код можно редактировать непосредственно в редакторе Visual Basic. Изменим размер шрифта в ячейке E10 на 16:
Можно также изменить цвет шрифта. Например, изменим цвет текста в ячейке на красный:
Значения, которые может принять свойство Font.ColorIndex, изменяются от 1 до 56.
После внесенных изменений текст макроса стал следующим:
Закройте окно редактора, вернитесь на лист Excel, удалите содержимое ячейки E10 и запустите макрос на выполнение.
Разрабатывая приложение, надо думать о том, чтобы создать легкий и удобный интерфейс для выполнения задач автоматизации. Запуск макросов на выполнение посредством команд меню или кнопок на панели Visual Basic — не слишком удобный механизм для пользователей.
Для запуска макроса можно использовать любой элемент, находящийся на рабочем листе. Например, можно использовать для запуска любое графическое изображение. Рассмотрим соответствующий пример.
Используя панель “Рисование”, нарисуем на листе любую автофигуру. Щелкнем правой кнопкой мыши на изображении и в открывшемся контекстном меню выберем команду “Назначить макрос”. Отобразится диалоговое окно “Назначить макрос объекту”. Затем необходимо выбрать макрос “Алмаз” и щелкнуть вне графического изображения, чтобы снять выделение с объекта.
Теперь макрос “Алмаз” можно запустить посредством щелчка на автофигуре.
Запустить макрос на выполнение можно и другим способом, использовав командную кнопку. Вставить командую кнопку непосредственно на рабочий лист Excel можно с помощью панели инструментов “Формы”. Затем необходимо назначить ей наш макрос.
1. Выполнить команду “Сервис | Макрос | Макросы”. Появится уже знакомое диалоговое окно.
2. Выделить макрос, подлежащий удалению, и щелкнуть по кнопке “Удалить”.
3. Подтвердить выполнение операции в специальном окне, которое появится.
Множество операций Excel можно автоматизировать посредством макросов. Но макросы имеют и ограничения. С помощью макросов нельзя выполнить различные действия в зависимости от содержимого ячейки, нельзя вызвать некоторые диалоговые окна Excel, например, сохранить документ, нельзя отобразить и использовать пользовательские формы ввода данных.
Vba excel обращение к ячейке
Проблема с формулой, которая говорит только о том, чтобы идти на n-й лист, — это то, что если вы хотите добавить больше листов в свой файл excel, а первый горячий лист для применения вашего макроса больше не будет вашим 4-м или 5-м? Потому что тогда вам нужно вернуться и обновить каждый макрос.
Работа с пользовательскими формами в VBA
В настоящей заметке рассматриваются методы создания пользовательских форм и работы с ними.[1] Пользовательские диалоговые окна создаются на основе технологии пользовательских форм, к которым можно получить доступ из редактора Visual Basic (VBE; подробнее см. Настройка среды Visual Basic Editor).
Стандартная последовательность шагов при этом следующая:
- Вставьте новую форму UserForm в проект VBAProject рабочей книги.
- Добавьте элементы управления в форму UserForm.
- Настройте свойства добавленных элементов управления.
- Создайте процедуры «обработчики событий» для элементов управления. Эти процедуры добавляются в модуль кода UserForm и выполняются при возникновении различных событий (например, при щелчке на кнопке).
- Разработайте процедуру, которая отображает форму UserForm. Эта процедура находится в модуле VBA (а не в модуле кода для формы UserForm).
- Определите простой способ вызова на выполнение процедуры, созданной в п. 5. Можно поместить кнопку на рабочий лист, команду ленты и т.д.
Вставка новой формы UserForm
Добавление элементов управления в пользовательское диалоговое окно
Чтобы добавить элементы управления в форму UserForm, воспользуйтесь панелью Toolbox. Обратите внимание, что в VBE отсутствуют команды меню, предназначенные для добавления элементов управления. Если панель Toolbox не отображена на экране, пройдите по меню View –> Toolbox (рис. 2).
Рис. 2. Окно Toolbox для добавления элементов управления в пользовательскую форму
Элементы управления в окне Toolbox
Рис. 3. Эта форма UserForm содержит 15 элементов управления
Элемент управления CheckBox (6) предоставляет пользователю возможность выбрать один из двух вариантов: включить или выключить. Если галочка установлена, то CheckBox имеет значение True, в противном случае – False.
ComboBox (4) подобен объекту ListBox (5). Отличие заключается в том, что ComboBox представляет раскрывающийся список, в котором в определенный момент времени отображается только одно значение. Кроме того, пользователю в поле списка разрешено вводить значение, которое необязательно представляет одну из опций объекта ComboBox.
Каждое создаваемое диалоговое окно будет иметь как минимум один элемент управления CommandButton (10). Обычно используются кнопки ОК и Отмена.
Элемент управления Frame (9) применяется в качестве оболочки для других элементов управления. Он добавляется в диалоговое окно либо в целях эстетики, либо из соображений логического группирования однотипных элементов управления. Элемент управления Frame требуется в случае, если в диалоговом окне содержится более одного набора элементов управления OptionButton.
Элемент управления Label (2) отображает текст в диалоговом окне.
Элемент управления ListBox (5) предоставляет список опций, из которого пользователь может выбрать один вариант (или несколько). Вы вправе указать диапазон на листе, который содержит элементы списка. Этот диапазон может состоять из нескольких столбцов. Кроме того, элемент управления ListBox может заполняться с помощью кода VBA.
Элемент управления MultiPage (12) позволяет создавать диалоговые окна с несколькими вкладками, которые подобны появляющимся после выбора команды Формат ячеек. По умолчанию элемент управления MultiPage состоит из двух вкладок.
Элемент управления RefEdit (16) используется тогда, когда пользователь должен выделить диапазон ячеек на листе.
Элемент управления ScrollBar (13) в некотором смысле подобен элементу управления SpinButton. Разница заключается в том, что пользователь может перетаскивать ползунок объекта ScrollBar для изменения значения с большим приращением. Элемент управления ScrollBar рекомендуется использовать при выборе значения из большого диапазона.
Элемент управления SpinButton (14) позволяет выбрать значение после щелчка на одной из двух кнопок со стрелками. Одна из них применяется для увеличения значения, а вторая — для уменьшения. Элемент управления SpinButton часто используется совместно с элементами управления TextBox и Label, которые содержат текущее значение элемента управления SpinButton.
Элемент управления TabStrip (11) подобен элементу управления MultiPage, однако использовать его сложнее. Элемент управления TabStrip, в отличие от MultiPage, не выступает контейнером для других объектов. Как правило, элемент управления MultiPage обладает более широкими возможностями.
Элемент управления TextBox (3) позволяет пользователям вводить текст в диалоговом окне.
Использование элементов управления на рабочем листе
Элементы управления на рабочем листе могут происходить из двух источников:
- Элементы управления формами. Эти элементы управления являются внедряемыми объектами.
- Элементы управления ActiveX. Эти элементы управления являются подмножеством элементов, доступных в пользовательских диалоговых окнах.
Если Excel находится в режиме конструктора, тестирование элементов управления невозможно. В этом случае нужно выйти из режима конструктора, щелкнув на кнопке Разработчик –> Элементы управления –> Режим конструктора. Эта кнопка работает, как переключатель.
Настройка элементов управления пользовательского диалогового окна
Продолжим описание использования элементов управления в UserForm. После того, как элементов управления помещен в диалоговое окно, его можно переместить и изменить размер. Можно выделить несколько элементов управления. Для этого следует удерживать нажатой клавишу и щелкать на объектах либо обвести указателем мыши необходимые элементы управления.
Меню Format окна VBE предоставляет несколько команд, которые позволяют точно разместить и выровнять элементы управления в диалоговом окне. Перед использованием этих команд необходимо указать элементы управления, к которым они будут применяться (рис. 5).
Если выделено несколько элементов управления, на выделяющей рамке одного из них (обычно последнего) вместо обычных черных маркеров появляются белые. Это означает, что этот элемент управления играет роль основы, на базе которой определяются размеры и расположение других элементов управления.
Изменение свойств элементов управления
Каждый элемент управления характеризуется набором параметров, которые определяют внешний вид и поведение элемента управления. Свойства элемента управления можно изменять в следующих случаях:
- В момент проектирования при разработке пользовательского диалогового окна. Для этого используется окно Properties.
- В процессе выполнения, когда пользовательское диалоговое окно отображается на экране. Для этого воспользуйтесь инструкциями VBA.
Работа с окном Properties. В VBE окно Properties позволяет изменять свойства выделенного элемента управления (это может быть обычный элемент управления или сама форма UserForm, рис. 6).
Рис. 6. Окно Properties для выделенного элемента управления OptionButton
В окне Properties есть две вкладки. На вкладке Alphabetic свойства выбранного объекта отображаются в алфавитном порядке. На вкладке Categorized эти свойства сгруппированы по категориям. Обе вкладки отображают одни и те же свойства.
После выделения отдельных свойств (например, Font и Picture) рядом с ними отображается небольшая кнопка с троеточием. Щелчок на этой кнопке приводит к вызову диалогового окна настройки свойства.
Объекту UserForm присущ ряд свойств, значения которых можно изменять. Эти свойства применяются в качестве значений, заданных по умолчанию, для элементов управления, которые добавляются в пользовательские диалоговые окна. Например, если изменить свойство Font пользовательского диалогового окна, все добавленные в окно элементы управления будут применять этот шрифт.
Многие пользователи предпочитают имена, которые указывают на тип объекта. В предыдущем примере был использован префикс ob, который указывает на то, что объект является элементом управления OptionButton.
Чтобы получить доступ к справочной информации о свойствах различных элементов управления, щелкните на свойстве в окне Properties и нажмите клавишу .
Для того чтобы указать порядок активизации, выберите команду View –> Tab Order. Кроме того, можно щелкнуть правой кнопкой мыши на UserForm и выбрать пункт Тab Order из появившегося контекстного меню. Excel отобразит диалоговое окно Tab Order (Порядок просмотра, рис. 7).
Рис. 7. В диалоговом окне Tab Order измените порядок просмотра элементов управления
Большинству элементов управления диалогового окна можно назначить комбинацию клавиш. Таким образом, пользователь получит доступ к элементу управления, нажав и указанную клавишу. Применив свойство Accelerator в окне Properties, можно определить клавишу для активизации элемента управления.
Некоторые элементы управления, например, TextBox, лишены свойства Accelerator, поскольку не отображают значение свойства Caption. Но к таким элементам можно получить доступ с помощью клавиатуры, воспользовавшись свойством Label. Присвойте клавишу элементу управления Label и расположите его в порядке просмотра перед элементом TextBox.
Отображение пользовательского диалогового окна
Для того чтобы отобразить пользовательское диалоговое окно с помощью VBA, необходимо создать процедуру, которая вызывает метод Show объекта UserForm. Форму UserForm невозможно отобразить, не выполнив как минимум одну строку кода VBA:
[expert_bq id=»1570″]Для этого нужно сформировать список из новых имен в свободных ячейках рабочего листа, а затем указать диапазон этих ячеек в диалоговом окне надстройки. Если же вы хотите что-то уточнить, обращайтесь ко мне![/expert_bq] Такой код называется инструкцией If…Then. Инструкция If…Then указывает Excel выполнять весь код между строкой If и строкой End If, но только при выполнении условия, приведенного в строке If. В примере проверяемое условие задается следующей строкой.Макросы и элементы управления
- Элементы управления формами. Эти элементы управления являются внедряемыми объектами.
- Элементы управления ActiveX. Эти элементы управления являются подмножеством элементов, доступных в пользовательских диалоговых окнах.
Элемент управления SpinButton (14) позволяет выбрать значение после щелчка на одной из двух кнопок со стрелками. Одна из них применяется для увеличения значения, а вторая — для уменьшения. Элемент управления SpinButton часто используется совместно с элементами управления TextBox и Label, которые содержат текущее значение элемента управления SpinButton.
Vba excel обращение к ячейке
В приложении Excel все данные как правило находятся в ячейках на листах, с которыми макросы работают как с базой данных. Поэтому, начинающему программисту VBA важно понимать как читать значения из ячейки Excel в переменные или массивы и, наоборот, записывать какие-либо значения на лист в ячейки.
Обращение к конкретной ячейке
Прежде чем читать или записывать значение в ячейке, нужно определиться с тем, как можно указать какая именно ячейка нам необходима.
Полный путь к ячейке A1 в Книге1 на Листе1 можно записать двумя вариантами:
Пример 1: Обратиться к ячейке A3 находящейся в Книге1 на Листе1
Однако, как правило, полный путь редко используется, т.к. макрос работает с Книгой, в которой он записан и часто на активном листе. Поэтому путь к ячейке можно сократить и написать просто:
Пример 2: Обратиться к ячейке A1 в текущей книге на активном листе
Если всё же путь к книге или листу необходим, но не хочется его писать при каждом обращении к ячейкам, можно использовать конструкцию With End With. При этом, обращаясь к ячейкам, необходимо использовать в начале «.» (точку).
Пример 3: Обратиться к ячейке A1 и B1 в Книге1 на Листе2.
Так же, можно обратиться и к активной (выбранной в данный момент времени) ячейке.
Пример 4: Обратиться к активной ячейке на Листе3 текущей книги.
Чтение значения из ячейки
Есть 3 способа получения значения ячейки, каждый из которых имеет свои особенности:
- Value2 – базовое значение ячейки, т.е. как оно хранится в самом Excel-е. В связи с чем, например, дата будет прочтена как число от 1 до 2958466, а время будет прочитано как дробное число. Value2 – самый быстрый способ чтения значения, т.к. не происходит никаких преобразований.
- Value – значение ячейки, приведенное к типу ячейки. Если ячейка хранит дату, будет приведено к типу Date. Если ячейка отформатирована как валюта, будет преобразована к типу Currency (в связи с чем, знаки с 5-го и далее будут усечены).
- Text – визуальное отображение значения ячейки. Например, если ячейка, содержит дату в виде «число месяц прописью год», то Text (в отличие от Value и Value2) именно в таком виде и вернет значение. Использовать Text нужно осторожно, т.к., если, например, значение не входит в ячейку и отображается в виде «#####» то Text вернет вам не само значение, а эти самые «решетки».
По-умолчанию, если при обращении к ячейке не указывать способ чтения значения, то используется способ Value.
Пример 5: В ячейке A1 активного листа находится дата 01.03.2018. Для ячейки выбран формат «14 марта 2001 г.». Необходимо прочитать значение ячейки всеми перечисленными выше способами и отобразить в диалоговом окне.
Пример 6: В ячейке С1 активного листа находится значение 123,456789. Для ячейки выбран формат «Денежный» с 3 десятичными знаками. Необходимо прочитать значение ячейки всеми перечисленными выше способами и отобразить в диалоговом окне.
При присвоении значения переменной или элементу массива, необходимо учитывать тип переменной. Например, если оператором Dim задан тип Integer, а в ячейке находится текст, при выполнении произойдет ошибка «Type mismatch». Как определить тип значения в ячейке, рассказано в следующей статье.
Пример 7: В ячейке B1 активного листа находится текст. Прочитать значение ячейки в переменную.
Таким образом, разница между Text, Value и Value2 в способе получения значения. Очевидно, что Value2 наиболее предпочтителен, но при преобразовании даты в текст (например, чтобы показать значение пользователю), нужно использовать функцию Format.
Запись значения в ячейку
Осуществить запись значения в ячейку можно 2 способами: с помощью Value и Value2. Использование Text для записи значения не возможно, т.к. это свойство только для чтения.
Пример 8: Записать в ячейку A1 активного листа значение 123,45
Пример 9: Записать в ячейку A2 активного листа дату 1 марта 2018 года
В данном примере тоже запишется одно и то же значение в ячейку A2 активного листа.
Визуальное отображение значения на экране будет зависеть от того, какой формат ячейки выбран на листе.
Как обратиться к ячейке по ее имени ?
Q: Как обратиться к ячейки по ее имени ? Т.е. есть Лист1 и в нем ячейки с именем Дебет и Кредит. Хочy подсчитать Дебет-Кредит средствами Excel VBA. Попробовал Range(Дебет)-Range(Кредит), ругается, что не описаны переменные.
A: Если я правильно тебя понял, нужно разыменовать ячейку из кода Excel VBA. Вот фрагмент кода, который решает такую задачу:
Обращение к ячейке на листе Excel из кода VBA. Запись информации в ячейку. Чтение информации из ячейки. Очистка значения ячейки. Метод ClearContents объекта Range.
Обращение к ячейке
Допустим, у нас есть два открытых файла: «Книга1» и «Книга2», причем, файл «Книга1» активен и в нем находится исполняемый код VBA.
В общем случае при обращении к ячейке неактивной рабочей книги «Книга2» из кода файла «Книга1» прописывается полный путь:
Удобнее обращаться к ячейке через свойство рабочего листа Cells(номер строки, номер столбца), так как вместо номеров строк и столбцов можно использовать переменные. Обратите внимание, что при обращении к любой рабочей книге, она должна быть открыта, иначе произойдет ошибка. Закрытую книгу перед обращением к ней необходимо открыть.
Теперь предположим, что у нас в активной книге «Книга1» активны «Лист1» и ячейка на нем «A1». Тогда обращение к ячейке «A1» можно записать следующим образом:
Точно также можно обращаться и к другим ячейкам активного рабочего листа, кроме обращения ActiveCell, так как активной может быть только одна ячейка, в нашем примере – это ячейка «A1».
Если мы обращаемся к ячейке на неактивном листе активной рабочей книги, тогда необходимо указать этот лист:
Имя ярлыка может совпадать с основным именем листа. Увидеть эти имена можно в окне редактора VBA в проводнике проекта. Без скобок отображается основное имя листа, в скобках – имя ярлыка.
Запись информации в ячейку
Содержание ячейки определяется ее свойством «Value», которое в VBA Excel является свойством по умолчанию и его можно явно не указывать. Записывается информация в ячейку при помощи оператора присваивания «=»:
Вместе с числами и текстом можно использовать переменные. Примеры здесь и ниже приведены для активного листа. Для неактивных листов дополнительно необходимо указывать имя листа, как в разделе «Обращение к ячейке».
Чтение информации из ячейки
Считать информацию из ячейки в переменную можно также при помощи оператора присваивания «=»:
Точно также можно обмениваться информацией между ячейками:
Очистка значения ячейки
Очищается ячейка от значения с помощью метода ClearContents. Кроме того, можно присвоить ячейке значение нуля или пустой строки:
VBA Excel. Ячейки (обращение, запись, чтение, очистка) : 65 комментариев
надо на Лист3 в cells (2, 6) вывести второе наибольшее значение из Range («F4:D12») Лист1
на формулах это будет так :
F2=НАИБОЛЬШИЙ(Лист1! F4:D12;2)
Здравствуйте, как записать число в ячейку, если есть OptionButton.
То есть 4 варианта ответа, при выборе правильного в ячейку записывается 1, если нет то 0.
Привет, Руслан!
Допустим, правильный ответ соответствует выбору OptionButton3, тогда
Добрый день!
как узнать номер страницы ( которая будет отпечатана) для ячейки?
Добрый день, Александр!
Если я правильно понял вопрос, имя листа вы можете узнать в окне редактора VBA в проводнике проекта, который обычно расположен слева.
Без скобок отображается основное имя листа, которое используется так: Лист1.Cells(1, 1) = 33 .
В скобках отображается имя ярлыка, которое используется так: Sheets(«Имя ярлыка»).Cells(2, 1) = 22 .
Добрый день!
Можно ли реализовать следующий алгоритм: Ячейка, допустим N=A+B+C+. +(N-1). Если сумма ячейки N
Привет, Илья!
Эта задача в подавляющем большинстве случаев не имеет решения из-за редко выполнимого условия: «пока N не станет равным X». Она всегда будет иметь решение только при условии: «пока N не станет больше или равным X». Если второй вариант интересует, напишите.
Доброе утро, Илья!
Чтобы пример был рабочим, заменим в формуле N=A+B+C+. +(N-1) условные обозначения ячеек переменными:
N на n,
A на a,
B+C+. на y,
ячейку для сравнения X на x, тогда
Когда вставляю функцию в ячейку, то после ConV открывается автоматом скобка (зачем. ) а потом ругается на имя файла.
Понимаю что туплю, но не хочу заново лопатить весь VBA.
Если не трудно, подскажите правильный путь
Привет, Константин!
Функции должно присваиваться возвращаемое значение, текст («Евро») в коде функции заключается в прямые кавычки:
код подсказки удален, так как оказался ошибочным
Пока не помогло.
Сейчас выглядит так:
код с ошибочной подсказкой удален
Адрес ячейки, в которую записывается результат в вашем примере, надо заменить на имя функции:
Сообщите о результатах. Тесты показали, что работает, но обновляется значение в ячейке с функцией только после вставки в нее курсора и нажатия клавиши Enter.
Не знаю, решит ли это ваши задачи, но я предложил бы следующую полностью рабочую функцию:
Вставляете в мастере функций начальные ячейки, ячейку kurs делаете абсолютной и функцию можно копировать протягиванием.
Добрый день, Евгений!
Спасибо, все работает. И первый вариант но с Enter, и второй без него.
Создание макросов в excel (на примере) — ПОЛЕЗНЫЕ ПРОГРАММЫ ДЛЯ УЧЕБЫ И РАБОТЫ
- Value2 – базовое значение ячейки, т.е. как оно хранится в самом Excel-е. В связи с чем, например, дата будет прочтена как число от 1 до 2958466, а время будет прочитано как дробное число. Value2 – самый быстрый способ чтения значения, т.к. не происходит никаких преобразований.
- Value – значение ячейки, приведенное к типу ячейки. Если ячейка хранит дату, будет приведено к типу Date. Если ячейка отформатирована как валюта, будет преобразована к типу Currency (в связи с чем, знаки с 5-го и далее будут усечены).
- Text – визуальное отображение значения ячейки. Например, если ячейка, содержит дату в виде «число месяц прописью год», то Text (в отличие от Value и Value2) именно в таком виде и вернет значение. Использовать Text нужно осторожно, т.к., если, например, значение не входит в ячейку и отображается в виде «#####» то Text вернет вам не само значение, а эти самые «решетки».
В ячейках J42:J43 создадим Диапазон условий для Расширенного фильтра. В первую ячейку запишем название столбца Фамилия, во вторую — формулу, которая выбирает нужную фамилию из списка по номеру в списке:












