首页 > 解决方案 > 如何使用 REGEXEXCTRACT 从一个非常长的文本单元格创建多个子字符串?

问题描述

在我的工作表中,单元格 A1 包含一个很长的逗号分隔文本字符串。

A1(示例) ="value1,value2,value3,value4,value5,value6,value7,value8,value9,value10,...etc.")

我正在使用以下 regexextract 公式,以便提取前 1000 个字符,但不会在逗号分隔值的中间截断结果文本。这将确保字符串的结尾是最后一个适合的 FULL VALUE。

单元格 B1=IF(LEN(A1)<=200,A1,REGEXEXTRACT(A1,"(.{0,1000}),"))

上面的函数完美地工作,但我不知道如何让单元格 B2 开始于单元格 B1 结束的地方,参考我的主文本字符串 A1。这意味着如果它在下面的示例中以单元格 B1 中的value45 结尾,我需要单元格 B2在单元格 B1 的文本字符串中用于结束value45的逗号之后开始。

B1(结果字符串示例)"value1,.....,value45"

我需要在单元格 B2、B3、B4 等中一遍又一遍地执行 B1 的相同功能,直到将整个文本提取到 1000 个字符的子字符串块中并完成。

有谁知道我该如何解决这个问题?在未来的项目中,单元格 A1 的字符长度总是会改变,所以我需要它对于任何大于 200 个字符的字符长度都是动态的。我也不能使用脚本编辑器,因为这是管理层给我的要求

标签: google-sheetsgoogle-sheets-formula

解决方案


试试这些公式:

B1:=regexextract(A1, "(.{0,1000})(?:,|$)")

B2:=regexextract( mid(A$1, len(join(",", B$1:B1)) + 2, len(A$1)), "(.{0,1000})(?:,|$)" )

您可以将 B2 中的公式复制下来以获取更多值。


推荐阅读