0 / 0 / 0 Регистрация: 09.01.2013 Сообщений: 13 |
|
1 |
|
09.01.2013, 18:33. Показов 18023. Ответов 12
Добрый день. Делаю очень большой древовидный список в Excel. Часто приходится перетаскивать ячейку на 1 вправо. A1 -> A2, B3->B4 и т.д. Можно ли как-то делать это действие горячими клавишами? Наверное требуется макрос. Если кто подскажет такой — буду очень благодарен. Спасибо.
0 |
5468 / 1148 / 50 Регистрация: 15.09.2012 Сообщений: 3,514 |
|
09.01.2013, 19:18 |
2 |
lehachgtop, выложите книгу Excel с примерными данными и поясните, что нужно сделать.
0 |
0 / 0 / 0 Регистрация: 09.01.2013 Сообщений: 13 |
|
09.01.2013, 19:58 [ТС] |
3 |
перетаскивать ячейку на 1 вправо. A1 -> A2, B3->B4 Ошибся. A1 -> B2, B3 -> C3 и т.д. Сделал примерную книгу. Если бы можно было одной клавишей (или простой комбинацией клавиш) перемещать содержимое ячейки в ячейку соседнего столбца справа — это в разы бы ускорило работу.
0 |
Скрипт 5468 / 1148 / 50 Регистрация: 15.09.2012 Сообщений: 3,514 |
||||
09.01.2013, 20:07 |
4 |
|||
lehachgtop, вот по такому принципу можно перемещать данные из активной ячейки в ячейку, находящуюся справа:
А как вызывать этот макрос — вам решать. Можно сочетание клавиш сделать. Ещё у листа есть события, например, при двойном клике по ячейке можно вызывать макрос.
1 |
0 / 0 / 0 Регистрация: 09.01.2013 Сообщений: 13 |
|
09.01.2013, 21:02 [ТС] |
5 |
А можно с помощью макроса сделать выделение ячеек (фон)? Например я выделил 6 ячеек, жму клавиши, и макрос выделяет заданным цветом фон.
0 |
Igor_Tr 4377 / 661 / 36 Регистрация: 17.01.2010 Сообщений: 2,134 |
||||
09.01.2013, 21:22 |
6 |
|||
Можно, конечно! Но зачем с помощью макроса, и жать клавиши?
Осталось Вам только продумать, как программа, по каким критериям, будет определять ячейки под заливку.
0 |
0 / 0 / 0 Регистрация: 09.01.2013 Сообщений: 13 |
|
09.01.2013, 22:06 [ТС] |
7 |
как программа, по каким критериям, будет определять ячейки под заливку. Но это должен определять я вручную. Быстрее всего — с горячими клавишами.
0 |
Igor_Tr 4377 / 661 / 36 Регистрация: 17.01.2010 Сообщений: 2,134 |
||||
10.01.2013, 00:17 |
8 |
|||
Хорошо, давайте по другому. Чем Вы будете руководствоваться при выделении вручную? Наличием текста?, символов?, цифр?, комбинациями? Вот это и научите железяку. Она послушная. Например, если у Вас в ячейке встречаеться число 2 — закрасить! немедленно!
А вобще есть еще много способов сделать это-же. Добавлено через 16 минут
0 |
0 / 0 / 0 Регистрация: 09.01.2013 Сообщений: 13 |
|
10.01.2013, 08:54 [ТС] |
9 |
Чем Вы будете руководствоваться при выделении вручную? Наличием текста?, символов?, цифр?, комбинациями? Вот это и научите железяку. Мне придется выделять исключительно вручную. Надо выделять похожие по смыслу, но разные по написанию слова: велик, байк и велосипед. Как-то автоматизировать это невозможно. Поэтому я по-прежнему хочу выделять нажатием клавиши (комбинацией клавиш). Наверное для этого нужен макрос. Прошу помочь.
0 |
Скрипт 5468 / 1148 / 50 Регистрация: 15.09.2012 Сообщений: 3,514 |
||||
10.01.2013, 09:15 |
10 |
|||
Код, который делают заливку у выделенных ячеек: Кликните здесь для просмотра всего текста
0 |
Igor_Tr 4377 / 661 / 36 Регистрация: 17.01.2010 Сообщений: 2,134 |
||||||||
10.01.2013, 14:43 |
11 |
|||||||
Мне кажется, что можно. Велик, байк и велосипед — а что у них общего? Все это средства передвижения, которые можно обьеденить в группу, например RemedForMovement. Создайте массив — и вперед. Главное — экспериментируйте, иначе Вам и святой Франциск не поможет. Но если Вам нравится в ручную — тоже не плохо. Ручная работа ценится во всем мире. Добавлено через 2 часа 12 минут
Из этого макроса запускаем заливку (а стоило это трудов? Не проще было выделить и выбрать цвет на панели?)
К кнопке еще можно добавить розочки, бантики… и все это группировать. По вкусу
1 |
0 / 0 / 0 Регистрация: 05.11.2015 Сообщений: 11 |
|
17.07.2013, 16:18 |
12 |
Ребят подскажите пожалуйста, а как написать перенос каждой второй строки столбца А в столбец Б??чтобы можно было сделать это действие по 100 позициям
0 |
Igor_Tr 4377 / 661 / 36 Регистрация: 17.01.2010 Сообщений: 2,134 |
||||
17.07.2013, 16:36 |
13 |
|||
Как-будто кол-во позиций не имеет очень значение. Больше значит, в каком виде они должны быть в столбце В. С пропусками, или все нужные подряд? Добавлено через 12 минут
3 |
Содержание
- Перемещение ячеек
- Способ 1: перемещение с помощью копирования
- Способ 2: перетаскивание
- Способ 3: применение макросов
- Вопросы и ответы
Потребность поменять ячейки местами друг с другом при работе в таблице Microsoft Excel случается довольно редко. Тем не менее, такие ситуации бывают и их нужно решать. Давайте выясним, какими способами можно поменять ячейки местами в Экселе.
Перемещение ячеек
К сожалению, в стандартном наборе инструментов нет такой функции, которая бы без дополнительных действий или без сдвига диапазона, могла бы менять местами две ячейки. Но, в то же время, хотя данная процедура перемещения и не так проста, как хотелось бы, её все-таки можно устроить, причем несколькими способами.
Способ 1: перемещение с помощью копирования
Первый вариант решения проблемы предусматривает банальное копирование данных в отдельную область с последующей заменой. Давайте разберемся, как это делается.
- Выделяем ячейку, которую следует переместить. Жмем на кнопку «Копировать». Она размещена на ленте во вкладке «Главная» в группе настроек «Буфер обмена».
- Выделяем любой другой пустой элемент на листе. Жмем на кнопку «Вставить». Она находится в том же блоке инструментов на ленте, что и кнопка «Копировать», но в отличие от неё имеет гораздо более заметный вид из-за своих размеров.
- Далее переходим ко второй ячейке, данные которой нужно переместить на место первой. Выделяем её и опять жмем на кнопку «Копировать».
- Выделяем курсором первую ячейку с данными и жмем на кнопку «Вставить» на ленте.
- Одно значение мы переместили, куда нам нужно. Теперь возвращаемся к тому значению, которое мы вставили в пустую ячейку. Выделяем его и жмем на кнопку «Копировать».
- Выделяем вторую ячейку, в которую нужно переместить данные. Жмем на кнопку «Вставить» на ленте.
- Итак, нужные данные мы поменяли местами. Теперь следует удалить содержимое транзитной ячейки. Выделяем её и щелкаем правой кнопкой мыши. В контекстном меню, которое активировалось после этих действий, переходим по пункту «Очистить содержимое».
Теперь транзитные данные удалены, а задача по перемещению ячеек полностью выполнена.
Конечно, данный способ не совсем удобен и требует множества дополнительных действий. Тем не менее, именно он применим большинством пользователей.
Способ 2: перетаскивание
Ещё одним способом, с помощью которого существует возможность поменять ячейки местами, можно назвать простое перетаскивание. Правда при использовании этого варианта произойдет сдвиг ячеек.
Выделяем ячейку, которую нужно переместить в другое место. Устанавливаем курсор на её границу. При этом он должен преобразоваться в стрелку, на конце которой находятся указатели, направленные в четыре стороны. Зажимаем клавишу Shift на клавиатуре и перетаскиваем на то место куда хотим.
Как правило, это должна быть смежная ячейка, так как при переносе таким способом происходит сдвиг всего диапазона.
Поэтому перемещение через несколько ячеек чаще всего происходит некорректно в контексте конкретной таблицы и применяется довольно редко. Но сама потребность поменять содержимое далеко стоящих друг от друга областей не исчезает, а требует других решений.
Способ 3: применение макросов
Как уже было сказано выше, не существует быстрого и корректно способа в Эксель без копирования в транзитный диапазон поменять две ячейки между собой местами, если находятся они не в смежных областях. Но этого можно добиться за счет применения макросов или сторонних надстроек. Об использовании одного такого специального макроса мы и поговорим ниже.
- Прежде всего, нужно включить у себя в программе режим работы с макросами и панель разработчика, если вы их до сих пор не активировали, так как по умолчанию они отключены.
- Далее переходим во вкладку «Разработчик». Выполняем щелчок по кнопке «Visual Basic», которая размещена на ленте в блоке инструментов «Код».
- Выполняется запуск редактора. В него нужно вставить следующий код:
Sub ПеремещениеЯчеек()
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После того, как код вставлен, закрываем окно редактора, нажав на стандартизированную кнопку закрытия в его верхнем правом углу. Таким образом код будет записан в память книги и его алгоритм можно будет воспроизвести для выполнения нужных нам операций.
- Выделяем две ячейки или два диапазона равных размеров, которые хотим поменять местами. Для этого кликаем по первому элементу (диапазону) левой кнопкой мыши. Затем зажимаем кнопку Ctrl на клавиатуре и также кликаем левой кнопкой мышки по второй ячейке (диапазону).
- Чтобы запустить макрос, жмем на кнопку «Макросы», размещенную на ленте во вкладке «Разработчик» в группе инструментов «Код».
- Открывается окно выбора макроса. Отмечаем нужный элемент и жмем на кнопку «Выполнить».
- После этого действия макрос автоматически меняет содержимое выделенных ячеек местами.
Важно отметить, что при закрытии файла макрос автоматически удаляется, так что в следующий раз его придется записывать снова. Чтобы не делать эту работу каждый раз для конкретной книги, если вы планируете в ней постоянно проводить подобные перемещения, то следует сохранить файл как Книгу Excel с поддержкой макросов (xlsm).
Урок: Как создать макрос в Excel
Как видим, в Excel существует несколько способов перемещения ячеек относительно друг друга. Это можно сделать и стандартными инструментами программы, но данные варианты довольно неудобны и занимают много времени. К счастью, существуют макросы и надстройки сторонних разработчиков, которые позволяют решить поставленную задачу максимально легко и быстро. Так что для пользователей, которым приходится постоянно применять подобные перемещения, именно последний вариант будет самым оптимальным.
Еще статьи по данной теме:
Помогла ли Вам статья?
Во время работы в Эксель нередко возникает необходимость в изменении порядка ячеек, например, требуется поменять местами некоторые из них. Как это сделать разными способами, разберем в данной статье.
Содержание
- Процедура перемещения ячеек
- Метод 1: копирование
- Метод 2: перетаскивание
- Метод 3: использование макросов
- Заключение
Процедура перемещения ячеек
Отдельной функции, позволяющей выполнить данную процедуру в программе Excel нет. А при использовании стандартных инструментов неизбежно будет происходить сдвиг остальных ячеек, которые нужно потом вернуть на место, что в результате приведет к дополнительным действиям. Однако методы для выполнения поставленной задачи есть, и о них пойдет речь ниже.
Метод 1: копирование
Это, пожалуй, самый простой способ, который предполагает копирование элементов в другое место с заменой начальных данных. Порядок действий следующий:
- Встаем в первую ячейку (выделяем ее), которую планируем переместить. Находясь в главной вкладке программы нажимаем на кнопку “Копировать” (группа инструментов “Буфер обмена”). Также можно просто нажать комбинацию клавиш Ctrl+C.
- Переходим в любую свободную ячейку на листе и нажимаем кнопку “Вставить” в той же вкладке и группе инструментов. Или можно снова воспользоваться горячими клавишами – Ctrl+V.
- Теперь выделяем вторую ячейку, с которой хотим поменять местами первую, и также копируем ее.
- Встаем в первую ячейку и жмем кнопку “Вставить” (или Ctrl+V).
- Теперь выделяем ячейку, в которую было скопировано значение из первой ячейки и копируем ее.
- Переходим во вторую ячейку, куда нужно вставить данные, и нажимаем соответствующую кнопку на ленте.
- Выбранные элементы успешно поменяны местами. Ячейка, в которой временно размещались скопированные данные, больше не нужна. Щелкаем по ней правой кнопкой мыши и в открывшемся меню выбираем команду “Удалить”.
- В зависимости от того, есть ли рядом с данной ячейкой заполненные элементы справа/снизу или нет, выбираем соответствующий вариант удаления и жмем кнопку OK.
- Вот и все, что нужно было сделать для того, чтобы поменять ячейки местами.
Несмотря на то, что для реализации данного метода нужно выполнить немало дополнительных действий, все же, им пользуется наибольшее количество пользователей.
Метод 2: перетаскивание
Данный метод также применяется для того, чтобы поменять местами ячейки, однако, в этом случае будет происходить сдвиг ячеек. Итак, выполняем следующие действия:
- Выбираем ячейку, которую планируем переместить в новое место. Наводим курсор мыши на ее границу, и как только он изменит вид на привычный указатель (с 4 стрелками в разные стороны на конце), нажав и не отпуская клавишу Shift, выполняем перенос ячейки в новое место с помощью зажатой левой кнопки мыши.
- Чаще всего, этот метод используется для того, чтобы поменять местами соседние ячейки, так как сдвиг элементов в данном случае не нарушит структуру таблицы.
- Если мы решим переместить ячейку через несколько других, это повлечет за собой изменение расположения всех остальных элементов.
- После этого придется восстанавливать порядок.
Метод 3: использование макросов
Мы упоминали в начале статьи, что в Excel, увы, нет специального инструмента, позволяющего оперативно “перекинуть” местами ячейки (за исключением метода выше, который эффективен только для смежных элементов). Однако сделать это можно с помощью макросов:
- Для начала нужно убедиться в том, что в приложении активирован так называемый “режим разработчика” (по умолчанию выключен). Для этого:
- Переключаемся во вкладку “Разработчик”, где жмем по значку “Visual Basic” (группа инструментов “Код”).
- В редакторе, нажав на кнопку “View Code”, вставляем в появившемся окне код ниже:
Sub ПеремещениеЯчеек()
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 - Закрываем окно редактора, щелкнув привычную кнопку в виде крестика в верхнем правом углу.
- Зажав клавишу Ctrl на клавиатуре выделяем две ячейки или две области с одинаковым количество элементов, которые планируем поменять местами. Затем нажимаем кнопку “Макросы” (вкладка “Разработчик”, группа “Код”).
- Появится окно, в котором мы видим ранее созданный макрос. Выбираем его и щелкаем “Выполнить”.
- В результате работы макрос поменяет местами содержимое выделенных ячеек.
Примечание: при закрытии документа макрос будет удален, поэтому, в следующий раз его нужно будет создавать заново (при необходимости). Но, если вы предполагаете, что в дальнейшем придется часто выполнять подобные операции, файл можно сохранить с поддержкой макросов.
Заключение
Работа с ячейками в таблице Эксель предполагает не только внесение, редактирование или удаление данных. Иногда требуется перенести или поменять местами ячейки, содержащие определенные значения. Несмотря на то, что в функционале Эксель нет отдельного инструмента для решения данной задачи, выполнить ее можно путем копирования и последующей вставки значений, переноса ячейки или использования макросов.
На чтение 5 мин Опубликовано 26.12.2020
Изменение порядка ячеек часто необходимо выполнить при трансформировании таблиц, форматировании текста и всего содержимого электронного листа в Microsoft Excel в целом. У новичков порой возникает проблема с данным вопросом, поэтому в этой статье мы поможем избавиться от подобных трудностей несколькими способами.
Содержание
- Первый способ: копирование
- Второй способ: сдвиг ячеек
- Третий способ: применение макросов
- Подведем итоги
Первый способ: копирование
Так как отдельной функции, специально предназначенной для переноса ячеек с одной части листа на другую, не существует, придется воспользоваться другими методами. Итак, первый из них — это копирование. Производится пошагово следующим образом:
- У нас есть таблица с сохраненными данными. Из нее необходимо перенести несколько ячеек в произвольную часть листа. Для этого кликаем по одной из них, затем в панели инструментов во вкладке «Главная» находим значение «Копировать». Также можно выделив ячейку, сделать клик правой кнопкой мыши и выбрать «Копировать» через контекстное меню. Быстрый способ скопировать данные — одновременно нажать комбинацию клавиш «Ctrl+C».
- Проверяем скопировалось ли значение. Для этого заходим в «Буфер обмена». Он расположен во вкладке «Главная» в первом блоке. Кликаем по стрелке вниз и в открывшемся окне слева видим скопированный только что текст или число. Это значит, что копирование данных выполнить удалось.
Обратите внимание! Если нажать «Очистить все», то копирование придется сделать заново, потому как данные удалятся.
- Теперь на листе выбираем место, в которое желаем переместить содержимое ячейки, нажимаем комбинацию клавиш «Ctrl+V» или же вызываем контекстное меню с помощью ПКМ, где кликаем по пункту «Вставить». Можно пользоваться инструментом «Специальная вкладка», который позволяет выполнить настройку вставки скопированного значения.
- Аналогично переносятся все оставшиеся ячейки, если это необходимо. Чтобы перенести всю таблицу в целом, следует полностью выполнить выделение всего диапазона. После того, как все элементы перенесены, можно отформатировать прежнюю часть листа, на которой еще остались оригинальные данные.
Второй способ: сдвиг ячеек
Иначе это называется перетаскивание. Выполнить его не сложно, главное проследить, чтобы все данные были скопированы, иначе перенос будет выполнен с искажением. Рассмотрим подробности в алгоритме ниже:
- Наводим курсор мыши на границу той ячейки, которую нужно перенести на другую часть листа. Обратите внимание, что курсор должен превратиться в крестообразный значок. После этого зажимаем клавишу мыши и перетаскиваем ячейку в нужное место.
- Также можно сделать перемещение одной ячейки на несколько ступеней вверх или вниз. Для этого также выделим ячейку, перенесем ее на нужное место, после чего выровняем порядок оставшихся окошек, которые сместились вследствие переноса.
При таком способе выделенные ячейки переходят в другую область, при этом все содержимое внутри них сохраняется, а прежние места становятся пустыми.
Третий способ: применение макросов
Данной опцией можно воспользоваться, если макросы по умолчанию установлены в Excel, в противном случае их придется добавить через систему внутренних настроек. Разберем детали выбранного способа:
- Переходим в меню «Файл», затем в нижней части списка переходим к пункту «Параметры».
- Открывается окно «Параметры Excel», здесь необходимо кликнуть по пункту «Настроить ленту» и поставить галочку напротив пункта «Разработчик». Подтверждаем свои действия кнопкой «ОК».
Сразу обратите внимание на панель вкладок, вкладка с названием «Разработчик должна появиться в самом конце.
- После переключаемся на вкладку «Разработчик», в ней находим инструмент «Visual Basic». Visual Basic — это индивидуальный редактор данных. Необходимо дождаться загрузки дополнительного окна.
- После открытия вспомогательной программы настроек ищем блок инструментов «Код», он нам и потребуется для корректного редактирования. Находим раздел «View Code», в открывшееся поле вставляем специальный код, который указан ниже:
Sub ПеремещениеЯчеек()
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
- Следом жмем кнопку «Enter», чтобы данные сохранились. После сохранения можно закрыть окно редактора и продолжить редактирование.
- Зажимаем клавишу «Ctrl», затем выделяем одинаковое количество строк и столбцов, чтобы получился равномерный со всех сторон диапазон. Теперь переходим к разделу «Макросы» в панели инструментов, кликаем по нему, открывается окно с функцией. Жмем кнопку «Выполнить».
- Итог данного процесса — смена местоположения ячеек в пределах одного листа.
На заметку! Существует возможность переноса индивидуальных ячеек и их диапазонов с одного листа Excel на другой, причем для этого используется только один многостраничный файл.
Подведем итоги
Для новичков больше подойдут первые два варианта переноса ячеек. Они не требуют углубленных знаний программы Microsoft Excel и работают в разных версиях табличного процессора. Что касается макросов, то использование данной методики довольно сложное, очень важно ничего не перепутать, иначе велик риск совершить ошибку и вовсе отформатировать всю страницу без возврата данных, поэтому при переносе ячеек рекомендуется быть предельно внимательными.
Оцените качество статьи. Нам важно ваше мнение:
Вас может заинтересовать, а как можно сдвинуться влево или вправо назад или вперед от текущей ячейки. Для этого у объекта Range есть метод Offset, который и позволяет производить подобные действия.
Sub Test() Dim cur_range As Range Set cur_range = Range("A1") Set cur_range = cur_range.Offset(1, 0) Debug.Print cur_range.Address End Sub
А вот результат работы. Мы от текущего объекта сдвинулись влево на 1 колонку.
$A$2
Если вы хотите узнать максимальные размеры листа, то у Вас есть возможность это сделать используя UsedRange. У вас будет объект типа Range, из которого вы сможете узнать максимальную колонку или строку.
Sub Test() With ActiveSheet Dim cur_range As Range Set cur_range = .UsedRange Debug.Print cur_range.Address End With End Sub
Адресовать ячейки можно и двумя цифрами по колонки и сроке. Это избавляет Вас от утомительного разбора адресов типа $A10. Так как адрес строка придеться её резать и собирать. Использования Cells(x,y) очень гибко в использовании и позволяет строить легкие циклы. Пример ниже находит на листе левый верхний угол из всех ячеек с введенными данными и в эту ячейку записывает слово.
Sub Test() ' объект Range Dim cur_range As Range ' Весь лист With ActiveSheet Set cur_range = .UsedRange Debug.Print cur_range.Address ' у меня печатает $C$5:$J$48 Dim y_min As Integer ' минимальная колонка y_min = cur_range.Columns.Column Dim x_min As Integer ' минимальная строка x_min = cur_range.Rows.Row Set cur_range = Range(Cells(x_min, y_min), Cells(x_min, y_min)) cur_range = "lef up" End With End Sub