将 Excel 数据格式从垂直更改为水平

将 Excel 数据格式从垂直更改为水平

我不确定这叫什么,但我想重新格式化 Excel 数据;

格式 1

对此;

在此处输入图片描述

换句话说,循环遍历列标题并将每个数据点添加到新分组中。然后在新选项卡上显示结果。

答案1

此解决方案有点通用。假设您的源表位于 B2:D5。这样,您可以将其调整到位于工作表任何位置的表。而从 A1 开始的表可能需要使用一些快捷方式。

将以下两个公式分别放入G3和H3中:

=IFERROR(INDEX($B$2:$D$2,MOD(ROWS($G$3:G3),COUNTA($B$2:$D$2)+1)),"")

=IFERROR(INDEX($B$3:$D$5,ROUNDUP((ROWS($H$3:H3))/(COUNTA($B$2:$D$2)+1),0),MOD(ROWS($H$3:H3),COUNTA($B$2:$D$2)+1)),"")

第一个公式使用 mod 函数生成计数器。随着公式向下复制,$G$3:G3 变为 $G$3:G4,ROWS 函数返回第一行的 1、第二行的 2,依此类推。调整 $G$3:G3 为表格的起始单元格。countA 函数用于确定有多少列。$B$2:$D$2 范围需要调整以适合您的列标题。您不能有任何空白标题。需要 +1 来将列数增加 1,以便在组之间创建空白行。

mod 函数嵌套在 INDEX 函数 $B$2:$D$2 中。它将计算一系列代表要查找的列的数字,翻转为零并重复。当 mod 返回 0 值时,INDEX 无法处理它并生成错误。通过将其嵌套在 IFERROR 函数中,可以抑制错误值并返回“”。从视觉上看,它看起来像一个空白,但单元格中仍然有一个公式。

第二个函数与第一个函数基本相同,只是不是指向 1D 范围中的标题行,而是在 INDEX 中使用表格的其余部分来表示 2D 范围 $B$3:$D$5。由于它是 2D 范围,因此需要告知 INDEX 要查找哪一行以及要查找哪一列。由于第一个公式中有一部分已经处理了要查找哪一列,因此可以直接复制过去。为了确定要查找哪一行,第二个公式的这一部分执行以下操作:

ROUNDUP((ROWS($H$3:H3))/(COUNTA($B$2:$D$2)+1),0)

再次将 $H$3:H3 更改为第二列的起始单元格,并将 $B$2:$D$2 更改为与列标题行匹配。

现在,当选择位于另一个工作表上的范围时,范围将以工作表名称开头,后跟 ',后跟您的范围。当您输入公式并导航到另一个工作表时,Excel 将自动为您执行此操作。

以下是工作表 Sheet1 上的区域的示例

Sheet1!B3:D6

请注意,名称中没有空格。如果工作表名称中有空格,例如名为 RED BLUE 的工作表,则引用将如下所示:

'RED BLUE'!B3:D6

波克

相关内容