如何在Excel中切换列和行

  • Share This
Michael Brown

该教程展示了在Excel中把行换成列的不同方法:公式、VBA代码和一个特殊工具。

在Excel中转换数据是许多用户熟悉的任务。 很多时候,你建立了一个复杂的表格,却发现为了更好地分析或在图表中展示数据,将其旋转是非常有意义的。

在这篇文章中,你会发现几种将行转换为列(或将列转换为行)的方法,不管你怎么叫,都是一样的:)这些解决方案在Excel 2010到Excel 365的所有版本中都适用,涵盖了许多可能的情况,并解释了大多数典型错误。

    在Excel中使用特殊粘贴将行转换为列

    假设你有类似于下面图形上部的数据集,国家名称被组织成列,但国家名单太长了,所以我们最好把列改为行,以使表格适合在屏幕上显示。

    要把行换成列,请执行这些步骤。

    1. 选择原始数据。 要快速选择整个表格,即电子表格中所有有数据的单元格,按Ctrl + Home,然后按Ctrl + Shift + End 。
    2. 复制选中的单元格,可以通过右键点击选中的单元格并选择 拷贝 从上下文菜单或按Ctrl + C 。
    3. 选择目标区域的第一个单元格。

      请确保选择的单元格不在包含原始数据的范围内,这样复制区域和粘贴区域就不会重叠。 例如,如果你目前有4列10行,转换后的表格将有10列4行。

    4. 右击目标单元格,选择 粘贴专用 从上下文菜单中选择 转位 .

    更多信息,请参见《如何在Excel中使用特殊粘贴》。

    注意:如果你的源数据包含公式,请确保正确使用相对和绝对引用,这取决于它们是否应该被调整或保持锁定在某些单元格。

    正如你刚才看到的,"特殊粘贴 "功能可以让你在几秒钟内完成行到列(或列到行)的转换。 这种方法还可以复制原始数据的格式,这为它增加了一个有利因素。

    然而,这种方法有 两个缺点 这使得它不能被称为Excel中数据转置的完美解决方案。

    • 它不太适合用于旋转功能齐全的Excel表格。 如果你复制整个表格,然后打开 粘贴专用 对话框,你会发现 转位 在这种情况下,你需要复制没有列标题的表格,或者先将其转换为一个范围。
    • 粘贴专用 > 转位 没有将新表与原始数据联系起来,所以它只适合于一次性转换。 每当源数据发生变化时,你就需要重复这个过程,重新旋转表。 没有人愿意把时间浪费在反复切换相同的行和列上,对吗?

    如何转置一个表格并将其与原始数据连接起来

    让我们看看如何使用熟悉的 "行 "与 "列 "之间的转换。 粘贴专用 这种方法最好的一点是,只要你改变源表中的数据,翻转的表就会反映这些变化并相应地更新。

    1. 复制你要转换为列的行(或要改变为行的列)。
    2. 在同一个或另一个工作表中选择一个空单元格。
    3. 打开 粘贴专用 对话框,如前面的例子所解释的,然后点击 粘贴链接 在左下角。

    你会得到一个与此类似的结果。

  • 选择新的表格并打开Excel的查找和替换对话框(或按Ctrl + H进入 替换 选项卡直接)。
  • 用 "xxx "或任何其他不存在于真实数据中的字符替换所有"="字符。
  • 这将使你的桌子变成一个有点可怕的东西,就像你在下面的截图中看到的那样,但不要惊慌,只要再走两步,你就能达到预期的效果。

  • 复制带有 "xxx "值的表格,然后使用 粘贴特殊> 移位 将列翻转为行
  • 最后,打开 查找和替换 再对话一次,以逆转变化,即用"="替换所有的 "xxx",以恢复对原始单元格的链接。
  • 这个办法有点长,但很优雅,不是吗? 这个办法的唯一缺点是,原始格式化在这个过程中会丢失,你需要手动恢复它(我会在本教程中进一步告诉你一个快速的方法)。

    如何在Excel中使用公式进行转置

    在Excel中动态切换列和行的一个更快捷的方法是使用TRANSPOSE或INDEX/ADDRESS公式。 与前面的例子一样,这些公式也保持与原始数据的联系,但工作方式有些不同。

    使用TRANSPOSE函数将Excel中的行改为列

    顾名思义,TRANSPOSE函数是专门为Excel中的数据转置而设计的。

    =TRANSPOSE(array)

    在这个例子中,我们将转换另一个按人口列出美国各州的表格。

    1. 计算原表的行和列的数量,并选择相同数量的空白单元格,但在另一个方向。

      例如,我们的样本表有7列6行,包括标题。 由于TRANSPOSE函数将把列改为行,我们选择6列7行的范围。

    2. 选定空单元格后,输入这个公式。

      =transpose(a1:g6)

    3. 由于我们的公式需要应用于多个单元格,按Ctrl + Shift + Enter键,使其成为一个数组公式。

    Voilà,列被改变为行,完全按照我们的要求。

    TRANSPOSE功能的优点。

    使用TRANSPOSE函数的主要好处是,旋转的表保留了与源表的连接,每当你改变源数据时,转置的表也会相应改变。

    TRANSPOSE功能的弱点。

    • 正如你在上面的截图中看到的那样,原始的表格格式不会保存在转换后的表格中。
    • 如果原表中有任何空单元格,转置后的单元格将包含0。 要解决这个问题,请将TRANSPOSE与IF函数结合使用,如本例所解释的:如何进行无零转置。
    • 你不能在旋转的表格中编辑任何单元格,因为它在很大程度上依赖于源数据。 如果你试图改变某些单元格的值,你会出现 "你不能改变数组的一部分 "的错误。

    总结一下,不管囊括功能有多好,有多容易使用,它肯定缺乏灵活性,因此在很多情况下可能不是最好的方法。

    欲了解更多信息,请参见Excel TRANSPOSE函数与实例。

    用INDIRECT和ADDRESS函数将行转换成列

    在这个例子中,将使用两个函数的组合,这是一个有点棘手的问题。 因此,让我们旋转一个较小的表格,以便能够更好地集中在公式上。

    假设,你有4列(A-D)和5行(1-5)的数据。

    要想让列转换为行,请执行以下操作。

    1. 在目标区域最左边的单元格(如A7)中输入以下公式,然后按回车键。

      =indirect(address(column(a1),row(a1)))

    2. 通过拖动选定单元格右下角的小黑叉,将公式向右和向下复制到所需的行和列。

    就这样!在你新创建的表中,所有的列都被转换为行。

    如果你的数据从1以外的行和A以外的列开始,你将不得不使用一个更复杂的公式。

    =indirect(address( column(a1) - column($a$1) + row($a$1), row(a1) - row($a$1) + column($a$1))

    其中A1是源表中最左上角的单元格。 另外,请注意使用绝对和相对单元格引用。

    然而,与原始数据相比,转置的细胞看起来非常平淡无奇。

    但不要失望,这个问题很容易解决。 要恢复原来的格式,你要做的是以下几点。

    • 复制原表。
    • 选择产生的表格。
    • 右键单击生成的表格并选择 粘贴选项 > 格式化 .

    优势 : 这个公式提供了一种更灵活的方式来将Excel中的行变成列。 它允许在转置的表格中做任何改变,因为你使用的是普通公式,而不是数组公式。

    缺点 我只看到一个问题--序号数据的格式化丢失了。 虽然,你可以快速恢复它,如上图所示。

    这个公式如何运作

    现在你知道了如何使用 INDIRECT / ADDRESS 组合,你可能想深入了解这个公式的实际作用。

    顾名思义,INDIRECT函数是用来间接引用一个单元格的。 但INDIRECT的真正威力在于它可以把任何字符串变成一个引用,包括你用其他函数和其他单元格的值建立起来的字符串。 这正是我们要做的。 如果你跟上了这一点,你会很容易理解剩下的一切: )

    正如你所记得的,我们在公式中还使用了3个函数--ADDRESS、COLUMN和ROW。

    ADDRESS函数通过你指定的行号和列号分别获得单元格地址。 请记住顺序:第一-行,第二-列。

    在我们的公式中,我们以相反的顺序提供坐标,这才是真正的诀窍!换句话说,公式的这一部分ADDRESS(COLUMN(A1),ROW(A1))将行换成了列,即取一个列号并将其变为行号,然后取一个行号并将其变为列号。

    最后,INDIRECT函数输出旋转后的数据。 完全没有什么可怕的,不是吗?

    使用VBA宏在Excel中进行数据转置

    要在Excel中实现行与列的自动转换,你可以使用以下宏。

    Sub TransposeColumnsRows() Dim SourceRange As Range Dim DestRange As Range Set SourceRange = Application.InputBox(Prompt:= "Please select the range to transpose" , Title:= "Transfose Rows to Columns" , Type :=8) Set DestRange = Application.InputBox(Prompt:= "Select upper left cell of the destination range" , Title:= "Transfose Rows to Columns" , Type :=8) SourceRange.Copy DestRange Select。Selection.PasteSpecial 粘贴:=xlPasteAll, Operation:=xlNone, SkipBlanks:= False , Transpose:= True Application.CutCopyMode = False End Sub

    要在你的工作表中添加一个宏,请遵循《如何在Excel中插入和运行VBA代码》中描述的指南。

    注意:用VBA进行转置,有65536个元素的限制。 如果你的数组超过这个限制,多余的数据会被悄悄地丢掉。

    如何使用宏来转换行到列

    在你的工作簿中插入宏,执行以下步骤来旋转你的表格。

    1. 打开目标工作表,按Alt+F8,选择 转移列和行 宏,并点击 运转 .

  • 选择你想切换行和列的范围,然后点击 认可 :
  • 选择目标区域的左上角单元格,并点击 认可 :
  • 享受结果吧 :)

    用移位工具切换列和行

    如果你需要经常进行行与列之间的转换,你可能实际上正在寻找一种更快、更简单的方法。 幸运的是,我的Excel中有这样一种方法,我们的终极套件的其他用户也是如此 :)

    让我来告诉你如何在Excel中切换行和列,简直是点击几下就可以了。

    1. 在你的表格中选择任何一个单元格,进入 机会 标签> 转型 组,并点击 转位 按钮。

  • 默认设置在大多数情况下工作良好,所以你只需点击 移位 没有改变任何东西。
  • 如果你想 只粘贴数值 创建与源数据的链接 如果要强制旋转的表格随着你对原始表格的每一次改变而自动更新,请选择相应的选项。

    完成了!表格被转置了,格式被保留了,不需要进一步的操作。

    如果你想尝试这个和其他70多个专业的Excel工具,我邀请你下载我们的终极套件的试用版。 谢谢你的阅读,我希望下周在我们的博客上见到你

    Michael Brown is a dedicated technology enthusiast with a passion for simplifying complex processes using software tools. With more than a decade of experience in the tech industry, he has honed his skills in Microsoft Excel and Outlook, as well as Google Sheets and Docs. Michael's blog is dedicated to sharing his knowledge and expertise with others, providing easy-to-follow tips and tutorials for improving productivity and efficiency. Whether you're a seasoned professional or a beginner, Michael's blog offers valuable insights and practical advice for getting the most out of these essential software tools.