Как поменять местами значения в столбце excel

Обновлено: 2021-10-15

При вставке текста в MS Word вы может случайно щелкнуть не в том месте или отпустить кнопку мыши, когда не собирались это делать, и в результате текст оказывается не на своем месте. Перенос текста, когда это происходит случайно, раздражает, но всё меняется, когда мы имеем дело с MS Excel.

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

Обмен данных между ячейками Excel

  1. Откройте файл Excel, в котором вы хотите поменять данные между ячейками, столбцами или строками.
  2. Выберите ячейку, строку или столбец, содержимое которого хотите поменять, удерживайте нажатой клавишу Shift. Затем наведите курсор мыши на крайнюю правую границу выделенной области (ячейки) и перетащите к мест замены. Не отпускайте клавишу Shift.

    Анимация с примером обмена значений в ячейках документа Excel

    На изображении выше вы можете видеть, что при перемещении курсора он меняется на другую форму в зависимости от того, где находится.

  3. Когда курсор становится толстой горизонтальной формой ][ в нижней части соседней ячейки, он меняет значение ячейки на ячейку ниже этой линии. Аналогично, если вы переместите его в верхнюю часть соседней ячейки, и он превратится в толстую горизонтальную форму ][ в верхней части, значение ячейки поменяется местами с ячейкой выше соседней.

    Однако, если вы перетащите его вправо от соседней ячейки и курсор превратится в толстое ][, содержимое выбранной ячейки будет заменено на содержимое в соседней ячейке, как показано на рисунке выше.

  4. Чтобы поменять местами значения между строками и столбцами, выделите всю строку или столбец, а затем, удерживая нажатой клавишу Shift, перед перетаскиванием курсора на строку или столбец, с которым вы хотите поменять его значения.

    Отпустите клавишу Shift и кнопку мыши, как только курсор окажется там, где вы хотите поменять местами содержимое ячейки / строки / столбца.



Когда мы обрабатываем рабочий лист, нам может потребоваться иногда поменять местами содержимое двух ячеек. Обычно большинство из нас просто знает, как «вырезать, вставить и скопировать» для замены содержимого, но это требует времени. Мы поговорим о том, как быстро поменять местами содержимое ячеек в Excel.

Вручную поменяйте местами содержимое двух соседних ячеек
Поменять местами содержимое двух несмежных ячеек с кодом VBA
Легко поменять местами содержимое двух случайных ячеек всего за несколько кликов


Вручную поменяйте местами содержимое двух соседних ячеек

Иногда необходимо поменять местами две соседние ячейки. Мы легко можем сделать это вручную. Посмотрите на следующий снимок экрана, я хочу поменять местами ячейки A4 и B4, сделайте следующее:

документ-своп-ячейки1

1. Выберите ячейку, которую хотите поменять местами. В этом примере выберите ячейку A4.

2, нажмите Shift и поместите курсор на правую границу.

3. Затем перетащите курсор к правой границе ячейки B4.

4. Когда отображается «», Отпустите мышь.

5. И два содержимого ячеек поменялись местами. Смотрите скриншот:

документ-своп-ячейки2

С помощью этого метода мы также можем поменять местами две соседние строки или столбцы.


Поменять местами содержимое двух несмежных ячеек с кодом VBA

Когда две ячейки не находятся рядом, описанный выше метод работать не будет. Мы можем поменять их местами с кодом VBA.

1, нажмите Ctrl и выберите две несмежные ячейки, которые вы хотите поменять местами.

2. Нажмите Застройщик>Визуальный Бейсик, Новый Microsoft Visual Basic для приложений появится окно, щелкните Вставить>Модули, и введите следующий код в Модули:

Sub SwapTwoRange()
'Updateby20131120
Dim Rng1 As Range, Rng2 As Range
Dim arr1 As Variant, arr2 As Variant
xTitleId = "KutoolsforExcel"
Set Rng1 = Application.Selection
Set Rng1 = Application.InputBox("Range1:", xTitleId, Rng1.Address, Type:=8)
Set Rng2 = Application.InputBox("Range2:", xTitleId, Type:=8)
Application.ScreenUpdating = False
arr1 = Rng1.Value
arr2 = Rng2.Value
Rng1.Value = arr2
Rng2.Value = arr1
Application.ScreenUpdating = True
End Sub

3. Затем нажмите док-умножить-расчет-3 нажмите кнопку, чтобы запустить код, затем отобразится диалоговое окно, в котором вы можете выбрать две ячейки, между которыми вы хотите переключиться. Смотрите скриншоты:

диапазоны подкачки документов1

4. Нажмите Ok во всплывающем диалоговом окне две выбранные ячейки меняются местами. Смотрите скриншоты:

диапазоны подкачки документов1

Ноты: Этот код VBA не может поменять местами форматирование двух ячеек.


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

Работы С Нами Kutools for Excel‘s Диапазоны обмена Утилита, мы не только можем поменять местами две соседние ячейки, строки или столбцы, но также можем легко переключать две несмежные ячейки, строки или столбцы.

1. Нажмите Кутулс > Диапазон > Диапазоны обмена, см. снимок экрана:

2. в Диапазоны обмена диалоговое окно, вам необходимо:

Затем сразу же меняются местами две выбранные ячейки или диапазоны. Смотрите скриншоты:

диапазоны подкачки документов1

  Если вы хотите получить бесплатную пробную версию (30-день) этой утилиты, пожалуйста, нажмите, чтобы загрузить это, а затем перейдите к применению операции в соответствии с указанными выше шагами.


Демонстрация: поменяйте местами два случайных содержимого ячейки с помощью Kutools for Excel


Связанная статья:

  • Как поменять местами строки или столбцы в Excel?

Лучшие инструменты для работы в офисе

Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%

  • Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
  • Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон
  • Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны
  • Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
  • Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
  • Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии
  • Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
  • Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF
  • Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.

вкладка kte 201905


Вкладка Office: интерфейс с вкладками в Office и упрощение работы

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!

офисный дно

На чтение 5 мин Опубликовано 26.12.2020

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

Содержание

  1. Первый способ: копирование
  2. Второй способ: сдвиг ячеек
  3. Третий способ: применение макросов
  4. Подведем итоги

Первый способ: копирование

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

  1. У нас есть таблица с сохраненными данными. Из нее необходимо перенести несколько ячеек в произвольную часть листа. Для этого кликаем по одной из них, затем в панели инструментов во вкладке «Главная» находим значение «Копировать». Также можно выделив ячейку, сделать клик правой кнопкой мыши и выбрать «Копировать» через контекстное меню. Быстрый способ скопировать данные — одновременно нажать комбинацию клавиш «Ctrl+C».

3-sposoba-kak-pomenyat-mestami-yachejki-v-excel

1
  1. Проверяем скопировалось ли значение. Для этого заходим в «Буфер обмена». Он расположен во вкладке «Главная» в первом блоке. Кликаем по стрелке вниз и в открывшемся окне слева видим скопированный только что текст или число. Это значит, что копирование данных выполнить удалось.

Обратите внимание! Если нажать «Очистить все», то копирование придется сделать заново, потому как данные удалятся.

3-sposoba-kak-pomenyat-mestami-yachejki-v-excel

2
  1. Теперь на листе выбираем место, в которое желаем переместить содержимое ячейки, нажимаем комбинацию клавиш «Ctrl+V» или же вызываем контекстное меню с помощью ПКМ, где кликаем по пункту «Вставить». Можно пользоваться инструментом «Специальная вкладка», который позволяет выполнить настройку вставки скопированного значения.

3-sposoba-kak-pomenyat-mestami-yachejki-v-excel

3
  1. Аналогично переносятся все оставшиеся ячейки, если это необходимо. Чтобы перенести всю таблицу в целом, следует полностью выполнить выделение всего диапазона. После того, как все элементы перенесены, можно отформатировать прежнюю часть листа, на которой еще остались оригинальные данные.

Второй способ: сдвиг ячеек

Иначе это называется перетаскивание. Выполнить его не сложно, главное проследить, чтобы все данные были скопированы, иначе перенос будет выполнен с искажением. Рассмотрим подробности в алгоритме ниже:

  1. Наводим курсор мыши на границу той ячейки, которую нужно перенести на другую часть листа. Обратите внимание, что курсор должен превратиться в крестообразный значок. После этого зажимаем клавишу мыши и перетаскиваем ячейку в нужное место.
  2. Также можно сделать перемещение одной ячейки на несколько ступеней вверх или вниз. Для этого также выделим ячейку, перенесем ее на нужное место, после чего выровняем порядок оставшихся окошек, которые сместились вследствие переноса.

При таком способе выделенные ячейки переходят в другую область, при этом все содержимое внутри них сохраняется, а прежние места становятся пустыми.

Третий способ: применение макросов

Данной опцией можно воспользоваться, если макросы по умолчанию установлены в Excel, в противном случае их придется добавить через систему внутренних настроек. Разберем детали выбранного способа:

  1. Переходим в меню «Файл», затем в нижней части списка переходим к пункту «Параметры».

3-sposoba-kak-pomenyat-mestami-yachejki-v-excel

4
  1. Открывается окно «Параметры Excel», здесь необходимо кликнуть по пункту «Настроить ленту» и поставить галочку напротив пункта «Разработчик». Подтверждаем свои действия кнопкой «ОК».

Сразу обратите внимание на панель вкладок, вкладка с названием «Разработчик должна появиться в самом конце.

3-sposoba-kak-pomenyat-mestami-yachejki-v-excel

5
  1. После переключаемся на вкладку «Разработчик», в ней находим инструмент «Visual Basic». Visual Basic — это индивидуальный редактор данных. Необходимо дождаться загрузки дополнительного окна.

3-sposoba-kak-pomenyat-mestami-yachejki-v-excel

6
  1. После открытия вспомогательной программы настроек ищем блок инструментов «Код», он нам и потребуется для корректного редактирования. Находим раздел «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

  1. Следом жмем кнопку «Enter», чтобы данные сохранились. После сохранения можно закрыть окно редактора и продолжить редактирование.

3-sposoba-kak-pomenyat-mestami-yachejki-v-excel

7
  1. Зажимаем клавишу «Ctrl», затем выделяем одинаковое количество строк и столбцов, чтобы получился равномерный со всех сторон диапазон. Теперь переходим к разделу «Макросы» в панели инструментов, кликаем по нему, открывается окно с функцией. Жмем кнопку «Выполнить».

3-sposoba-kak-pomenyat-mestami-yachejki-v-excel

8
  1. Итог данного процесса — смена местоположения ячеек в пределах одного листа.

На заметку! Существует возможность переноса индивидуальных ячеек и их диапазонов с одного листа Excel на другой, причем для этого используется только один многостраничный файл.

Подведем итоги

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

Оцените качество статьи. Нам важно ваше мнение:

Содержание

  • Перемещение ячеек
    • Способ 1: перемещение с помощью копирования
    • Способ 2: перетаскивание
    • Способ 3: применение макросов
  • Вопросы и ответы

Перемещение ячеек относительно друг друга в Microsoft Excel

Потребность поменять ячейки местами друг с другом при работе в таблице Microsoft Excel случается довольно редко. Тем не менее, такие ситуации бывают и их нужно решать. Давайте выясним, какими способами можно поменять ячейки местами в Экселе.

Перемещение ячеек

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

Способ 1: перемещение с помощью копирования

Первый вариант решения проблемы предусматривает банальное копирование данных в отдельную область с последующей заменой. Давайте разберемся, как это делается.

  1. Выделяем ячейку, которую следует переместить. Жмем на кнопку «Копировать». Она размещена на ленте во вкладке «Главная» в группе настроек «Буфер обмена».
  2. Копирование ячейки в Microsoft Excel

  3. Выделяем любой другой пустой элемент на листе. Жмем на кнопку «Вставить». Она находится в том же блоке инструментов на ленте, что и кнопка «Копировать», но в отличие от неё имеет гораздо более заметный вид из-за своих размеров.
  4. Вставка данных в Microsoft Excel

  5. Далее переходим ко второй ячейке, данные которой нужно переместить на место первой. Выделяем её и опять жмем на кнопку «Копировать».
  6. Копирование второй ячейки в Microsoft Excel

  7. Выделяем курсором первую ячейку с данными и жмем на кнопку «Вставить» на ленте.
  8. Вставка второго значения в Microsoft Excel

  9. Одно значение мы переместили, куда нам нужно. Теперь возвращаемся к тому значению, которое мы вставили в пустую ячейку. Выделяем его и жмем на кнопку «Копировать».
  10. Копирование ячейки из буферной области в Microsoft Excel

  11. Выделяем вторую ячейку, в которую нужно переместить данные. Жмем на кнопку «Вставить» на ленте.
  12. Вставка данных в Microsoft Excel

  13. Итак, нужные данные мы поменяли местами. Теперь следует удалить содержимое транзитной ячейки. Выделяем её и щелкаем правой кнопкой мыши. В контекстном меню, которое активировалось после этих действий, переходим по пункту «Очистить содержимое».

Очистка содержимого в Microsoft Excel

Теперь транзитные данные удалены, а задача по перемещению ячеек полностью выполнена.

Ячейки перемещены в Microsoft Excel

Конечно, данный способ не совсем удобен и требует множества дополнительных действий. Тем не менее, именно он применим большинством пользователей.

Способ 2: перетаскивание

Ещё одним способом, с помощью которого существует возможность поменять ячейки местами, можно назвать простое перетаскивание. Правда при использовании этого варианта произойдет сдвиг ячеек.

Lumpics.ru

Выделяем ячейку, которую нужно переместить в другое место. Устанавливаем курсор на её границу. При этом он должен преобразоваться в стрелку, на конце которой находятся указатели, направленные в четыре стороны. Зажимаем клавишу Shift на клавиатуре и перетаскиваем на то место куда хотим.

Перемещение ячейки в Microsoft Excel

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

Ячейки перемещены в программе Microsoft Excel

Поэтому перемещение через несколько ячеек чаще всего происходит некорректно в контексте конкретной таблицы и применяется довольно редко. Но сама потребность поменять содержимое далеко стоящих друг от друга областей не исчезает, а требует других решений.

Ячейки перемещены со сдвигом диапазона в Microsoft Excel

Способ 3: применение макросов

Как уже было сказано выше, не существует быстрого и корректно способа в Эксель без копирования в транзитный диапазон поменять две ячейки между собой местами, если находятся они не в смежных областях. Но этого можно добиться за счет применения макросов или сторонних надстроек. Об использовании одного такого специального макроса мы и поговорим ниже.

  1. Прежде всего, нужно включить у себя в программе режим работы с макросами и панель разработчика, если вы их до сих пор не активировали, так как по умолчанию они отключены.
  2. Далее переходим во вкладку «Разработчик». Выполняем щелчок по кнопке «Visual Basic», которая размещена на ленте в блоке инструментов «Код».
  3. Переход в редактор макросов в Microsoft Excel

  4. Выполняется запуск редактора. В него нужно вставить следующий код:

    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

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

  5. Вставка кода в Microsoft Excel

  6. Выделяем две ячейки или два диапазона равных размеров, которые хотим поменять местами. Для этого кликаем по первому элементу (диапазону) левой кнопкой мыши. Затем зажимаем кнопку Ctrl на клавиатуре и также кликаем левой кнопкой мышки по второй ячейке (диапазону).
  7. Выделение ячеек в Microsoft Excel

  8. Чтобы запустить макрос, жмем на кнопку «Макросы», размещенную на ленте во вкладке «Разработчик» в группе инструментов «Код».
  9. Переход к запуску макроса в Microsoft Excel

  10. Открывается окно выбора макроса. Отмечаем нужный элемент и жмем на кнопку «Выполнить».
  11. Запуск макроса в Microsoft Excel

  12. После этого действия макрос автоматически меняет содержимое выделенных ячеек местами.

Макрос поменял ячейки местами в Microsoft Excel

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

Урок: Как создать макрос в Excel

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

Еще статьи по данной теме:

Помогла ли Вам статья?

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

Откройте файл Excel, в котором вы хотите поменять местами ячейки, столбцы или строки.

Выберите ячейку, строку или столбец, содержимое которых вы хотите поменять местами, и удерживайте нажатой клавишу Shift. Затем щелкните крайнюю правую границу ячейки и перетащите ее наружу. Не отпускайте клавишу Shift.

На изображении ниже вы можете видеть, что когда вы перетаскиваете курсор, он принимает другую форму в зависимости от того, где находится курсор.

Когда курсор приобретает вид толстой горизонтальной буквы «I» в нижней части соседней ячейки, он меняет местами значение ячейки на ячейку под этой линией. Аналогичным образом, если вы переместите его в верхнюю часть соседней ячейки, и он превратится в толстую горизонтальную форму буквы «I» вверху, значение ячейки будет заменено на ячейку над соседней.

Если, однако, вы перетащите его вправо от соседней ячейки и курсор превратится в толстую букву «I», содержимое выбранной ячейки будет заменено содержимым соседней ячейки, как показано на изображении выше.

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

Отпустите клавишу Shift и кнопку мыши, как только вы переместите курсор в то место, где вы хотите поменять местами содержимое ячейки / строки / столбца.

Что вы думаете об этой статье?

Во время работы в Эксель нередко возникает необходимость в изменении порядка ячеек, например, требуется поменять местами некоторые из них. Как это сделать разными способами, разберем в данной статье.

Содержание

  1. Процедура перемещения ячеек
    • Метод 1: копирование
    • Метод 2: перетаскивание
    • Метод 3: использование макросов
  2. Заключение

Процедура перемещения ячеек

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

Метод 1: копирование

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

  1. Встаем в первую ячейку (выделяем ее), которую планируем переместить. Находясь в главной вкладке программы нажимаем на кнопку “Копировать” (группа инструментов “Буфер обмена”). Также можно просто нажать комбинацию клавиш Ctrl+C.Копирование ячейки в Эксель
  2. Переходим в любую свободную ячейку на листе и нажимаем кнопку “Вставить” в той же вкладке и группе инструментов. Или можно снова воспользоваться горячими клавишами – Ctrl+V.Вставка скопированных данных в Эксель
  3. Теперь выделяем вторую ячейку, с которой хотим поменять местами первую, и также копируем ее.Копирование ячейки в Excel
  4. Встаем в первую ячейку и жмем кнопку “Вставить” (или Ctrl+V).Вставка скопированных данных в Excel
  5. Теперь выделяем ячейку, в которую было скопировано значение из первой ячейки и копируем ее.Копирование данных в Эксель
  6. Переходим во вторую ячейку, куда нужно вставить данные, и нажимаем соответствующую кнопку на ленте.Вставка скопированной ячейки в Эксель
  7. Выбранные элементы успешно поменяны местами. Ячейка, в которой временно размещались скопированные данные, больше не нужна. Щелкаем по ней правой кнопкой мыши и в открывшемся меню выбираем команду “Удалить”.Удаление ячейки в Эксель
  8. В зависимости от того, есть ли рядом с данной ячейкой заполненные элементы справа/снизу или нет, выбираем соответствующий вариант удаления и жмем кнопку OK.Выбор варианта удаления ячейки в Excel
  9. Вот и все, что нужно было сделать для того, чтобы поменять ячейки местами.Результата перемещения ячеек относительно друг друга в Эксель

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

Метод 2: перетаскивание

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

  1. Выбираем ячейку, которую планируем переместить в новое место. Наводим курсор мыши на ее границу, и как только он изменит вид на привычный указатель (с 4 стрелками в разные стороны на конце), нажав и не отпуская клавишу Shift, выполняем перенос ячейки в новое место с помощью зажатой левой кнопки мыши.Перемещение ячейки в Эксель
  2. Чаще всего, этот метод используется для того, чтобы поменять местами соседние ячейки, так как сдвиг элементов в данном случае не нарушит структуру таблицы.Смежные ячейки в Эксель
  3. Если мы решим переместить ячейку через несколько других, это повлечет за собой изменение расположения всех остальных элементов.Перемещение ячейки в Excel
  4. После этого придется восстанавливать порядок.Диапазон ячеек в Эксель

Метод 3: использование макросов

Мы упоминали в начале статьи, что в Excel, увы, нет специального инструмента, позволяющего оперативно “перекинуть” местами ячейки (за исключением метода выше, который эффективен только для смежных элементов). Однако сделать это можно с помощью макросов:

  1. Для начала нужно убедиться в том, что в приложении активирован так называемый “режим разработчика” (по умолчанию выключен). Для этого:
  2. Переключаемся во вкладку “Разработчик”, где жмем по значку “Visual Basic” (группа инструментов “Код”).Переход в редактор Visual Basic в Эксель
  3. В редакторе, нажав на кнопку “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
    Код для макроса замены ячеек местами в Эксель
  4. Закрываем окно редактора, щелкнув привычную кнопку в виде крестика в верхнем правом углу.
  5. Зажав клавишу Ctrl на клавиатуре выделяем две ячейки или две области с одинаковым количество элементов, которые планируем поменять местами. Затем нажимаем кнопку “Макросы” (вкладка “Разработчик”, группа “Код”).Активация макроса в Эксель для выбранных ячеек
  6. Появится окно, в котором мы видим ранее созданный макрос. Выбираем его и щелкаем “Выполнить”.Выбор макроса в Excel
  7. В результате работы макрос поменяет местами содержимое выделенных ячеек.Результат замены местами ячеек в Эксель с помощью макроса

Примечание: при закрытии документа макрос будет удален, поэтому, в следующий раз его нужно будет создавать заново (при необходимости). Но, если вы предполагаете, что в дальнейшем придется часто выполнять подобные операции, файл можно сохранить с поддержкой макросов.

Сохранение документа Excel с поддержкой макросов

Заключение

Работа с ячейками в таблице Эксель предполагает не только внесение, редактирование или удаление данных. Иногда требуется перенести или поменять местами ячейки, содержащие определенные значения. Несмотря на то, что в функционале Эксель нет отдельного инструмента для решения данной задачи, выполнить ее можно путем копирования и последующей вставки значений, переноса ячейки или использования макросов.

Поменять местами данные

Serge_007

Дата: Пятница, 21.01.2011, 13:43 |
Сообщение № 1

Группа: Админы

Ранг: Местный житель

Сообщений: 15894


Репутация:

2623

±

Замечаний:
±


Excel 2016

В Excel нет встроенных средств обоюдного переноса данных (например поменять местами значения А1 и В1 одним кликом). Как это реализовать макросом?

Как это должно работать (один из вариантов): Выделяю с нажатым Ctrl два диапазона — ПКМ — Поменять местами. Теперь содержимое ячейки А1 находится в В1 и наоборот.
Спасибо.


ЮMoney:41001419691823 | WMR:126292472390

 

Ответить

Hugo

Дата: Пятница, 21.01.2011, 14:01 |
Сообщение № 2

Группа: Друзья

Ранг: Участник клуба

Сообщений: 3140


Репутация:

670

±

Замечаний:
0% ±


2010, теперь уже с PQ

Из закромов smile :

==============================================================
Стоит задача с помощью макроса в Excel поменять местами выделенные ячейки (ну или выделенные строки/столбцы), при этом ячейки(или строки/столбцы) не являются смежными, а — произвольно выбранными пользователем.
EducatedFool
VBA Developer
———————————————————————————

Вот вам макрос:

[vba]

Код

Sub SwapRanges()
Dim ra As Range: Set ra = Selection
msg1 = «Надо выделить ДВА диапазона ячеек одинакового размера»
msg2 = «Надо выделить 2 диапазона ячеек ОДИНАКОВОГО размера»
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

[/vba]

А вот пример файла с макросом: http://excelvba.ru/XL_Files/Sample__11-08-2010__16-45-29.zip
(запуск макроса нажатием Ctrl + Shift + S)
==============================================================

Добавлю от себя — переносятся только значения, формулы затираются, форматирование остаётся старым.


excel@nxt.ru
webmoney: R418926282008 Z422237915069

 

Ответить

Serge_007

Дата: Пятница, 21.01.2011, 14:10 |
Сообщение № 3

Группа: Админы

Ранг: Местный житель

Сообщений: 15894


Репутация:

2623

±

Замечаний:
±


Excel 2016

Игорь, спасибо, это то что нужно.
Только всё-таки просьба повестить код на ПКМ, а не на сочетание клавиш. Плюс работать это должно в любой книге…


ЮMoney:41001419691823 | WMR:126292472390

 

Ответить

Hugo

Дата: Пятница, 21.01.2011, 14:25 |
Сообщение № 4

Группа: Друзья

Ранг: Участник клуба

Сообщений: 3140


Репутация:

670

±

Замечаний:
0% ±


2010, теперь уже с PQ

Цитата (Serge_007)

Плюс работать это должно в любой книге

Это можно, но сложнее.
Тогда весь код нужно поместить в модуль в Personal.xls или в другую книгу из автозагружаемых, плюс сделать исполнение при загрузке кода типа этого:
[vba]

Код

Sub Inic()
With Application.CommandBars(«Cell»).Controls.Add(Type:=msoControlButton, before:=1)
            .Caption = «SwapRanges»
            .OnAction = «SwapRanges»
            .FaceId = 203
End With
End Sub

[/vba]

Т.е. при загрузке и выгрузки такие коды (обеспечение менюшки):
[vba]

Код

Private Sub Workbook_BeforeClose(Cancel As Boolean)
On Error Resume Next
           Application.CommandBars(«Cell»).Controls.Item(«SwapRanges»).Delete
End Sub

Private Sub Workbook_Open()
On Error Resume Next
           Application.CommandBars(«Cell»).Controls.Item(«SwapRanges»).Delete
           On Error GoTo 0
Inic
End Sub

[/vba]

Можно вероятно эти коды совместить, но у меня так работает, правда задачу другую в итоге выполняет.


excel@nxt.ru
webmoney: R418926282008 Z422237915069

 

Ответить

Alex_ST

Дата: Пятница, 21.01.2011, 21:50 |
Сообщение № 5

Группа: Друзья

Ранг: Участник клуба

Сообщений: 3176


Репутация:

604

±

Замечаний:
0% ±


2003

Я на Планете уже выкладывал такое решение:
[vba]

Код

Sub Selection_eXchange()
‘—————————————————————————————
‘ Procedure    : Selection_eXchange
‘ Author       : Alex_ST
‘ Topic_HEADER : Поменять указанные столбцы местами с помощью макроса
‘ Topic_URL    : http://www.planetaexcel.ru/forum.php?thread_id=15210
‘ Post_Author  : Alex_ST
‘ Post_URL     : http://www.planetaexcel.ru/forum.php?thread_id=15210
‘ DateTime     : 13.04.10, 16:33
‘ Purpose      : обменять ТЕКСТ двух выделенных диапазонов или областей
‘ Notes        :
‘—————————————————————————————
      If Not TypeName(Selection) = «Range» Then Exit Sub
      Dim tmpVar1, tmpVar2
      Dim tmpRng1 As Range, tmpRng2 As Range
      With Selection
          ‘With Intersect(Selection, Selection.Parent.UsedRange)
          Select Case .Areas.Count
          Case 1   ‘ выделена 1 область
              If .Count = 2 Then   ‘ выделено 2 ячейки
                  Set tmpRng1 = .Cells(1): Set tmpRng2 = .Cells(2)
              ElseIf .Rows.Count = 2 And .Columns.Count > 2 Then  ‘ выделен горизонтальный диапазон в 2 строки
                  Set tmpRng1 = Range(Cells(.Row, .Column), Cells(.Row, .Column + .Columns.Count — 1))   ‘ 1-я строка диапазона
                  Set tmpRng2 = tmpRng1.Offset(1, 0)   ‘ 2-я строка ниже на 1
              ElseIf .Columns.Count = 2 And .Rows.Count > 2 Then    ‘ выделен вертикальный диапазон в 2 столбца
                  Set tmpRng1 = Range(Cells(.Row, .Column), Cells(.Row + .Rows.Count — 1, .Column))  ‘ 1-й столбец
                  Set tmpRng2 = tmpRng1.Offset(0, 1)   ‘ 2-й столбец правее на 1
              Else: Exit Sub
              End If
          Case 2   ‘ выделено 2 области
              If .Areas(1).Columns.Count = .Areas(2).Columns.Count And _
                 .Areas(1).Rows.Count = .Areas(2).Rows.Count Then   ‘ одинаковая размерность областей
                  Set tmpRng1 = .Areas(1): Set tmpRng2 = .Areas(2)
              End If
          Case Else: Exit Sub
          End Select
      End With
      Application.ScreenUpdating = False: Application.EnableEvents = False
      tmpVar1 = tmpRng1: tmpVar2 = tmpRng2
      tmpRng1.Value = tmpVar2: tmpRng2.Value = tmpVar1
      Application.EnableEvents = True: Application.ScreenUpdating = True
End Sub

[/vba]



С уважением,
Алексей
MS Excel 2003 — the best!!!

 

Ответить

Serge_007

Дата: Пятница, 21.01.2011, 22:21 |
Сообщение № 6

Группа: Админы

Ранг: Местный житель

Сообщений: 15894


Репутация:

2623

±

Замечаний:
±


Excel 2016

Quote (Alex_ST)

а Планете уже выкладывал такое решение

Не видел, спасибо.


ЮMoney:41001419691823 | WMR:126292472390

 

Ответить

slavaleks

Дата: Среда, 20.03.2013, 19:40 |
Сообщение № 7

Группа: Пользователи

Ранг: Прохожий

Сообщений: 2


Репутация:

0

±

Замечаний:
0% ±


2010

Цитата (Hugo)

Из закромов smile :

==============================================================
Стоит задача с помощью макроса в Exel поменять местами выделенные ячейки (ну или выделенные строки/столбцы), при этом ячейки(или строки/столбцы) не являются смежными, а — произвольно выбранными пользователем.
EducatedFool
VBA Developer
———————————————————————————

Вот вам макрос:

Код:

Sub SwapRanges()
Dim ra As Range: Set ra = Selection
msg1 = «Надо выделить ДВА диапазона ячеек одинакового размера»
msg2 = «Надо выделить 2 диапазона ячеек ОДИНАКОВОГО размера»
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

А вот пример файла с макросом: http://excelvba.ru/XL_Files/Sample__11-08-2010__16-45-29.zip
(запуск макроса нажатием Ctrl + Shift + S)
==============================================================

Добавлю от себя — переносятся только значения, формулы затираются, форматирование остаётся старым.

Hugo,
======================================================================

Спасибо за очень нужный макрос — это то что я искал!
Одна ,блин, незадачка — при смене раскладки клавиатуры постоянно выскакивает окно:

«Microsoft Visual Basic
Run-time error ‘1004’:
Method ‘OnKey’ of object ‘.Application’ failed»

Подскажите, пожалуйста, как от него избавится?

 

Ответить

KuklP

Дата: Среда, 20.03.2013, 20:29 |
Сообщение № 8

Группа: Проверенные

Ранг: Старожил

Сообщений: 2369


Репутация:

486

±

Замечаний:
0% ±


2003-2010

А в каком коде из этой темы Вы видели Method ‘OnKey’?


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728

 

Ответить

Alex_ST

Дата: Среда, 20.03.2013, 23:14 |
Сообщение № 9

Группа: Друзья

Ранг: Участник клуба

Сообщений: 3176


Репутация:

604

±

Замечаний:
0% ±


2003

slavaleks, в этом посте съехал текст кода.
Вы подправили у себя? Если нет, подождите пока Игорь не исправит. Я ему в личку просьбу об этом кинул.

Отображение кода Hugo починил.



С уважением,
Алексей
MS Excel 2003 — the best!!!

Сообщение отредактировал Alex_STЧетверг, 21.03.2013, 08:42

 

Ответить

Alex_ST

Дата: Среда, 20.03.2013, 23:24 |
Сообщение № 10

Группа: Друзья

Ранг: Участник клуба

Сообщений: 3176


Репутация:

604

±

Замечаний:
0% ±


2003

Ну, пока делать было нечего я сам поправил и чуть сократил то, что исказилось в посте Hugo.
В модуле ЭтаКнига должно быть прописано так[vba]

Код

Private Sub Workbook_BeforeClose(Cancel As Boolean)
       On Error Resume Next
       Application.CommandBars(«Cell»).Controls.Item(«SwapRanges»).Delete
End Sub

Private Sub Workbook_Open()
       On Error Resume Next
       With Application.CommandBars(«Cell»).Controls
           .Item(«SwapRanges»).Delete
           With .Add(Type:=msoControlButton, before:=1)
               .Caption = «SwapRanges»
               .OnAction = «SwapRanges»
               .FaceId = 203
           End With
       End With
       On Error GoTo 0
End Sub

[/vba]



С уважением,
Алексей
MS Excel 2003 — the best!!!

Сообщение отредактировал Alex_STЧетверг, 21.03.2013, 08:59

 

Ответить

Wasilich

Дата: Четверг, 21.03.2013, 11:49 |
Сообщение № 11

Группа: Друзья

Ранг: Старожил

Сообщений: 1232


Репутация:

326

±

Замечаний:
0% ±


2003

У меня тож примерчик завалялся. Мож пригодится.

К сообщению приложен файл:

__..xls
(28.0 Kb)

 

Ответить

slavaleks

Дата: Четверг, 21.03.2013, 13:33 |
Сообщение № 12

Группа: Пользователи

Ранг: Прохожий

Сообщений: 2


Репутация:

0

±

Замечаний:
0% ±


2010

Alex_ST, Всё работает супер, за что, премного благодарен!
Вот ещё дилетантский вопрос остался. Это нормально, что при выполнении любого макроса у меня не работает «Шаг назад» Ctrl+Z?

 

Ответить

Serge_007

Дата: Четверг, 21.03.2013, 13:38 |
Сообщение № 13

Группа: Админы

Ранг: Местный житель

Сообщений: 15894


Репутация:

2623

±

Замечаний:
±


Excel 2016


ЮMoney:41001419691823 | WMR:126292472390

 

Ответить

mixanic

Дата: Понедельник, 18.07.2016, 15:25 |
Сообщение № 14

Группа: Пользователи

Ранг: Прохожий

Сообщений: 1


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

Добавлю от себя — переносятся только значения, формулы затираются, форматирование остаётся старым.

Подскажите, как сделать чтобы формулы тоже переносились !?

 

Ответить

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

Например, если данные выглядят так: «Регионы продаж» в заголовках столбцов и «Кварталы» с левой стороны:

Данные по регионам в столбцах

Функция Транспонировать переупомешет таблицу, в которой столбцы «Кварталы» отображаются в заголовках столбцов, а слева будут показаны регионы продаж, например:

Данные по регионам в строках

Примечание: Если данные хранятся в таблице Excel, функция Транспонирование будет недоступна. Можно сначала преобразовать таблицу в диапазон или воспользоваться функцией ТРАНСП, чтобы повернуть строки и столбцы.

Вот как это сделать:

  1. Выделите диапазон данных, который требуется переупорядочить, включая заголовки строк или столбцов, а затем нажмите клавиши CTRL+C.

    Примечание: Убедитесь, что для этого нужно скопировать данные, так как не получится использовать команду Вырезать или CTRL+X.

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

    Щелкните правой кнопкой мыши левую верхнюю ячейку, в которой нужно ввести транспонировать таблицу, и выберите транспонировать Изображение кнопки транспонирования.

    Меню "Параметры вставки"

  3. После успешного поворота данных можно удалить исходную таблицу, и данные в новой таблице останутся без изменений.

Советы по транспонированию данных

  • Если данные содержат формулы, Excel автоматически обновляет их в соответствие с новым расположением. Убедитесь, что в этих формулах используются абсолютные ссылки. Если они не используются, перед поворотом данных можно переключаться между относительными, абсолютными и смешанными ссылками.

  • Если вы хотите часто поворачивать данные для их просмотра под разными углами, создайте с помощью нее с помощью перетаскиванием полей из области строк в область столбцов (или наоборот)в списке полей.

Вы можете ввести в книгу данные в качестве транспон данных. Транспонировать: переупочевание содержимого скопированные ячейки при копировании. Данные строк будут вставлены в столбцы, и наоборот.

Пример транспонии в окне "В этом примере"

Вот как можно транспоннять содержимое ячейки:

  1. Скопируйте диапазон ячеев.

  2. Вы выберите пустые ячейки, в которые вы хотите ввести транспонировать данные.

  3. На вкладке Главная щелкните значок Ввести и выберите Ввести транспонировать.

 

repinsa

Пользователь

Сообщений: 23
Регистрация: 01.01.1970

Есть необходимость менять значение ячеек в соседних столбцах местами, встроенной функции вроде нет, как это сделать ?

 

Serge

Пользователь

Сообщений: 11308
Регистрация: 01.01.1970

 

Юрий М

Модератор

Сообщений: 60585
Регистрация: 14.09.2012

Контакты см. в профиле

Можно простеньким макросом. Значения в А1 и В1.  
Sub Macro1()  
Dim x, y  
x = Cells(1, 1)  
y = Cells(1, 2)  
Cells(1, 2) = x  
Cells(1, 1) = y  
End Sub

 

Hugo

Пользователь

Сообщений: 23253
Регистрация: 22.12.2012

Если нужно вставить туда-же назад только значения, можно попытаться сделать на массивах — берём выделенное в массив (или массивы), запрашиваем порядок выгрузки, выгружаем. Это так предварительно, не продумывая пока детали. Может что и не сойдётся…

 

repinsa

Пользователь

Сообщений: 23
Регистрация: 01.01.1970

Юрий М.  
Чет оно у меня не работает, как его прикрутить? и чтоб делало с выделенными ячейками?

 

repinsa

Пользователь

Сообщений: 23
Регистрация: 01.01.1970

Юрий М.  
Извиняюсь, запарился, не в ту книгу макрос поместил.  
Да, это то, что надо, такое простенькое, в основном придется менять два значения в соседних столбцах, минимальное кол-во данных, а как это сделать чтоб с выделенными ячейками работало

 
 

Hugo

Пользователь

Сообщений: 23253
Регистрация: 22.12.2012

Если строго в одном ряду, в одном блоке выделения, меняем местами крайние — модификачия пред.кода:  

  Sub Macro1()  
Dim x, y  
x = Cells(Selection.Row, Selection.Column)  
y = Cells(Selection.Row, Selection.Column + Selection.Columns.Count — 1)  
Cells(Selection.Row, Selection.Column + Selection.Columns.Count — 1) = x  
Cells(Selection.Row, Selection.Column) = y  
End Sub

 

ДА, да, то, что надо, спасибо!!!

 

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

  Sub SwapCells()  
Dim bSecond As Boolean, rX As Range, r2 As Range, v  
If Selection.Cells.Count <> 2 Then MsgBox «Число выделенных ячеек не равно 2.», vbCritical: Exit Sub  
For Each rX In Selection.Cells  
   If bSecond Then  
       v = rX  
       r2.Copy rX  
       r2 = v  
   Else  
       bSecond = True  
       Set r2 = rX  
   End If  
Next  
End Sub

 

спасибо! но в данном случае он менят только 2. А как нужно исправить код, чтобы менять местами области выделения?

 

Достаточно сделать замену «cell» на «area», и оно уже работает :)  

  Sub SwapAreas()  
