用第一列排列所有列的公式

Formula to array all columns with first column

我正在将 csv 数据拉入 Google Spreadsheet,其中 A 列垂直名称 运行,第 1 行水平问题 运行。有某些列中的分数和其他列中的分数是空白的。像这样:

 |       | Q1  | Q2  | Q3 | Q4  | Q5  | Q6 | Q7  |
 |-------|-----|-----|----|-----|-----|----|-----|
 | Name1 | ##% | ##% |    | ##% | ##% |    | ##% |
 | Name2 | ##% | ##% |    | ##% | ##% |    | ##% |
 | Name3 | ##% | ##% |    | ##% | ##% |    | ##% |
 | Name4 | ##% | ##% |    | ##% | ##% |    |     |
 | Name5 | ##% | ##% |    | ##% | ##% |    |     |

我想构建一个公式,将每个列的分数与名称列和 header 列匹配成 3 列,无论天气如何,单元格中有任何值。我想要一个名称列、一个问题标题列和一个分数列,如下所示:

 | Name1 | Q1 | ##% |
 | Name2 | Q1 | ##% |
 | Name3 | Q1 | ##% |
 | Name4 | Q1 | ##% |
 | Name5 | Q1 | ##% |
 | Name1 | Q2 | ##% |
 | Name2 | Q2 | ##% |
 | Name3 | Q2 | ##% |
 | Name4 | Q2 | ##% |
 | Name5 | Q2 | ##% |
 | Name1 | Q3 | ##% |
 | Name2 | Q3 |     |
 | Name3 | Q3 |     |
 | Name4 | Q3 |     |
 | Name5 | Q3 |     |
 And so on....

目前我正在通过在新 sheet 的单元格 A1 中一遍又一遍地排列第一列来执行此操作,例如:

= {FILTER(Input!A:A,Input!A:A<>"");FILTER(Input!A:A,Input!A:A<>"");FILTER(Input!A:A,Input!A:A<>"");FILTER(Input!A:A,Input!A:A<>"");FILTER(Input!A:A,Input!A:A<>""); FILTER(Input!A:A,Input!A:A<>"");FILTER(Input!A:A,Input!A:A<>"");FILTER(Input!A:A,Input!A:A<>"");FILTER(Input!A:A,Input!A:A<>"");FILTER(Input!A:A,Input!A:A<>"")};

然后在单元格 B2 中像这样排列所有列: ={FILTER(Input!B:B,Input!A:A<>"");FILTER(Input!C:C,Input!A:A<>"");FILTER(Input!D:D,Input!A:A<>"");FILTER(Input!E:E,Input!A:A<>"");FILTER(Input!F:F,Input!A:A<>""); FILTER(Input!G:G,Input!A:A<>"");FILTER(Input!H:H,Input!A:A<>"");FILTER(Input!I:I,Input!A:A<>"");FILTER(Input!J:J,Input!A:A<>"");FILTER(Input!K:K,Input!A:A<>"");}

我有一个公式,我已向下拖动 C 列以找到数组中的 header 行并将它们复制下来以获取所有名称。

由于我有数百列问题,这些数组公式非常庞大。有没有一种更简单的方法,只需用某种矩阵引用所有列即可?

感谢任何帮助。

我有一个用于此类任务的示例脚本。它可以用作自定义公式:

=unpivotTable(false, B1, B2, B3)

其中

  1. false 使用当前文件
  2. B1 持有第一个 header 范围:Sheet1!A1
  3. B2 保持第二个 header 范围:Sheet1!B1:Z1
  4. B3 为旋转列保留 headers:Question,%

如果我的剧本适合你,请试试:

Sample file 探索。