Ребята, всем привет! 👋 Продолжаем изучать Excel.
К сожалению, в Excel нет прямой функции позволяющей перемещать строки данных с одного листа на другой в зависимости от значения в данной ячейке. Тем не менее есть несколько способов сделать это.
В этом уроке мы рассмотрим два способа перемещения строки на другой лист на основе значения ячейки в Excel с помощью простого макроса VBA.
✍️ Если вы только начинаете осваивать VBA Excel мы уверены, каждый может найти для себя что-то новое!
✨ А прежде, чем мы начнем 📣 напомню, теперь у нас на канале есть удобный рубрикатор 👉 Быстрый поиск решения. Путеводитель по Excel, а все видео 📽 предыдущих уроков доступны и на YouTube.
🔊 Когда нам может потребоваться переместить строку на другой лист на основе значения ячейки?
Данное решение будет актуально если к примеру вам нужно сформировать отдельный список должников (например, при сдаче экзамена) или список менеджеров выполнивших объем продаж или других подобных случаях, а подобных не мало 🙂.
Безусловно в Excel вы можете решить одну и также задачу несколькими способами, ровно как и данную.
Например, вы можете создать отдельную сводную таблицу или использовать фильтры...
Мы же рассмотрим на мой взгляд способ удобнее: перемещения строки на другой лист на основе значения ячейки в Excel с помощью простого макроса VBA.
📢 Скачать исходник с примером кода вы можете в конце статьи 🔽
Итак, пусть мы имеем некоторую базу данных (или просто список) содержащий сведения о сдаче абитуриентами документов в деканат:
Наша задача сформировать список абитуриентов - должников не сдавших полный пакет документов.
В условиях поставленной задачи рассмотрим два способа решения:
- Переместить строку на другой лист и удалить ее из исходных данных
- Переместить строку на другой лист и сохранить ее в исходных данных
⏩ Решение 1. Переместить строку на другой лист и удалить ее из исходных данных
В данном случае будем удалять сведения об абитуриентах сдавших документы, а следовательно получим список должников.
📑 Вот код, который мы будем использовать:
Чтобы использовать приведенный выше код, все, что вам нужно сделать, это скопировать и вставить его в окно VBA.
Запуск макроса
Теперь, когда ваш макрос готов, вы можете продолжить и запустить его. Для этого либо:
- добавляем кнопку для запуска макроса на лист:
- задаем комбинацию клавиш
Для запуска макроса нужно нажать кнопку “Макросы” или комбинацию клавиш “Alt + F8”, так же макросу можно задать в личную комбинацию клавиш или вывести кнопку в меню.
Далее выберите область, содержащую ваши данные, на исходном листе (в нашем примере выберите диапазон A2: D7):
Макрос скопирует всю строку, соответствующую значению ячейки, содержащему слово "сдано", на рабочий лист с именем "Сдано". Кроме того, записи, в содержащие статус "сдано", будут удалены из исходного набора данных:
а перемещенная строка будет вставлена на листе "Сдано":
В дальнейшем, при изменении статуса сдачи документов сведения на листе "Сдано" будут изменяться"
Например, после того как абитуриент Сидоров Д.И. сдает документы переформировав сведения сведения:
мы видим измененные данные на листе "Сдано":
🔔 Примечание: Если у вашего рабочего листа другое имя, не забудьте изменить его в коде.
⏩ Решение 2. Переместить строку на другой лист и сохранить ее в исходных данных
В данном примере рассмотрим обратную задачу и получим на листе "должники" список абитуриентов - задолжников.
В то время как приведенный выше код переместит все записи, независимо от того, является ли абитуриент должником или нет, а также удалит абитуриентов сдавших документы из исходного набора данных, ниже приведен код, который не удалит данные из исходного набора данных, но пользователю будет выведено сообщение:
📑 Вот код, который мы будем использовать:
🔔 Изменение, которое сделано здесь:
- удалена строка кода: myCell.EntireRow.Delete
- добавлена строка кода реализующая вывод сообщения : MsgBox "Список должников сформирован"
- добавлена строка кода выполняющая очистку данных перед записью:
Запуск макроса
Запуск данного макроса аналогичен рассмотренному выше:
Отличие решения заключается в том, что теперь исходные данные не изменяются, а листе "Должники" будет сформирован список абитуриентов - должников:
В дальнейшем, при изменении статуса сдачи документов сведения на листе "Должники" будут изменяться"
Например, после того как абитуриент Сидоров Д.И. сдает документы переформировав сведения сведения:
мы видим измененные данные на листе "Должники":
А на этом сегодня все. 👏 Теперь вы знаете как переместить строку на другой лист на основе значения ячейки. Я надеюсь, что вы нашли этот урок полезным.
Продолжение следует...
Подписывайтесь на канал, чтобы не пропустить новые уроки и полезные фишки Excel. Сэкономьте сумасшедшее количество времени, используя VBA. Следите за нашими новостями и вы узнаете больше о VBA и Excel в частности.
Понравился урок!? не забываем оставлять комментарий 📝Нам очень важна Ваша обратная связь 💝
И конечно же, за лайк 👍 благодарочка 💖 и респект 🤝 каждому!