Dim bSecond As Boolean, rX As Range, r2 As Range, v  
If Selection.Areas.Count <> 2 Then MsgBox «Число выделенных областей не равно 2.», vbCritical: Exit Sub  
For Each rX In Selection.Areas  
   If bSecond Then  
       v = rX  
       r2.Copy rX  
       r2 = v  
   Else  
       bSecond = True  
       Set r2 = rX  
   End If  
Next  
End Sub

 

В случае областей даже проще, их не надо перебирать через For Each, а можно обращаться непосредственно (с ячейками так не получается).  
Добавил проверку размеров областей:  

    Sub SwapAreas2()  
Dim a1 As Range, a2 As Range, v  
If Selection.Areas.Count <> 2 Then MsgBox «Число выделенных областей не равно 2.», vbCritical: Exit Sub  
Set a1 = Selection.Areas(1)  
Set a2 = Selection.Areas(2)  
If a1.Rows.Count <> a2.Rows.Count Or a1.Columns.Count <> a2.Columns.Count Then _  
   If MsgBox(«Размеры выделенных областей не совпадают. Продолжить?», _  
       vbExclamation + vbYesNo + vbDefaultButton2) <> vbYes Then Exit Sub  
v = a2.Value  
a1.Copy a2.Cells(1)  
a1.Value = v  
End Sub

 

