Поменять содержимое ячейки в Excel?

42

Есть ли простой способ поменять содержимое двух ячеек в Microsoft Excel?

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

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

Ответы:

47

От: http://www.extendoffice.com/documents/excel/860-excel-swap-contents-of-two-cells.html

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

введите описание изображения здесь

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

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

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

  4. Когда появится «工», отпустите кнопку мыши.

  5. И содержимое двух ячеек было поменяно местами.

введите описание изображения здесь

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

user190216
источник
8
Это должен быть выбранный мне ответ. Спасибо!
Нам G VU
2
Это не работает для меня. Он просто вставляет пустые ячейки между этими двумя ячейками
phuclv
2
Это работает только для соседних ячеек, что не является тем, о чем спрашивал оригинальный вопрос.
jpierson
Это не работает для меня в Excel 2010 - он быстро мигает, но содержимое ячеек остается неизменным.
Хашим
@phuclv У меня была та же проблема, что и у вас, прежде чем я понял, что на шаге 2 я поместил курсор мыши на нижнюю правую границу, а не среднюю правую границу.
Ричард
17

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

  1. Выберите правильный или нижний диапазон
  2. Нажмите Ctrl+X
  3. Выберите соседний диапазон (т. Е. Прямо над или слева)
  4. Нажмите Ctrl+ +( +обычно над =клавишей, что означает Ctrl+ Shift+ =)

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

Йонас Гейдельберг
источник
1
Превосходно. Это именно то, что я искал. Возможность использовать сочетания клавиш и работать с несколькими ячейками намного быстрее.
Энтони Дж - справедливость для Моники
Это не работает для меня. И клетки соседствуют друг с другом. Я не знаю, почему это не работает. Есть ли какое-то конкретное объяснение для этой команды?
Умный гуманизм
15

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

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

Sub Swap()     
    If Selection.Count <> 2 Then     
         MsgBox "Select 2 cells (only) to swap."     
         Exit Sub     
    End If     
    Set trange = Selection     
    If trange.Areas.Count = 2 Then     
         temp = trange.Areas(2)     
         trange.Areas(2) = trange.Areas(1)     
         trange.Areas(1) = temp     
    Else     
         temp = trange(1)     
         trange(1) = trange(2)     
         trange(2) = temp     
    End If     
End Sub     
ghoppe
источник
4
Я не эксперт VBA и не имею ни времени, ни желания стать им. Я также часто использую много разных компьютеров. Было бы хорошо иметь возможность подкачки на каждом компьютере, который я использую для Excel, без необходимости искать код для макроса VBA, который это делает, чтобы я мог связать его с горячей клавишей.
Дэн Молдинг
3
@Dan Было бы неплохо, если бы каждый мог встроить свою функциональность в Excel, но тогда это стало бы еще более раздутым беспорядком, чем это уже есть. Существует причина, по которой в Excel есть макроязык, для автоматизации таких повторяющихся задач, как эта. Я разместил код, найденный через поиск Google. Вам не нужно быть экспертом.
ghoppe
+1 VBA - это способ, которым Excel позволяет вам добавлять функции вашего питомца. Есть также способы сделать эту VBA доступной на многих компьютерах, только для себя или для всех (например, личная рабочая тетрадь или надстройки)
chris neilsen
9
Я бы вряд ли назвал замену содержимого двух ячеек / строк / столбцов функцией питомца.
Николай
5
@ghoppe Может быть, это и не нужно, но если вы выполните быстрый поиск «поменять содержимое двух ячеек в excel» (которое у вас уже есть), то совершенно очевидно, что Дэн и я едва ли единственные, кому небезразлична эта функция.
Николай
5

Нет. Невозможно заменить содержимое двух ячеек в Excel без написания собственного макроса для этого.

РЕДАКТИРОВАТЬ: Похоже, что теперь может быть простой способ поменять содержимое ячеек в более поздних версиях Excel, поэтому этот ответ, вероятно, устарел.

Дэн Молдинг
источник
это утверждение неверно. Смотрите ответ от user190216.
Карл Руки
@KarlRookey Первоначально в этом ответе говорилось (и оно все еще делает), что ячейки должны быть смежными. Похоже, это больше не может быть правдой для более поздних версий Excel. Если это так, то да, теперь есть лучший ответ. Благодарность!
Дэн Молдинг
Спасибо за это. Все приведенные здесь примеры имеют побочный эффект от перестановки двух ячеек (если они смежные), но не «меняют ячейки», а «сдвигают» ячейки.
Питер Ричи
2

Выберите первый набор ячеек, которые нужно поменять местами, и нажмите ctrl+ x:

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

user287020
источник
1
Это работает, только если ячейки находятся рядом. В противном случае весь материал перемещается рядом с целевыми клетками.
тумчаадитья
0

Вы можете вставить до 25 элементов в буфер обмена, так что их легко поменять, используя ctr + tab или cmd + tab mac

Аарон
источник
2
Это стандартная функция Mac? Автор вопроса не уточнил, на какой платформе они находятся. Я не уверен, содержит ли стандартный буфер обмена во всех версиях Windows более одного элемента, но бесплатные утилиты легко доступны для обеспечения этой функциональности (и сочетания клавиш могут различаться). Не могли бы вы расширить свой ответ, чтобы сделать его более полным для этого подхода?
fixer1234
Я попробовал это на Windows, но не мог понять это. Я даже попробовал ctrl + shift + p, который обычно работает в Visual Studio, чтобы вставить из буфера обмена.
jpierson
0
  • Выберите нижнюю ячейку, которую вы хотите поменять
  • Нажмите Ctrl+ Xи перейдите в ячейку, с которой вы хотите обменяться
  • Нажмите Ctrl+ Shift+=

Обмен будет выполнен

мендиратта со
источник
Это точно так же, как ответ Йонаса Гейдельберга ( точно! ) Шесть лет назад, и фактически совпадает с ответом пользователя 287020 .
Скотт
0

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

Sub Swap()

    If Selection.Areas.Count <> 2 Then
         MsgBox "Select 2 cell ranges (only) to swap."
         Exit Sub
    End If


    If Selection.Areas(1).Count <> Selection.Areas(2).Count Then
         MsgBox "The two areas must be of equal size"
         Exit Sub
    End If

    'With this for loop we run through each cell 1 by 1
    For i = 1 To Selection.Areas(1).Count
        'Swapping values
        temp = Selection.Areas(1)(i)
        Selection.Areas(1)(i) = Selection.Areas(2)(i)
        Selection.Areas(2)(i) = temp

        'Swapping color
        tempColor = Selection.Areas(1)(i).DisplayFormat.Interior.Color
        Selection.Areas(1)(i).Interior.Color = Selection.Areas(2)(i).DisplayFormat.Interior.Color
        Selection.Areas(2)(i).Interior.Color = tempColor
    Next i

End Sub
Иво ван дер Марел
источник