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, чтобы вызвать диалоговое окно «Макросы» или перейдём на вкладку «Разработчик» и нажмём одноимённую кнопку. Появится список макросов, нажимаем кнопку «Выполнить» и наблюдаем результат.
Видим, макрос работает!
Если остались вопросы — посмотрите наше новое видео!
Вас может заинтересовать на урок — Удаление пустых ячеек.