在Google Sheets中将列转换为行

4

我有一个类似这样的电子表格

A              B              C              D              E
-------------------------------------------------------------------------
Mercedes       A Class        C Class        E Class        G Wagon
BMW            1 Series       3 Series       4 Series

我希望创建一个类似这样的电子表格。
A              B
------------------------------
Merecedes       A class
Merecedes       C class
Merecedes       E class
Merecedes       G Wagon
BMW             1 Series
BMW             3 Series
BMW             4 Series

我已经使用了转置函数,但它并不会为每个值创建一个新的记录,而只是重新排列了列。
我应该怎么做呢?

你是否产品不可知,还是仅限于使用Google表格? - Umar.H
我更喜欢使用Google Sheets,但我也可以接受Excel。 - Adam Scot
你可以用Python做到这一点,我通常会得到这样的数据,而且经常需要将其融合。 - Umar.H
2个回答

3
我一直在寻找这个问题的答案。你要做的是将数据逆转,但是似乎谷歌表格中没有内置函数可以完成这个任务。
我在谷歌产品论坛中找到了解决方法。链接如下:https://productforums.google.com/forum/#!topic/docs/5UAxnQKMFm8
乍一看,这个方法有些复杂,但 Victor Tabori 的代码却运行得非常完美。
请将他的代码拷贝并粘贴到您谷歌表格的脚本编辑器中,然后在您的电子表格中使用 =unpivot 函数即可。唯一的限制就是在尝试引用工作表中的其他页面时会失败。

2
为了那些通过搜索找到这个老问题并需要帮助的人们,现在重新排列数据要比以前容易了一些,因为谷歌增加了FLATTEN函数。下面是一个示例公式:
=ARRAYFORMULA(QUERY(SPLIT(FLATTEN(A2:A&"|"&B2:E),"|"),"select * where Col2 is not null"))

从内到外,我们在一个临时的制造商和型号数组上工作,
使用符号|将制造商从A和型号从B:E连接起来,
FLATTEN将其全部放入单个列中,
然后SPLIT使用临时的|字符将其分割成两列数组,
最后,快速的QUERY让我们过滤掉空白行(比如行E3),而不必进行两次计算。
哦,ARRAYFORMULA让它可以跨整个输入的制造商和型号数组工作。

Screenshot of the above formula in operation on the example data from the original question.


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接