You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Google Sheets中提取列内所有单元格的最长公共连续子串?

Google Sheets提取列内所有单元格的最长公共连续字符串

完全可以实现,下面给你两种实用方法:

方法一:自定义函数(最靠谱,适配所有情况)

  1. 打开你的Google表格,点击顶部菜单栏的「扩展程序」→「Apps 脚本」。
  2. 在弹出的脚本编辑器里,替换默认代码为这段:
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;
}
  1. 点击编辑器顶部的保存按钮,随便给脚本起个名字(比如「公共前缀提取」),然后回到表格。
  2. 在B1单元格输入公式:=LONGESTCOMMONPREFIX(A1:A6)(把A1:A6换成你实际的数据范围,或者直接写A:A覆盖整列),按回车就能得到所有单元格共享的最长公共前缀。
  3. 如果想让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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 00:13:16