如何根据列的内容将行转换为列

时间:2019-10-31 01:57:40

标签: csv google-sheets transpose array-formulas google-sheets-query

我有一个具有50,000行和3列的csv / xls文件,格式如下:

class Foo::Bar::BazTest < ActiveSupport::TestCase

等 我想将其转换为以下格式:

Text01 | text02 | Tag
Text1  | text2  | Tag1
Text3  | text4  | Tag1
Text5  | text6  | Tag1
Text7  | text8  | Tag2
Text9  | text10 | Tag2
Text11 | text12 | Tag3

更新

我尝试了@ player0以前使用Google工作表公式提出的解决方案,并且仅在标签列包含一个单词而不是几个单词的情况下才有效:

总而言之,更明确的是,我正在寻找一种解决方案,使我可以将具有共同列的行分组在一起,而知道行数是可变的。

@player0 solution

1 个答案:

答案 0 :(得分:3)

尝试:

=ARRAYFORMULA(SPLIT(TRANSPOSE(SPLIT(QUERY(TRANSPOSE(QUERY(TRANSPOSE(IF(B2:B<>"", 
 {IF(COUNTIFS(D2:D, D2:D, ROW(D2:D), "<="&ROW(D2:D))=1, "♥"&D2:D, )&"♦"&B2:B, "♦"&C2:C}, ))
 ,,999^99)),,999^99), "♥")), "♦"))

0