将Excel中列转换为行

将Excel中列转换为行

大多数时候,在使用 Excel 时,您需要先重构数据,然后才能开始任何类型的分析。

许多 Excel 用户必须执行的一项常见任务是将现有数据集中的列转换为行。

当您从数据库或网络获取数据集时,通常会出现这种情况,并且需要转置数据,以便列数据显示在行中,行数据显示在列中。

在本教程中,我将向您展示一些可用于 在 Excel 中将列转换为行 迅速地。 我将介绍内置功能,例如特殊粘贴、简单的键盘快捷键以及执行这些操作的 TRANSPOSE 函数。

我还将为您提供一个简单的 VBA 代码,您可以使用它在 Excel 中将列转换为行。

推荐:如何在Excel中书写科学记数法

使用右键单击选项将列转换为行

将列转换为行的最简单方法之一是复制数据,然后转置数据并将其粘贴到其他位置。

只需右键单击即可访问将数据粘贴为原始数据的转置版本的选项。

让我向您展示它是如何工作的。

下面是一个数据集,其中季度销售额值显示在行中,国家/地区销售额值显示在列中。

将列更改为行的数据集

我需要转置这些数据,以便季度值显示在列中,国家/地区值显示在行中。

以下是执行此操作的步骤:

  1. 选择整个数据集
  2. 复制数据集。 您可以使用键盘快捷键 Control + C 或右键单击并单击“复制”选项。
单击复制选项
  1. 右键单击要转置并粘贴此数据的单元格。 在此示例中,我将其粘贴到单元格 A7 中。
  2. 转到选择性粘贴选项并将光标悬停在更多选项箭头上。
将光标悬停在更多选项箭头上。
  1. 单击转置选项
单击转置选项

当您单击转置选项时,复制的数据将被粘贴,但列和行将互换。

列转换为行

以下是有关此方法需要了解的一些重要事项:

  • 粘贴的数据保留复制数据的原始格式。 在我们的示例中,“国家/地区”列仍为橙色,“季度”行仍为蓝色。
  • 如果原始数据中有任何公式,这些公式也会被复制。 如果这些公式中使用了任何单元格引用,则将调整这些引用(如果需要)以确保公式为您提供正确的值。

此方法的一个小缺点是,它始终会复制原始数据中的所有内容并将其粘贴到转置数据中(包括格式、公式、注释/注释和数据验证)。 如果只想复制数据而不进行格式化,则无法使用此方法。 但你可以使用我接下来介绍的方法。

Also read: Text to Columns in Excel

使用“选择性粘贴”对话框将列转换为行

将列转换为行的另一种快速方法是使用内置的选择性粘贴对话框。

正如您将看到的,“选择性粘贴”对话框可以更好地控制我们可以粘贴的内容。

下面我有相同的数据集,我想将列转换为行。

将列更改为行的数据集

以下是执行此操作的步骤:

  1. 选择并复制整个数据(在我们的示例中为 A1:E5)
  2. 右键单击要粘贴复制数据的单元格,然后单击“选择性粘贴”选项。 这将打开“选择性粘贴”对话框。
单击选择性粘贴选项
  1. 在“选择性粘贴”对话框中,单击 转置 选项。
选择转置选项
  1. 单击“确定”

上述步骤将复制原始数据,然后粘贴该数据的转置版本(其中列数据已放入行中,行数据已放入列中)。

使用“选择性粘贴”对话框的另一个好处是,它允许您选择要粘贴到转置数据中的内容。

例如,您可以选择仅粘贴值或仅粘贴公式或仅粘贴格式或注释/注释。

为此,您需要从“粘贴”选项中进行额外的选择(下面突出显示)。

粘贴特殊对话框中的粘贴选项

虽然默认选择“全部”选项,但您可以选择以下选项:

  • 公式 – 仅粘贴复制数据中的公式
  • 价值 – 仅粘贴复制数据中的值(没有任何公式或格式)
  • 格式 – 仅粘贴格式而不粘贴任何数据
  • 评论和注释 – 仅将注释或注释粘贴到单元格中
  • 验证 – 仅粘贴验证规则或下拉列表
  • 值和数字格式 – 粘贴值以及应用于这些值的数字格式

笔记:如果您想将列转换为行并粘贴多个内容,例如值以及注释/注释,则必须重复此过程两次 – 即,第一次,您仅复制值,第二次,您仅复制评论/注释

Also read: How to Copy and Paste Formulas in Excel without Changing Cell References

使用键盘快捷键将列转换为行

如果您经常需要将列转换为行,我建议您学习键盘快捷键来执行此操作。

就我个人而言,我发现粘贴转置数据的键盘快捷键是执行此操作的最快方法。

因此,让我为您提供所有快捷方式(当您习惯它们后,它们很容易记住)。

Windows 粘贴特殊快捷方式

下面是复制数据并粘贴其转置版本的快捷方式(其中列转换为行)

ALT + E + S + E + Enter

以下是如何使用此快捷方式:

  1. 复制要转置的数据集
  2. 转到要粘贴数据的目标单元格
  3. 依次按下以下键 – ALT + E + S + E + Enter

