从工作表中的单个单元格计算和添加多个变量
Counting and adding multiple variables from single cell in sheets
我有一个工作表文档,其中包含用户输入数据的单元格。他们知道以某种格式输入数据;一个 'number' 和一个 'letter',然后是一个 space,一个 SKU 编号,然后是一个逗号。
我想要一个公式来计算每个 'letters' 的数量,然后为每个字母添加 'numbers'。
只有五个'letters'用户可以选择; M、E、T、W、B。
他们输入的数据没有固定顺序,输入多少也没有限制,只要符合上述语法即可。
我附上了一个截图,展示了它的外观。
黄色单元格是用户输入的数据,绿色单元格是公式创建的数据。
或者这里是 link 到现场版:link
我尝试使用 COUNTIF 进行此操作,但没有成功。我猜它会用数组来完成,但我不知道从哪里开始。如果我能看到类似的例子,我可能会做剩下的事情。
是:
=INDEX(REGEXREPLACE(SPLIT(REGEXREPLACE(FLATTEN(QUERY(TRANSPOSE(QUERY(TRANSPOSE(SORT(TRANSPOSE(QUERY(SPLIT(
FLATTEN(REGEXREPLACE(TRIM(SPLIT(A2:A9, ",")), "\b(\d+(?:\.\d+)?)(.+?)\b(.*)", ROW(A2:A9)&"×××")), "×"),
"select count(Col2),sum(Col3) where Col2 is not null group by Col1 pivot Col4 label count(Col2)''")))),
"offset 1", 0)*1&TRIM(REGEXREPLACE(TRANSPOSE(SORT(FLATTEN(QUERY(SPLIT(
FLATTEN(REGEXREPLACE(TRIM(SPLIT(A2:A9, ",")), "\b(\d+(?:\.\d+)?)(.+?)\b(.*)", ROW(A2:A9)&"×××")), "×"),
"select count(Col2),sum(Col3) where Col2 is not null group by Col1 pivot Col4 limit 0 label count(Col2)''")))),
".*sum", ))),,9^9)), "([^ ]+ [^ ]+) ", "×"), "×"), "(\d+(?:\.\d+)?)$", "()"))
我添加了一个新的 sheet(“Erik Help”)解决方案如下:
=ArrayFormula(FILTER( SPLIT("B E M T W", " ") & " (" & IFERROR(VLOOKUP(ROW(A1:A) & SPLIT("B E M T W", " "), QUERY(FLATTEN(SPLIT(QUERY(FLATTEN(IFERROR(REPT(ROW(A1:A) & REGEXEXTRACT(SPLIT(REGEXREPLACE(A1:A&",", "\d+,", ""), " ", 0, 1), "\D") & "~", 1*REGEXEXTRACT(SPLIT(REGEXREPLACE(A1:A&",", "\d+,", ""), " ", 0, 1), "\d+")))), "WHERE Col1 <>'' "), "~", 1, 1)), "Select Col1, COUNT(Col1) GROUP BY Col1"), 2, FALSE), 0)&")", A1:A<>""))
我有一个工作表文档,其中包含用户输入数据的单元格。他们知道以某种格式输入数据;一个 'number' 和一个 'letter',然后是一个 space,一个 SKU 编号,然后是一个逗号。 我想要一个公式来计算每个 'letters' 的数量,然后为每个字母添加 'numbers'。
只有五个'letters'用户可以选择; M、E、T、W、B。 他们输入的数据没有固定顺序,输入多少也没有限制,只要符合上述语法即可。
我附上了一个截图,展示了它的外观。 黄色单元格是用户输入的数据,绿色单元格是公式创建的数据。
或者这里是 link 到现场版:link
我尝试使用 COUNTIF 进行此操作,但没有成功。我猜它会用数组来完成,但我不知道从哪里开始。如果我能看到类似的例子,我可能会做剩下的事情。
是:
=INDEX(REGEXREPLACE(SPLIT(REGEXREPLACE(FLATTEN(QUERY(TRANSPOSE(QUERY(TRANSPOSE(SORT(TRANSPOSE(QUERY(SPLIT(
FLATTEN(REGEXREPLACE(TRIM(SPLIT(A2:A9, ",")), "\b(\d+(?:\.\d+)?)(.+?)\b(.*)", ROW(A2:A9)&"×××")), "×"),
"select count(Col2),sum(Col3) where Col2 is not null group by Col1 pivot Col4 label count(Col2)''")))),
"offset 1", 0)*1&TRIM(REGEXREPLACE(TRANSPOSE(SORT(FLATTEN(QUERY(SPLIT(
FLATTEN(REGEXREPLACE(TRIM(SPLIT(A2:A9, ",")), "\b(\d+(?:\.\d+)?)(.+?)\b(.*)", ROW(A2:A9)&"×××")), "×"),
"select count(Col2),sum(Col3) where Col2 is not null group by Col1 pivot Col4 limit 0 label count(Col2)''")))),
".*sum", ))),,9^9)), "([^ ]+ [^ ]+) ", "×"), "×"), "(\d+(?:\.\d+)?)$", "()"))
我添加了一个新的 sheet(“Erik Help”)解决方案如下:
=ArrayFormula(FILTER( SPLIT("B E M T W", " ") & " (" & IFERROR(VLOOKUP(ROW(A1:A) & SPLIT("B E M T W", " "), QUERY(FLATTEN(SPLIT(QUERY(FLATTEN(IFERROR(REPT(ROW(A1:A) & REGEXEXTRACT(SPLIT(REGEXREPLACE(A1:A&",", "\d+,", ""), " ", 0, 1), "\D") & "~", 1*REGEXEXTRACT(SPLIT(REGEXREPLACE(A1:A&",", "\d+,", ""), " ", 0, 1), "\d+")))), "WHERE Col1 <>'' "), "~", 1, 1)), "Select Col1, COUNT(Col1) GROUP BY Col1"), 2, FALSE), 0)&")", A1:A<>""))