我如何形成按匹配值分组的项目字符串? (例如 "Red: Apples, Cherries")

How could I form a string of items grouped by a matching value? (e.g. "Red: Apples, Cherries")

我想知道是否有合适的方法来做到这一点(没有脚本)——如果没有,我可以尝试为其创建一个脚本,但是这个 sheet 的一些用户将使用 Excel 在他们的计算机上,所以我尽量保持无脚本。

我有一个 sheet 设置来根据特定条件显示文本,这些文本将被复制并粘贴到外部程序中。

有一列表示月份 jan-dec 和旁边的一列,用户可以在其中输入 1-10 的数字(这些数字与使用 Vlookup 找到的字符串相关联另一个 sheet。他们基本上 "error codes" 只是为了保持 sheet 干净。但我只是省略了这部分,因为这个问题不需要它)

现在,填充的文本显示:

Jan: 1
Feb: 2
Apr: 1

如何按值对它们进行分组而不是单独列出它们?类似于:

1: Jan, Apr
2: Feb

是否可以从那个月份的列表中抓取项目并将它们放入自己的列表中?


这是目前的公式供参考:

=if(countif(Calculator!B2:B13,">0"),CONCATENATE(C2:C13),"None")

(计算器 sheet)B2:B13 --> 数字列

(Data sheet)C2:C13 --> 一个连接的字符串,包含一个单元格中的月份名称和数字(或者从技术上讲,与我之前提到的该数字关联的字符串)

C 列中的每个单元格都有 1 月 1 日、2 月 2 日的数据,没有数据的月份留空。当我将 C 单元格连接在一起时,它会自动省略空白单元格,这很有用,但现在我真的很想改为按该值对它们进行分组。

Here is the example sheet that reflects this

删除 A15 并将其粘贴到 A14:

={""; ARRAYFORMULA(TEXTJOIN(CHAR(10), 1, REGEXREPLACE(TRIM(
 TRANSPOSE(QUERY(QUERY({A2:A13&",", B2:B13&":"}, 
 "select max(Col1) 
  where not Col2 matches ':' 
  group by Col1
  pivot Col2"),,9^9))), ",$", )))}


更新:

如果顺序很重要...

={""; ARRAYFORMULA(TEXTJOIN(CHAR(10), 1, REGEXREPLACE(TRIM(
 TRANSPOSE(QUERY(QUERY({"♦"&ROW(A2:A13)&"♦"&A2:A13&",", B2:B13&":"}, 
 "select max(Col1) 
  where not Col2 matches ':' 
  group by Col1
  pivot Col2"),,9^9))), "♦\d+♦|,$", )))}


更新:

={""; ARRAYFORMULA(JOIN(CHAR(10), SUBSTITUTE(REGEXREPLACE(TRIM(QUERY(QUERY({
 SORT(FILTER({SUBSTITUTE(A1:A12, "'", "/"&20)*1, B1:B12&":"}, B1:B12<>""), 2, 1, 1, 1)}, 
 "select max(Col1)
  group by Col1
  pivot Col2
  format max(Col1) 'Mmm♦yy,'"),,99^99)), ",$", ), "♦", CHAR(39))))}