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

Google Sheet:文本与上方单元格相同时自动递增实现方法

在Google Sheets中实现重复内容自动添加递增序号的方法

方法一:使用公式生成(不修改原数据)

如果希望保留原始输入列,在另一列生成带序号的内容,可使用以下方案:

  1. 假设原始内容在A列,在B1单元格输入:
    =A1

  2. 在B2单元格输入公式,然后下拉填充整列:
    =IF(A2=A1, A2&" - "&COUNTIF(A$1:A2,A2), A2)

    • 逻辑:判断当前A列内容是否和上方单元格相同,相同则用COUNTIF统计从A1到当前行该内容出现的次数,拼接成带序号的文本;不同则直接显示原内容。
  3. 若要整列自动处理(无需下拉),可在B1单元格使用数组公式:
    =ARRAYFORMULA(IF(A:A="", "", A:A&IF(COUNTIFS(A:A, A:A, ROW(A:A), "<="&ROW(A:A))>1, " - "&COUNTIFS(A:A, A:A, ROW(A:A), "<="&ROW(A:A)), "")))

    • 逻辑:自动遍历A列所有单元格,为空则不处理;统计当前行及以上相同内容的出现次数,次数大于1时添加序号。

方法二:使用Google Apps Script直接修改原单元格

如果需要在输入重复内容时直接修改原单元格(比如输入A2为"Ball"后自动变为"Ball - 2"),可通过脚本实现:

  1. 打开你的Google Sheet,点击顶部菜单栏的「扩展」→「Apps 脚本」。
  2. 删除默认代码,粘贴以下脚本:
function onEdit(e) {
  const range = e.range;
  const sheet = range.getSheet();
  const row = range.getRow();
  const col = range.getColumn();
  
  // 仅处理A列,且跳过第一行
  if (col !== 1 || row === 1) return;
  
  const currentValue = range.getValue();
  const aboveValue = sheet.getRange(row - 1, col).getValue();
  
  if (currentValue === aboveValue) {
    // 统计当前内容从第一行到当前行的出现次数
    const count = sheet.getRange(1, col, row, 1).createTextFinder(currentValue).findAll().length;
    range.setValue(`${currentValue} - ${count}`);
  }
}
  1. 保存脚本(点击保存按钮,随便起个名字比如"AutoNumberDuplicates"),关闭脚本编辑器。
  2. 返回表格,在A列输入内容测试:当A2和A1内容相同时,A2会自动变为「内容 - 2」,后续重复内容会继续递增序号。

注意事项

  • 公式方法不会修改原始数据,适合需要保留原始输入的场景;
  • 脚本方法需要首次运行时授权(按提示操作即可),且仅在编辑单元格时触发,适合需要直接修改输入内容的场景。

内容的提问来源于stack exchange,提问作者Fyrens

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 02:15:13