Excel vba макрос автоматическое заполнение таблицы из другой таблицы

Обновлено: 04.07.2024

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

Автозаполнение при вводе раскрывающегося списка с кодом VBA

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

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

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

2. Перед вставкой поля со списком вам необходимо добавить вкладку «Разработчик» на ленту Excel. Если на ленте отображается вкладка Разработчик, перейти к шагу 3. В противном случае сделайте следующее: Нажмите Файл > Параметры для открытия Параметры окно. В этом Параметры Excel окна, нажмите Настроить ленту на левой панели проверьте разработчик поле, а затем щелкните OK кнопка. Смотрите скриншот:


3. Нажмите разработчик > Вставить > Поле со списком (элемент управления ActiveX).


4. Нарисуйте поле со списком на текущем листе. Щелкните его правой кнопкой мыши и выберите Свойства из контекстного меню.


5. в Свойства диалоговое окно, замените исходный текст в (Имя) поле с TempCombo.


6. Выключите Режим проектирования кликнув разработчик > Режим дизайна.

Затем примените приведенный ниже код VBA

7. Щелкните правой кнопкой мыши вкладку текущего листа и выберите Просмотреть код из контекстного меню. Смотрите скриншот:


8. В дебюте Microsoft Visual Basic для приложений окна, скопируйте и вставьте приведенный ниже код VBA в окно кода рабочего листа.

Код VBA: автозаполнение при вводе в раскрывающемся списке


9. Нажмите другой + Q клавиши одновременно, чтобы закрыть Приложения Microsoft Visual Basic окно.

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


Примечание: Этот код не работает для объединенных ячеек.

Автозаполнение при вводе раскрывающегося списка с помощью замечательного инструмента

Поскольку многим пользователям Excel сложно работать с VBA, здесь рекомендуется Раскрывающийся список с возможностью поиска особенность Kutools for Excel чтобы помочь вам легко заполнить раскрывающийся список автоматически при вводе первого символа.

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

1. Нажмите Kutools > Раскрывающийся список > Раскрывающийся список с возможностью поиска > Параметры.


2. Во всплывающем Раскрывающийся список с возможностью поиска В диалоговом окне необходимо выполнить следующие настройки.

2.1). Обращаться к раздел, укажите диапазон или рабочий лист, где вы хотите применить функцию раскрывающегося списка с возможностью поиска; Советы: После выбора Указанный объем переключатель, вы можете выбрать Текущий рабочий лист, Текущая рабочая тетрадь or Все книги из раскрывающегося списка в соответствии с вашими потребностями. 2.2). Параметры раздел, выберите Соответствует только началу слова или Деликатный случай вариант или оба; Соответствует только началу слова: Отметьте эту опцию, будут отображаться только те элементы, которые начинаются с введенного символа, а первый совпавший элемент будет автоматически добавлен в поле списка. Снимите этот флажок, чтобы отображать элементы, содержащие введенный символ. Деликатный случай: Установите этот флажок, чтобы выполнять сопоставление вводимых символов с учетом регистра.


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


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

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

Статьи по теме:

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

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

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

Автоматическое заполнение других ячеек при выборе значений в раскрывающемся списке Excel
Допустим, вы создали раскрывающийся список на основе значений в диапазоне ячеек B8: B14. При выборе любого значения в раскрывающемся списке необходимо, чтобы соответствующие значения в диапазоне ячеек C8: C14 автоматически заполнялись в выбранной ячейке. Для решения проблемы методы, описанные в этом руководстве, окажут вам услугу.

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

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

Народ подскажите макрос который бы из одной таблицы по id вписывал содержимое в другую?!
Т.е у меня талица в 3000 строк,в каждой строке от 1 до 7 id номера..расставленные рандомно, и во.

Запрос на вставку строк из одной таблицы в другую
Добрый день. Не подскажите, пожалуйста, как правильно написать запрос, что бы вставились записи в.

Решение

Тебе с форматированием надо ?

И тишина.
потом можешь отсортировать еще

fever brain, , большое спасибо за оперативную помощь!
Для рутинной офисной работы это просто спасение!!

Искренне пытаюсь понять эту часть макроса, но пока. безуспешно

Можно как для умственно отсталого. что тут происходит? Можно как для умственно отсталого. что тут происходит?

Здесь в теле цикла производится поиск по слову *внести* из второй таблицы
и записывается вся строка кроме ячейки с этим словом в коллекцию Col.add .
цикл бесконечный и при совпадении адреса производится выход из цикла If Err Then Exit Do
затем эти строчки копируются перебором из коллекции в лист Spisok

Добавлено через 2 минуты
а записываются новые строчки в пустые строчки листа spisok которые находятся ниже, вы писали что это 20-21 строчка
у меня это 19-20

Можно еще улучшить, ускорить, и защитить от *дурака* этот макрос

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

fever brain, боюсь, что единственный "дурак" тут я

Общий принцип макроса поняла..
Но есть пара частных идиотских вопросов: что конкретно обозначают эти строки?
Никогда такого не видела
Set r = .[a1]
Set r = .Cells.Find("Внести", r)
col.Add .Range(.Cells(r.Row, 1), .Cells(r.Row, r.Column - 1)), r.Address

Добавлено через 3 минуты

Set r = .[a1] - ссылка на стартовую ячейку поиска точка это потомучто мы ее используем в теле доступа листа *выгрузка*
With Sheets("Выгрузка")

Set r = .Cells.Find("Внести", r) - следующая r (range) ссылается на предыдущую в теле цикла и тд
пока не возникнет ошибки повтора если там было 10 строк со словом внести то цикл завершиться ровно после 10 строк записи

