在 Google 工作表中使用正则表达式进行聚合
Aggregating using regex in Google Sheets
我的电子表格中有以下单元格。它是一个具有 JSON 对象结构的字符串。
D2 = {color: white, quantity: 23, size: small}, {color: black, size: medium, Quantity: 40}
对于单元格 D3
,我希望输出为 63,这是 D2
中找到的数量的总和。此外,还应注意以下事项:
- 如果出现问题,例如,如果一个数量以字符串的形式给出,那么
D3
只是保持为空。
- 任何时候
D2
更新,D3
也会更新。
- 如果手动更新
D3
,将保留该结果而不是公式。这将发生在 D2
为空的行。
有没有什么方法可以使用 Google 表格来做到这一点?我尝试使用 REGEXEXTRACT
,但是它没有产生任何结果。任何帮助是极大的赞赏。
编辑:
- 属性的顺序并不重要。例如,数量可以出现在尺码之前或之后。
- 大小写也不重要
=SUMPRODUCT(IFERROR(REGEXREPLACE(SPLIT(D22, ":"), "}.*", "")))
=SUMPRODUCT(IFERROR(REGEXREPLACE(SPLIT(SUBSTITUTE(D21, "quantity:", "♦"), "♦"), "}.*", "")))
我的电子表格中有以下单元格。它是一个具有 JSON 对象结构的字符串。
D2 = {color: white, quantity: 23, size: small}, {color: black, size: medium, Quantity: 40}
对于单元格 D3
,我希望输出为 63,这是 D2
中找到的数量的总和。此外,还应注意以下事项:
- 如果出现问题,例如,如果一个数量以字符串的形式给出,那么
D3
只是保持为空。 - 任何时候
D2
更新,D3
也会更新。 - 如果手动更新
D3
,将保留该结果而不是公式。这将发生在D2
为空的行。
有没有什么方法可以使用 Google 表格来做到这一点?我尝试使用 REGEXEXTRACT
,但是它没有产生任何结果。任何帮助是极大的赞赏。
编辑:
- 属性的顺序并不重要。例如,数量可以出现在尺码之前或之后。
- 大小写也不重要
=SUMPRODUCT(IFERROR(REGEXREPLACE(SPLIT(D22, ":"), "}.*", "")))
=SUMPRODUCT(IFERROR(REGEXREPLACE(SPLIT(SUBSTITUTE(D21, "quantity:", "♦"), "♦"), "}.*", "")))