Excel поменять строки местами
Добрый день, уважаемые читатели! Наболевший вопрос, который откладывал долгое время. Сразу оговорюсь - о транспортировании (замены столбца на строку и наоборот) мы поговорим в следующих статьях.
Сегодня речь пойдёт о замене значений двух строк/столбцов, то есть нам нужно просто поменять местами столбцы или строки в таблице Excel. Что мы для этого обычно делаем:
- Выделяем строку/столбец, которые будем переносить;
- Даём команду "Вырезать";
- Выделяем место где должны быть строки/столбцы;
- Даём команду "Вставить".
Также можно просто перетаскивать за рамку выделения нужные нам диапазоны.
Но бывают случаи, когда в наличии имеется большая таблица, в которой нужно поменять местами значения, но места под новые столбцы/строки взять негде. Не будем рассматривать вариант вставки новой строки/столбца, он может нарушить выверенную структуру и формулы. Что же тогда делать? Попробуем решить данную проблему с помощью макроса.
Для замены необходимо соблюдение двух условий:
1) диапазон ячеек ОБЯЗАТЕЛЬНО должен быть одинаковой величины;
2) ОБЯЗАТЕЛЬНО должны быть выделены два диапазона ячеек.
Текст:
Sub ChangePlaces()
Dim ra As Range: Set ra = Selection
msg1 = "Нужно выделить ДВА диапазона ячеек одинакового размера!"
msg2 = "Нужно выделить диапазоны ОДИНАКОВОГО размера!"
If ra.Areas.Count <> 2 Then MsgBox msg1, vbCritical, "Ошибка": Exit Sub
If ra.Areas(1).Count <> ra.Areas(2).Count Then MsgBox msg2, vbCritical, "Ошибка": Exit Sub
Application.ScreenUpdating = False
arr2 = ra.Areas(2).Value
ra.Areas(2).Value = ra.Areas(1).Value
ra.Areas(1).Value = arr2
End Sub
Немного пояснений:
- ra - это область выделения;
- msg1 и msg2 - сообщение о соответствующих ошибках;
- If ra.Areas.Count <> 2 - условие выделения двух диапазонов;
- If ra.Areas(1).Count <> ra - условие выделения одинаковых по длине диапазонов ячеек;
- Application.ScreenUpdating - экране не обновится если не выполнены два условия;
- остальное показывает, что диапазоны будут заменены друг на друга.
Добавим новый модуль к нашей книге. Вкладка "Разработчик", кнопка "Visual basic", далее "Insert" и "Module".
Теперь проверим правильность работы макроса. Выделим с помощью клавиши Ctrl два одинаковых диапазона ячеек (это может быть строка, столбец, просто ячейка). Воспользуемся сочетанием клавиш Alt+F8, чтобы вызвать диалоговое окно "Макросы" или перейдём на вкладку "Разработчик" и нажмём одноимённую кнопку. Появится список макросов, нажимаем кнопку "Выполнить" и наблюдаем результат.
Видим, макрос работает!
Если остались вопросы - посмотрите наше новое видео!
Вас может заинтересовать на урок - Удаление пустых ячеек.