Найти тему

📌 Как переместить строку на другой лист на основе значения ячейки

Оглавление

Ребята, всем привет! 👋 Продолжаем изучать Excel.

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

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

✍️ Если вы только начинаете осваивать VBA Excel мы уверены, каждый может найти для себя что-то новое!

✨ А прежде, чем мы начнем 📣 напомню, теперь у нас на канале есть удобный рубрикатор 👉 Быстрый поиск решения. Путеводитель по Excel, а все видео 📽 предыдущих уроков доступны и на YouTube.

Как переместить строку на другой лист на основе значения ячейки
Как переместить строку на другой лист на основе значения ячейки

🔊 Когда нам может потребоваться переместить строку на другой лист на основе значения ячейки?

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

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

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

📢 Скачать исходник с примером кода вы можете в конце статьи 🔽

-2

Итак, пусть мы имеем некоторую базу данных (или просто список) содержащий сведения о сдаче абитуриентами документов в деканат:

-3

Наша задача сформировать список абитуриентов - должников не сдавших полный пакет документов.

В условиях поставленной задачи рассмотрим два способа решения:

  • Переместить строку на другой лист и удалить ее из исходных данных
  • Переместить строку на другой лист и сохранить ее в исходных данных

Решение 1. Переместить строку на другой лист и удалить ее из исходных данных

В данном случае будем удалять сведения об абитуриентах сдавших документы, а следовательно получим список должников.

📑 Вот код, который мы будем использовать:

как переместить строку на другой лист и удалить ее из исходных данных
как переместить строку на другой лист и удалить ее из исходных данных

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

Запуск макроса

Теперь, когда ваш макрос готов, вы можете продолжить и запустить его. Для этого либо:

  • добавляем кнопку для запуска макроса на лист:
-5
Для запуска макроса нужно нажать кнопку “Макросы” или комбинацию клавиш “Alt + F8”, так же макросу можно задать в личную комбинацию клавиш или вывести кнопку в меню.

Далее выберите область, содержащую ваши данные, на исходном листе (в нашем примере выберите диапазон A2: D7):

-6

Макрос скопирует всю строку, соответствующую значению ячейки, содержащему слово "сдано", на рабочий лист с именем "Сдано". Кроме того, записи, в содержащие статус "сдано", будут удалены из исходного набора данных:

-7

а перемещенная строка будет вставлена на листе "Сдано":

-8
В дальнейшем, при изменении статуса сдачи документов сведения на листе "Сдано" будут изменяться"

Например, после того как абитуриент Сидоров Д.И. сдает документы переформировав сведения сведения:

-9

мы видим измененные данные на листе "Сдано":

Перемещенная строка будет вставлена  на листе "Сдано" сразу после текущей последней строки
Перемещенная строка будет вставлена на листе "Сдано" сразу после текущей последней строки

🔔 Примечание: Если у вашего рабочего листа другое имя, не забудьте изменить его в коде.

⏩ Решение 2. Переместить строку на другой лист и сохранить ее в исходных данных

В данном примере рассмотрим обратную задачу и получим на листе "должники" список абитуриентов - задолжников.

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

-11

📑 Вот код, который мы будем использовать:

-12

🔔 Изменение, которое сделано здесь:

  • удалена строка кода: myCell.EntireRow.Delete
  • добавлена строка кода реализующая вывод сообщения : MsgBox "Список должников сформирован"
  • добавлена строка кода выполняющая очистку данных перед записью:
-13

Запуск макроса

Запуск данного макроса аналогичен рассмотренному выше:

-14

Отличие решения заключается в том, что теперь исходные данные не изменяются, а листе "Должники" будет сформирован список абитуриентов - должников:

-15
В дальнейшем, при изменении статуса сдачи документов сведения на листе "Должники" будут изменяться"

Например, после того как абитуриент Сидоров Д.И. сдает документы переформировав сведения сведения:

-16

мы видим измененные данные на листе "Должники":

-17

А на этом сегодня все. 👏 Теперь вы знаете как переместить строку на другой лист на основе значения ячейки. Я надеюсь, что вы нашли этот урок полезным.

Продолжение следует...

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

Понравился урок!? не забываем оставлять комментарий 📝Нам очень важна Ваша обратная связь 💝

И конечно же, за лайк 👍 благодарочка 💖 и респект 🤝 каждому!

➡️ СКАЧАТЬ ПРИМЕР ФАЙЛА

Подписывайтесь на канал, чтобы не пропустить новые уроки и полезные фишки Excel
Подписывайтесь на канал, чтобы не пропустить новые уроки и полезные фишки Excel

Наука
7 млн интересуются