Google sheets 如何在一个单元格中拆分多个文本

Google sheets 如何在一个单元格中拆分多个文本,google-sheets,Google Sheets,我正在努力解决谷歌电子数据表中的问题 如果单元格如下所示,如何在一个单元格中拆分文本 项目 Ax2、B、C、D、Ex3 产品 Ax2、B、C、D、Ex3 假设字符串为A1,请尝试 ={"Product", "Quantity"; ArrayFormula(split(transpose(split(A1, ", ", 0)&if(regexmatch(split(A1, ", ", 0), "x\d

我正在努力解决谷歌电子数据表中的问题 如果单元格如下所示,如何在一个单元格中拆分文本

项目 Ax2、B、C、D、Ex3

产品 Ax2、B、C、D、Ex3
假设字符串为A1,请尝试

={"Product", "Quantity"; ArrayFormula(split(transpose(split(A1, ", ", 0)&if(regexmatch(split(A1, ", ", 0), "x\d*$"), , "x1")), "x"))}
改变射程以适应

若您想处理多行并创建每个产品的数量总和,可以尝试

=query(ArrayFormula(split(flatten(split(A1:A4, ", ", 0)&if(regexmatch(split(A1:A4, ", ", 0), "x\d*$"), , "x1")), "x")), "Select Col1, sum(Col2) where Col1 <>'' group by Col1 label Col1 'Product', sum(Col2) 'Quantity'", 0)  
=query(ArrayFormula(split(plant)(split(A1:A4,“,”,0))和if(regexmatch(split(A1:A4,“,”,0),“x\d*”,“x1”),“x”),“Select Col1,sum(Col2),其中Col1”按Col1标签Col1“产品”,sum(Col2)“数量”,0分组)

假设您希望聚合这些字符串中的许多行,并且第一个字符串位于A2中:

=ArrayFormula(查询(拆分(拆分(拆分(拆分(REGEXREPLACE)(过滤器(A2:A,A2:A“”)&“,”,“,”,“x1,”,”,“,”),“x”),“选择列1,按列1标签列1“产品”,列2“数量”分组求和(列2))

这与JPV建议的解决方案略有不同,因为它预先过滤的结果,这样您就不必专门命名范围以避免错误。它还采用了不同的方法进行转换

工作原理:

过滤器(A2:A,A2:A“”)

这确保了较大的公式仅适用于列中的非空白单元格,以避免出现错误

&“,”

这将附加到每个字符串的末尾,以便每个字符串的每个元素都临时以逗号结尾。这将在下面的转换步骤中使用

REGEXREPLACE(uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu

然后将每个逗号替换为
x1,
。请注意,即使列表中的条目后面已经有x2、x3等,现在也会添加此条目。例如,一个原始字符串(如“Ax2,B,C,D,Ex3”)此时在内存中的外观如下:“Ax2x1,Bx1,Cx1,Dx1,Ex3x1”。以后没关系了

SPLIT(“,”)

然后字符串将在逗号处拆分。例如,示例字符串在内存中如下所示:

Ax2x1 | Bx1 | Cx1 | Dx1 | Ex3x1

展平
将这些水平阵列转换为一个长垂直阵列

TRIM
将删除多余的空间

因此,上面的条目现在在内存中看起来像这样:

Ax2x1

Bx1

Cx1

Dx1

Ex3x1

SPLIT(\uuuuuuuuuuuuuuuuuuux”)

现在,这些字符串中的每一个都将在“x”处再次拆分,留下以下内容:

A | 2 | 1

B | 1

C | 1

D | 1

E | 3 | 1

QUERY(uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu

最后,
QUERY
将对所有这些操作起作用,
只选择第一列以及第一列中每个唯一元素的第二列总和。(第三个虚拟列将被忽略。)然后将所选标签分配给其余两列中的每一列