k61

Пользователь

Сообщений: 2441
Регистрация: 21.12.2012

Получается для двух ячеек без For Each:  
Sub SwapAreas3()  
Dim a1 As Range, a2 As Range, v  
If Selection.Areas.Count <> 2 Then MsgBox «Число выделенных областей не равно 2.», vbCritical: Exit Sub  
Set a1 = Selection.Areas(1)  
Set a2 = Selection.Areas(2)  
If a1.Count <> a2.Count Then Exit Sub  
v = a2.Value  
a1.Copy a2.Cells(1)  
a1.Value = v  
End Sub

 

Да, разумеется, Area может состоять из одной ячейки :)  
Я имел в виду то, что вторую ячейку выделения нельзя получить как .Cells(2).  
В общем, получается так:  

  Sub SwapAreas4()  
Dim a1 As Range, a2 As Range, v  
If TypeName(Selection) <> «Range» Then MsgBox «Выделенный объект не является диапазоном.», vbCritical: Exit Sub  
With Selection  
   Select Case .Areas.Count  
   Case 1 ‘1 область  
       If .Cells.Count <> 2 Then MsgBox «Число выделенных ячеек не равно 2.», vbCritical: Exit Sub  
       Set a1 = .Cells(1)  
       For Each a2 In .Cells  
           v = v + 1  
           If v = 2 Then Exit For  
       Next  
   Case 2 ‘2 области  
       Set a1 = .Areas(1)  
       Set a2 = .Areas(2)  
       If a1.Rows.Count <> a2.Rows.Count Or a1.Columns.Count <> a2.Columns.Count Then _  
           If MsgBox(«Размеры выделенных областей не совпадают. Продолжить?», _  
               vbExclamation + vbYesNo + vbDefaultButton2) <> vbYes Then Exit Sub  
   Case Else  
       MsgBox «Число выделенных областей не равно 2.», vbCritical: Exit Sub  
   End Select  
End With  
v = a2.Value  
a1.Copy a2.Cells(1)  
a1.Value = v  
End Sub

 

Казанский

Пользователь

Сообщений: 8839
Регистрация: 11.01.2013

#16

11.09.2012 10:47:00

Этот кусок  

         Set a1 = .Cells(1)  
       For Each a2 In .Cells  
           v = v + 1  
           If v = 2 Then Exit For  
       Next  

  можно сократить :)  

         For Each a2 In .Cells  
           If v Then Exit For Else Set a1 = a2: v = 1  
       Next

Понравилась статья? Поделить с друзьями:

А вот еще интересные статьи:

  • Как поменять местами значение ячеек в excel
  • Как поменять местами две ячейки в excel
  • Как поменять местами две строки в excel
  • Как поменять местами данные в таблице excel
  • Как поменять местами абзацы в word

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии