将多行数据提取到一行(将数据从垂直视图移动到水平视图)

将多行数据提取到一行(将数据从垂直视图移动到水平视图)

我有一个包含多行和多列的电子表格。A 列:唯一标识符列表(以发票号为例)B 列:适用于该发票的费用类型的描述,每行一项费用,全部使用相同的“发票号”C 列:这些单独费用的价值,每行一个值,全部使用相同的“发票号”对于每一列,可能有多个行使用第 1 列中的相同唯一标识符号。(第 1、2、.... 10 行,不是任何特定的行数)

其中还有更多列。如何从使用相同唯一标识符编号逐行列出的所有费用的垂直级别移动到水平级别,其中每个发票号只有一行,并且所有这些费用和值都被拉到列中?没有宏最好(没有宏经验)

在此处输入图片描述

答案1

如果您有 =UNIQUE 函数:

在单元格 F2 中输入此公式=IFERROR(INDEX(UNIQUE($A$2:$A$21),ROW(F2)-ROW($F$2)+1),"")

将此公式放入单元格 G2=IFERROR(INDEX($B$2:$C$21,SMALL(IF($F2=$A$2:$A$21,ROW($A$2:$A$21)-ROW($A$2)+1),FLOOR.MATH((COLUMN(G1)-COLUMN($G$1))/2)+1),MOD(COLUMN(G1)-COLUMN($G$1),2)+1),"")并使用填充柄向下拖动到右侧

在此处输入图片描述


为了使费用出现在相应的列中,请将此公式输入到 G2 中并向下和向右拖动: =IFERROR(INDEX($B$2:$C$21,SMALL(IF(($F2=$A$2:$A$21)*(INDEX($G$1:$X$1,FLOOR.MATH((COLUMN(G1)-COLUMN($G$1))/2)*2+1)=$B$2:$B$21),ROW($A$2:$A$21)-ROW($A$2)+1),1),MOD(COLUMN(G1)-COLUMN($G$1),2)+1),"")

在此处输入图片描述

或者, =IFERROR(INDEX($C$2:$C$21,SMALL(IF(($F2=$A$2:$A$21)*(G$1=$B$2:$B$21),ROW($A$2:$A$21)-ROW($A$2)+1),1)),"") 对于这个: 在此处输入图片描述

在这种情况下,数据透视表可能更有意义,但这是公式版本......

相关内容