如果您不想粘贴整个数据集而只想粘贴值或格式或注释等,您可以使用以下快捷方式:

  • ALT + E + S + V + E + Enter – 仅粘贴值
  • ALT + E + S + F + E + Enter – 仅粘贴公式
  • ALT + E + S + T + E + Enter – 仅粘贴格式
  • ALT + E + S + C + E + Enter – 仅粘贴注释和注释
  • ALT + E + S + N + E + Enter – 仅粘贴数据验证

Mac 粘贴特殊快捷方式

如果您使用的是 Mac,则可以使用以下快捷方式打开粘贴特殊对话框。

Control + Command + V

对话框打开后,您可以进行所需的选择,然后单击“确定”按钮。

Also read: Flip Data in Excel | Reverse Order of Data in Column/Row

TRANSPOSE 函数将列转换为行

将列转换为行的另一种方法是使用 Excel 中的 TRANSPOSE 函数。

让我解释一下它是如何工作的。

下面是一个数据集,我想将其中的列转换为行。

将列更改为行的数据集

这是我可以用来执行此操作的 TRANSPOSE 公式:

=TRANSPOSE(A1:E5)

在要获取转置数据的单元格中输入此公式。 在我的示例中,我已在单元格 A7 中输入此数据。

Excel 中的 TRANSPOSE 函数将列转换为行

使用转置函数时,原始数据集中的任何空白单元格都将在结果数据集中返回零(如单元格 A7 中所示)。

如果您不想要零而想要空白,那么您可以使用下面提到的修改后的公式。

=IF(TRANSPOSE(A1:E5)=0,"",TRANSPOSE(A1:E5))
IF 和 TRANSPOSE 函数将 Excel 中的列转换为行

以下是有关使用 TRANSPOSE 公式您应该了解的一些事项:

  • 您获得的结果数据是链接到原始数据集的数组。 因此,如果您对原始数据集进行任何更改,它将自动反映在结果数据中。
  • 如果要删除原始数据集,首先必须将公式结果转换为静态值,以便它不再链接到原始数据集。 如果不这样做并删除原始数据集,则所有单元格中的值都将为 0。
  • TRANSPOSE 公式只会转置值,并且不会复制原始数据集的格式。
  • 使用 Transpose 函数时,请确保有足够的空单元格来容纳函数的结果。 如果任何单元格已被填满,您将收到#SPILL! 错误
Also read: Excel Filter Function - Examples + Video

将列转换为行的 VBA 代码

如果您更熟悉 VBA,请让我为您提供可用于快速将列转换为行的代码。

下面是执行此操作的 VBA 代码:

'Code developed by Sumit Bansal from 
Sub ConvertColumnsToRows()

    Dim SourceRange As Range
    Dim TargetCell As Range

    'Ask the user to select the source range
    On Error Resume Next
    Set SourceRange = Application.InputBox("Select the range to transpose:", Type:=8)
    On Error GoTo 0

    'Exit the sub in case no range selected
    If SourceRange Is Nothing Then
        MsgBox "No range selected. Exiting.", vbInformation
        Exit Sub
    End If

    'Ask the user to select the destination cell
    On Error Resume Next
    Set TargetCell = Application.InputBox("Select the destination cell:", Type:=8)
    On Error GoTo 0

    'If no cell is selected, exit the sub
    If TargetCell Is Nothing Then
        MsgBox "No destination cell selected. Exiting.", vbInformation
        Exit Sub
    End If

    'Convert Columns to Rows and give result in destination cell
    SourceRange.Copy
    TargetCell.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=True

    'Clean up
    Application.CutCopyMode = False
    Set SourceRange = Nothing
    Set TargetCell = Nothing

End Sub

当您运行上面的代码时,它会要求您选择要转置的单元格范围,然后会要求您选择应给出结果的目标单元格。

以下是在 Excel 中使用此代码的步骤:

  1. 打开 Visual Basic 编辑器。 您可以单击“开发人员”选项卡中的“Visual Basic”选项,也可以使用快捷键 ALT + F11(需要按住 Alt 键,然后按 F11 键)
  2. 在 VB 编辑器中,单击“插入”选项,然后单击“模块”。 这将插入一个新模块,我们将在其中复制并粘贴上述 VBA 代码。
  3. 将上面的代码复制并粘贴到模块窗口中。
  4. 关闭 VBA 编辑器。
  5. 按 ALT + F8,在“宏”对话框中选择“ConvertColumnsToRows”宏,然后单击“运行”。 然后,宏将指导您进行选择并在目标单元格中​​给出结果。

在 Excel 中使用 VBA 代码将列转换为行时需要了解以下几点:

  • 如果要在同一工作簿中重复使用代码,请将文件另存为启用宏的文件(文件扩展名为 .XLSM)
  • VBA 宏所做的更改无法撤消,因此在运行宏代码之前创建备份副本始终是一个好主意。
  • 如果您想在所有工作簿中使用此代码,则需要将其保存在个人宏工作簿中。 我在本教程中解释了如何执行此操作。 将代码保存到个人宏工作簿中后,您将能够从系统上的任何工作簿访问它。

因此,您可以使用以下五种方法在 Excel 中快速将列转换为行。 最简单的方法是使用“选择性粘贴”对话框,它也存在,它还可以让您更好地控制要复制并粘贴到转置数据中的内容。

您还可以使用内置的 TRANSPOSE 函数或 VBA 代码来完成此操作。

推荐:如何在Mac Mail App中设置Gmail


发表评论