Google Sheets ArrayFormula 排序和拆分问题

Posted

技术标签:

【中文标题】Google Sheets ArrayFormula 排序和拆分问题【英文标题】:Google Sheets ArrayFormula Sort & Split Issue 【发布时间】:2020-06-12 00:25:45 【问题描述】:

一直在研究几个地方的解决方案,并在表格的 ArrayFormula 中发现了一些准有效但不起作用的东西。我在单列中有数据作为下面的示例。它是字母和文本的组合,但在解析时可以排序。目标是用最近的单个事件填充单元格(按字符串末尾的最高数字衡量)。值“Sprint”是一致的文本。这个公式似乎适用于此目的,但是,理想情况下,我希望它在 ArrayFormula 中工作,以便它可以调整并填充它引用的动态数据行。提前致谢。

TRIM(CHOOSE(1,SPLIT(JOIN(";",SORT(TRANSPOSE(SPLIT([@CELL],";",FALSE)),1,FALSE)),";")))

以下是一组样本数据:

Sprint 1
Sprint 2
Sprint 3
Sprint 3;Sprint 1
Sprint 1;Sprint 2

【问题讨论】:

与所需输出的示例共享您的工作表副本 所描述的输出是具有单个最高值的单列,如下所示,并随着原始数据列的增加或减少而调整数据的大小。将尝试共享一张纸,但描述相当简单。 Sprint 1 Sprint 2 Sprint 3 Sprint 3 Sprint 2 链接到带有输出 A 列和输入 B 列的工作表 docs.google.com/spreadsheets/d/… 另外请记住,我提供的示例在某些情况下使用分隔符显示两个值。有时一个字段中可能有 3 或 4 个。 您好@jbm,您介意发布一张包含所需结果的表格吗?干杯! 【参考方案1】:

尝试:

=ARRAYFORMULA(B1&" "&QUERY(TRANSPOSE(QUERY(TRANSPOSE(
 REGEXREPLACE(IFERROR(SPLIT(B2:B, ";")), "\D+", )*1),
 "select "&TEXTJOIN(",", 1, IF(B2:B<>"",
 "max(Col"&ROW(B2:B)-ROW(B2)+1&")", ))&"")),
 "select Col2"))


更新:

=ARRAYFORMULA(IF(REGEXMATCH(B2:B, B1), 
 B1&" "&QUERY(TRANSPOSE(QUERY(TRANSPOSE(
 REGEXREPLACE(IFERROR(SPLIT(B2:B, ";")), "\D+", )*1),
 "select "&TEXTJOIN(",", 1,
 "max(Col"&ROW(B2:B)-ROW(B2)+1&")")&"")),
 "select Col2"), ))

【讨论】:

谢谢。似乎不太奏效。为了完整起见,我在链接中的示例表中添加了一些额外的行。 B 列中的值有时还可以包含空格或其他不包含 Sprint 的单词。我只想用 Sprint 解析出那些并像上面一样输出。使用您的公式,当我应用于较长的值列表时,某些值有点随机。例如,在上面屏幕截图的第 4 行,它给了我一个 Sprint 2 而不是 Sprint 3。 谢谢。出现错误:TEXTJOIN 的文本结果超过了 50000 个字符的限制。

以上是关于Google Sheets ArrayFormula 排序和拆分问题的主要内容,如果未能解决你的问题,请参考以下文章

使用 Sheets API v4 Java 阅读整个 Google 电子表格

使用 Sheets API v4 (Java) 获取 Google 表格上次编辑日期

如何将此调用缓存到 Google Sheets API?

请求时Google Sheets HttpError 403

如何使用 Google Sheets API python 将下拉列表添加到 google sheet

如何使用 Python 访问(读取、写入)Google Sheets 电子表格?