尽管 Excel 没有提供直接的方法来执行此操作,但在本文中,我们将演示如何使用 Excel 的内置选项和函数按列和行翻转数据。
方法 1 – 按列翻转表格请考虑以下销售代表列表数据集,其中包含一些销售代表的姓名及其销售额(以美元计)。让我们翻转列。
我们使用了Microsoft Excel 365版本,但这些方法应该适用于大多数其他版本。
1.1 – 使用排序选项翻转数据的最常见方法是使用排序选项。
步骤:
创建一个辅助列并对其进行连续编号,如下图所示。
转到数据选项卡>>单击排序按钮。
这将打开排序窗口。
勾选我的数据有标题选项。在排序依据选项中,选择列标题帮助列。在顺序字段中,选择从最大到最小选项。单击确定。
这会翻转表格,如下图所示。
1.2 – 使用排序功能SORTBY 函数根据另一个给定范围或数组按升序或降序对范围或数组进行排序。
步骤:
在单元格 E5 中输入以下公式:=SORTBY($B$5:$C$14,ROW(B5:B14),-1)B5:C14 单元格分别指名称和销售额值。
公式细分:
SORTBY($B$5:$C$14,ROW(B5:B14),-1) → $B$5:$C$14 是数组名称和销售额值的strong>参数。 ROW(B5:B14) 表示 by_array1 参数,该参数返回Names 和 Sales 值的行号。最后,-1 是可选的 sort_order1 参数,指示降序顺序。注意:SORTBY 函数在Microsoft Excel 365中可用。如果您使用的是旧版本的 Excel,请检查下一个方法。
输出应如下面所示的屏幕截图所示。
1.3 – 使用 INDEX 函数INDEX 函数根据给定的行号和列号返回一个值。此外,INDEX函数与旧版本的Excel兼容。
步骤:
在单元格 E5 中输入以下公式:=INDEX($B$5:$C$14,ROWS(B5:$B$14),COLUMNS($B$5:B5))B5:C14 单元格分别指名称和销售额值,而B5:B14 单元格表示<名字。
公式细分:
INDEX($B$5:$C$14,ROWS(B5:$B$14),COLUMNS($B$5:B5)) → $B$5:$C$14 是数组参数,它是学生的分数。 ROWS(B5:$B$14) 是指示行位置的row_num 参数。 COLUMNS($B$5:B5) 是可选的 column_num 参数,它指向列位置。
输出 → 玛丽
注意:确保按键盘上的F4键锁定单元格引用。
使用填充句柄工具将公式复制到下面的单元格。
选择E5:E14范围。拖动填充手柄工具将公式复制到相邻单元格中。
桌子翻了
1.4 – 使用 VBA 代码如果您经常需要按列翻转表格,请使用下面的VBA代码。
步骤:
转到开发人员选项卡。单击Visual Basic按钮。
这将在新窗口中打开Visual Basic 编辑器。
转到插入选项卡>>选择模块。
复制以下代码并将其粘贴到编辑器窗口中:
Sub Invert_Table_By_Columns()
Dim First_row As Variant
Dim End_row As Variant
Dim First_num As Integer
Dim End_num As Integer
First_num = 1
End_num = Selection.Rows.Count
Do While First_num < End_num
First_row = Selection.Rows(First_num)
End_row = Selection.Rows(End_num)
Selection.Rows(End_num) = First_row
Selection.Rows(First_num) = End_row
First_num = First_num + 1
End_num = End_num - 1
Loop
End Sub
⚡ 代码细分:
代码分为2步。
在第一部分中,子例程被命名为Invert_Table_By_Columns()。我们定义变量First_row、End_row、First_num和End_num。我们分别为这些变量分配Variant和Integer数据类型。我们将 First_num 设置为 1 ,并使用 Selection.Rows.Count 获取 End_num。在第二部分中,我们应用 Do While 语句来交换第一行和最后一行。循环移动到下一行并重复此操作,直到翻转所有行。
选择B5:C14范围。单击宏按钮。选择Invert_Table_By_Columns宏。单击运行按钮。
结果应如下面的屏幕截图所示。
方法 2 – 按行翻转表格2.1 – 使用排序选项步骤:
插入一个辅助列并按顺序编号。
转到数据选项卡>>单击排序按钮。
这将打开排序向导。
单击选项按钮>>选择从左到右排序选项。
在排序依据选项中,选择第 6 行。在顺序字段中,选择从最大到最小。单击确定按钮。
这会翻转表格,如下图所示。
2.2 – 使用 VBA 代码步骤:
按照上一方法中的步骤 1-2 打开 Visual Basic 编辑器,插入新的模块并输入代码。Sub Invert_Table_By_Rows()
Dim r_range As Range
Dim wk_range As Range
Dim ar_rng As Variant
Dim x As Integer, y As Integer, z As Integer
On Error Resume Next
xTitleId = "Invert_Table_Horizontally"
Set wk_range = Application.Selection
Set wk_range = Application.InputBox("Select a range of cells", xTitleId, wk_range.Address, Type:=8)
ar_rng = wk_range.Formula
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
For x = 1 To UBound(ar_rng, 1)
z = UBound(ar_rng, 2)
For y = 1 To UBound(ar_rng, 2) / 2
xTemp = ar_rng(x, y)
ar_rng(x, y) = ar_rng(x, z)
ar_rng(x, z) = xTemp
z = z - 1
Next
Next
wk_range.Formula = ar_rng
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub
⚡ 代码细分:
代码分为3步。
在第一部分中,子例程被命名为Invert_Table_By_Rows()。我们定义变量并分别分配范围、变量和整数数据类型。在第二部分中,输入框提示用户输入要翻转的单元格范围。在第三部分中,我们使用嵌套的 For 循环来迭代给定范围内的所有值,并一一交换它们的位置。
单击宏按钮>>选择Invert_Table_By_Rows 宏>>单击运行按钮。
选择C4:L5单元格范围。单击确定按钮。
结果应该如下图所示。
使用转置选项将列转换为行Excel 允许您使用转置选项将表格中的多列转换为行。
考虑下面 B4:F11 单元格中显示的学生分数分布数据集。让我们转置它。
步骤:
选择整个数据集,在本例中为 B4:F11 范围。按键盘上的 CTRL + C。
在单元格 B13 中,按CTRL + ALT + V 打开选择性粘贴对话框。
选择转置选项。单击确定按钮。
结果应如下图所示。