使用regexmatch计数某些文本出现的次数

问题描述

这里有个Sheets noob。

我有关于产品及其数量的数据,但它们都放在一个单元格中(例如1x产品A,2x产品B等)。如何使用regexmatch自动对产品的价值求和?因此,如果乘积A = $ 5,乘积B = $ 1,并且如果单元格B2具有“ 1x A,2x B”,则我希望它加5 + 2。大多数产品以1s或2s出售,因此我意识到我将不得不手动输入'n等于5的'1x A'和等于10的'2x A'等,但是我只想知道是否存在一种将所有内容输入一个公式的方法,因为目前我只知道如何单独执行:
server.number

或者,公式是否有办法只输出“ 1x A”等出现在B列中的数量?因此,如果我有20行数据,并且在这些行中“ 1x A”出现了15次,“ 2x A”出现了2次,“ 1x B”出现了4次,“ 2x B”出现了3次,是否可以输出“ 17” '到一个计算产品A的单元格中,'7'到另一个计算产品B的单元格中?然后,我可以再创建一个单元格,该单元格的公式将这些数字乘以每种产品的价格。

还是应该为此使用=if(regexmatch(B2,"1x A"),5,0)之类的东西?因此,如果列B具有2个计数“ 1x A”和1个计数“ 2x A”,我想要一个将输出“ 4”的公式。我只是不知道如何在一个公式中对多个=COUNTA(FILTER(B2:B,REGEXMATCH(B2:B,"1x A")))的值求和。

任何帮助将不胜感激。

解决方法

使用:

=ARRAYFORMULA(IF(B2:B="",MMULT(IFERROR(REGEXEXTRACT(TRIM(SPLIT(B2:B,",")),"^\d+"))*
 IFERROR(VLOOKUP(REGEXEXTRACT(TRIM(SPLIT(B2:B,"^\d+x ?(.+)"),E:F,2,0)),ROW(INDIRECT("A1:A"&COLUMNS(SPLIT(B2:B,"))))^0)))

enter image description here

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...