0

我将 csv 数据拉入谷歌电子表格,其中名称在 A 列垂直运行,问题在第 1 行水平运行。一些列中有分数,其他列是空白的。像这样:

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

我想建立一个公式,以将每列分数与名称列和列标题匹配成仅 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....

目前,我正在通过在新工作表的单元格 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 列向下拖动以查找数组中的标题行并将它们复制下来以获取所有名称。

由于我有数百列问题,因此这些数组公式非常庞大。有没有更简单的方法可以通过简单地用某种矩阵引用所有列来做到这一点?

任何帮助表示赞赏。

4

1 回答 1

0

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

=unpivotTable(false, B1, B2, B3)

在哪里

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

请尝试我的脚本是否适合您:

要探索的示例文件。

于 2017-03-28T06:24:01.493 回答