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 HttpError 403