在Excel中交换单元格内容?


42

有没有一种简单的方法可以交换Microsoft Excel中两个单元格的内容?

简单来说,我指的是键盘快捷键或菜单项,而不涉及复制到临时单元格或编写VBA脚本或类似内容。换句话说,我正在寻找一种方法,只需选择两个单元格,然后单击某些菜单项或按一些组合键即可交换它们的内容。当然,必须有一种方法可以做到这一点?


这似乎是一个非常具体的实施形式的,如果它不是已经存在于高级排序选项,我会,感到惊讶,如果你可以在别的地方找到一个非VBA的解决方案
drapkin11

Answers:


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. 并且两个单元格内容已交换。

在此处输入图片说明

使用此方法,我们还可以交换两个相邻的行或列。


8
这应该是我选择的分析服务。谢谢!
Nam G VU 2014年

2
它对我不起作用。它只是在这两个单元格之间插入空单元格
phuclv 2016年

2
这仅适用于相邻的单元格,而不是原始问题所要求的。
jpierson

这对我在Excel 2010上根本不起作用-它会快速闪烁,但是单元格的内容保持不变。
Hashim

@phuclv在遇到第2步之前,我遇到了与您相同的问题,我将鼠标光标放在右下边框而不是右中间边框上。
理查德

17

对于相邻的相同大小的矩形范围的特定情况,您可以使用此答案中描述的类似问题的方法

  1. 选择正确或底部范围
  2. Ctrl+X
  3. 选择相邻范围(即,直接在上方或左侧)
  4. 按下Ctrl+ ++通常在=键上方,因此翻译为Ctrl+ Shift+ =

请注意,可以使用相同的过程交换整个相邻的行或列。


1
优秀。这正是我想要的。能够使用键盘快捷键并能够在多个单元上进行操作要快得多。
Anthony G-Monica的正义

这对我不起作用。并且这些单元彼此相邻。我不知道为什么这行不通。这个命令有什么特别的解释吗?
Smart Humanism

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     

4
我不是VBA专家,既没有时间也没有成为一名专家的意愿。我也经常使用许多不同的计算机。最好在我用于Excel的每台计算机上都可以使用交换功能,而不必查找执行该操作的VBA宏的代码,以便可以将其绑定到热键。
Dan Molding

3
@Dan如果每个人都可以将自己的宠物功能内置到Excel中,那将是很好的选择,但是那样的话,它会变得比以前更加already肿。Excel具有宏语言以自动执行此类重复任务是有原因的。我张贴了通过Google搜索找到的代码。你不具备成为一个专家。
ghoppe 2011年

+1 vba是excel允许您添加宠物功能的方法。还有一些方法可以使vba在许多计算机上可用,无论您自己还是所有人(例如个人工作簿或
加载项

9
我几乎不称将两个单元格/行/列的内容交换为宠物函数。
Nicolai 2012年

5
@ghoppe也许不是必需的,但是如果您快速搜索“交换excel中两个单元格的内容”(您已经拥有),则很显然Dan和我并不是唯一关心此功能的人。
Nicolai 2012年

5

不能。没有编写自己的宏就无法交换Excel中两个单元格的内容的方法。

编辑:听起来现在可能存在一种在较新版本的Excel中交换单元格内容的简便方法,因此此答案可能现在已过时。


这个说法是不正确的。请参阅user190216的答案。
Karl Rookey 2015年

@KarlRookey最初,该回答表明(并且仍然是这样)单元必须相邻。听起来这对于更高版本的Excel可能不再适用。如果是这样,那么是的,现在有了更好的答案。谢谢!
Dan Moulding'9

谢谢你这么说 此处的所有示例均具有交换两个单元格(如果它们相邻)的副作用,但不“交换单元格”,而是“移动”单元格。
彼得·里奇

2

选择要交换的第一组单元格,然后按ctrl+ x

选择要交换的单元格旁边的单元格,然后按ctrl+ +


1
仅在单元格相邻时才有效。否则,整个对象将转移到目标单元附近。
tumchaaditya 2014年

0

您最多可以将25个项目粘贴到剪贴板,因此可以使用ctr + tab或cmd + tab mac轻松交换它们


2
这是Mac的标准功能吗?问题的作者未指定它们所处的平台。我不确定所有Windows版本中的标准剪贴板是否都包含多个项目,但是免费提供的实用程序可以提供该功能(并且键盘快捷键可能会有所不同)。您能否扩大答案以使该方法更全面?
fixer1234 2014年

我在Windows上尝试过此操作,但无法解决。我什至尝试了通常在Visual Studio中工作的ctrl + shift + p选项将其粘贴到剪贴板环之外。
jpierson


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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.