将列标题作为独立列将多列数组排列为一对

时间:2018-08-29 16:31:12

标签: google-sheets

我希望在Google表格中获取几列,并将其与相邻单元格中的列标题合并为一列。

我想从这样的角度出发:

enter image description here

像这样:

enter image description here

我目前正在通过一遍又一遍地排列第一列来实现此目的。然后,我将每一列排列在另一列上,如下所示:

 Column 1              Column 2
={A1:A4;A1:A4;A1:A4}  ={B1:B4;C1:C4;D1:D4}

在第三列中,我使用if-then语句来获取名称为column =“ Name”的列的名称

我的问题是,当我尝试使用多个列进行此操作时,构建这些数组变得非常乏味。我正在通过引用所有列的范围来寻求有关单个公式的帮助。

1 个答案:

答案 0 :(得分:0)

这有点棘手,但可能。出于说明性的原因,我没有将所有内容都放在一个复杂的公式中,而是提出了逐步解决方案。免责声明:它是一种快速产品,因此并不完美。

假设:

  1. “开始”数据位于名为“数据”的工作表中
  2. 结果在名为“结果”的工作表中

程序

使用A1中的此代码将一列(A)添加到“开始”数据中(这将成为我们的索引):

=ArrayFormula(if(B1:B<>"";row(A1:A)-1;""))

enter image description here

在“结果”表的A1中输入以下代码:

=ArrayFormula(INT((ROW(B1:INDIRECT("C"&(COUNTA(Data!$B1:B)-1)*4))-1)/4)+1)

enter image description here

在B1中,此代码:

=ArrayFormula(if(A1:A<>"";VLOOKUP(A1:A;Data!A1:E;2;0);"" ))

enter image description here

在C1中,这是

=transpose(SPLIT(REPT(TEXTJOIN("*";1;Data!C1:1)&"*";COUNTUNIQUE(B1:B));"*";0;0))

enter image description here

在D1中,这是

=ArrayFormula(IFERROR( VLOOKUP(B1:B;Data!B1:F;MATCH(C1:C;Data!B1:F1;0));""))

enter image description here

最后在F1中-要清除结果,请输入以下内容:

={{"Name"\"Column"\"Number"};{B1:D20}}

enter image description here

链接到工作副本

Link to spreadsheet

最终想法

  1. 您可以将所有内容打包到一个公式中
  2. 它的解决方案非常仓促,因此它本身最多不能扩展到4列(一列,两列等)。现在这是硬编码的。如果您无法解决问题,请给我评论-我将显示此位置/修复它们以使其变得动态