col.Add .Range(.Cells(r.Row, 1), .Cells(r.Row, r.Column - 1)), r.Address --- а в коллекцию записываем весь диапазон (всю найденную строчку) с кодовым словом адреса это может быть L7 или L13

fever brain, большое спасибо за вашу помощь!
Конечно, не до конца поняла все тонкости макроса.. надеюсь, понимание придет со временем)
Но макрос работает просто безупречно!! Даже наши огромные выгрузки его не пугают

Единственное, столкнулась с другой трудностью. Макрос определяет сотрудников, которых необходимо перенести в другую таблицу по слову "внести". Это слово в оригинале моего документа выводит формула, а макрос распознает только значение.
Пробовала написать еще один макрос заместо формулы, но он не работает: думает очень долго,а потом напротив всех сотрудников в выгрузке пишет "внести". Суть закладывала простую: сверь каждый табельный номер из "выгрузки" с табельными номерами в "списке". Если находятся идентичный номер в "списке", но в выгрузке ставь "Ок", в противном случае -"Внести". Может подскажете, в чем моя ошибка? Буду очень благодарна

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

Автозаполнение ячеек данными в Excel

Для наглядности примера схематически отобразим базу регистрационных данных:

Как описано выше регистр находится на отдельном листе Excel и выглядит следующим образом:

Здесь мы реализуем автозаполнение таблицы Excel. Поэтому обратите внимание, что названия заголовков столбцов в обеих таблицах одинаковые, только перетасованы в разном порядке!

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

Как сделать автозаполнение ячеек в Excel:

  1. На листе «Регистр» введите в ячейку A2 любой регистрационный номер из столбца E на листе «База данных».
  2. Теперь в ячейку B2 на листе «Регистр» введите формулу автозаполнения ячеек в Excel:
  3. Скопируйте эту формулу во все остальные ячейки второй строки для столбцов C, D, E на листе «Регистр».

В результате таблица автоматически заполнилась соответствующими значениями ячеек.

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

Главную роль в данной формуле играет функция ИНДЕКС. Ее первый аргумент определяет исходную таблицу, находящуюся в базе данных автомобилей. Второй аргумент – это номер строки, который вычисляется с помощью функции ПОИСПОЗ. Данная функция выполняет поиск в диапазоне E2:E9 (в данном случаи по вертикали) с целью определить позицию (в данном случаи номер строки) в таблице на листе «База данных» для ячейки, которая содержит тоже значение, что введено на листе «Регистр» в A2.

Третий аргумент для функции ИНДЕКС – номер столбца. Он так же вычисляется формулой ПОИСКПОЗ с уже другими ее аргументами. Теперь функция ПОИСКПОЗ должна возвращать номер столбца таблицы с листа «База данных», который содержит название заголовка, соответствующего исходному заголовку столбца листа «Регистр». Он указывается ссылкой в первом аргументе функции ПОИСКПОЗ – B$1. Поэтому на этот раз выполняется поиск значения только по первой строке A$1:E$1 (на этот раз по горизонтали) базы регистрационных данных автомобилей. Определяется номер позиции исходного значения (на этот раз номер столбца исходной таблицы) и возвращается в качестве номера столбца для третьего аргумента функции ИНДЕКС.

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

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

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

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

Table of Contents

Как включить макросы в Excel

В Excel нажмите комбинацию клавиш alt + F11. Это приведет вас к редактору VBA в MS Excel. Затем щелкните правой кнопкой мыши папку Microsoft Excel Objects слева и выберите Insert => Module. Это место, где сохраняются макросы. Чтобы использовать макрос, вам нужно сохранить документ Excel как макрос. Из табуляции File => Save as, выберите Save as macro-enabled Workbok (расширение .xlsm) Теперь пришло время написать свой первый макрос!

1. Копирование данных из одного файла в другой.

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

2. Отображение скрытых строк

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

3. Удаление пустых строк и столбов

Пустые строки в Excel - может быть проблемой для обработки данных. Вот как избавиться от них:

4. Нахождение пустых ячеек

13. Создание сводной таблицы

Вот как создать сводную таблицу в MS Excel (версия 2007). Особенно полезно, когда вы делаете индивидуальный отчет каждый день. Вы можете оптимизировать создание сводной таблицы следующим образом:

14. Отправка активного файла по электронной почте

15. Вставка всех графиков Excel в презентацию PowerPoint

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

16. Вставка таблицы Excel в MS Word

Таблицы Excel обычно помещаются внутри текстовых документов. Вот один автоматический способ экспорта таблицы Excel в MS Word:

17. Извлечение слов из текста

Мы можем использовать формулы, если хотим извлечь определенное количество символов. Но что, если мы хотим извлечь только одно слово из предложения или диапазон слов в ячейке? Для этого мы можем сами создать функцию Excel с помощью VBA. Это одна из самых удобных функций VBA, поскольку она позволяет создавать собственные формулы, которые отсутствуют в MS Excel. Давайте продолжим и создадим две функции: findword() и findwordrev():

Отлично, мы уже создали две новые функции в Excel! Теперь попробуйте использовать их в Excel. Функция = FindWordRev (A1,1) берет последнее слово из ячейки A1. Функция = FindWord (A1,3) берет третье слово из ячейки A1 и т. Д.

18. Защита данных в MS Excel

Иногда мы хотим защитить данных нашего файла, чтобы только мы могли его изменять. Вот как это сделать с VBA:

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

Читайте также: