如何在Google Sheets中提取列内所有单元格的最长公共连续子串?
Google Sheets提取列内所有单元格的最长公共连续字符串
完全可以实现,下面给你两种实用方法:
方法一:自定义函数(最靠谱,适配所有情况)
- 打开你的Google表格,点击顶部菜单栏的「扩展程序」→「Apps 脚本」。
- 在弹出的脚本编辑器里,替换默认代码为这段:
function LONGESTCOMMONPREFIX(range) { if (!range || range.length === 0) return ""; let prefix = range[0][0]; for (let i = 1; i < range.length; i++) { while (range[i][0].indexOf(prefix) !== 0) { prefix = prefix.slice(0, -1); if (prefix === "") return ""; } } return prefix; }
- 点击编辑器顶部的保存按钮,随便给脚本起个名字(比如「公共前缀提取」),然后回到表格。
- 在B1单元格输入公式:
=LONGESTCOMMONPREFIX(A1:A6)(把A1:A6换成你实际的数据范围,或者直接写A:A覆盖整列),按回车就能得到所有单元格共享的最长公共前缀。 - 如果想让B列所有对应A列非空的单元格都显示这个结果,可以用数组公式:
=ARRAYFORMULA(IF(A:A<>"", LONGESTCOMMONPREFIX(A:A), ""))
方法二:内置函数组合(无需脚本,仅适用于前缀差异场景)
如果你的数据差异只在字符串末尾(像示例里那样),也可以用内置函数拼出来:
在B1输入:
=LEFT(A1, MAX(ARRAYFORMULA(IFERROR(MATCH(FALSE, ARRAYFORMULA(MID(A1, 1, ROW(INDIRECT("1:"&LEN(A1))))=ARRAYFORMULA(MID(A2:A, 1, ROW(INDIRECT("1:"&LEN(A1))))), 0)-1, LEN(A1))))
按回车后就能得到结果,不过这个方法只针对前缀一致、差异在末尾的情况,不如自定义函数通用。
内容的提问来源于stack exchange,提问作者markyoung
相关产品推荐
相关产品推荐

