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

Google Sheets数组公式修改:仅标记重复行的第二及后续实例

解决Google Sheets数组公式标记重复行(仅标记第二及后续重复)的问题

嘿,我完全懂你的痛点——你希望数组公式只给第二行及以后的重复行打上"Duplicate"标记,而首次出现的那一行(哪怕后面有重复)要显示"Unique",但之前的公式把首次重复行也误标了,对吧?别担心,我给你调整好公式,再拆解清楚每个部分的作用。

核心公式(针对指定列判断行唯一性)

假设你要判断A、B、C三列组成的行是否重复,表头在第1行,公式如下:

=ARRAYFORMULA(IF(ROW(A:A)=1, "Status", IF(COUNTIFS(A:A&"|"&B:B&"|"&C:C, A:A&"|"&B:B&"|"&C:C, ROW(A:A), "<="&ROW(A:A))>1, "Duplicate", "Unique")))

公式拆解:

  • ROW(A:A)=1:处理表头行,这里给表头列命名为"Status",如果你的表头在第2行,改成ROW(A:A)=2就行。
  • A:A&"|"&B:B&"|"&C:C:把需要判断的列拼接成一个唯一字符串,这样能精准识别整行是否重复。你可以根据实际需求添加/删除列,比如只判断A列的话,直接用A:A即可。
  • COUNTIFS(..., ROW(A:A), "<="&ROW(A:A)):这是关键!它会统计从第一行到当前行中,和当前行重复的次数。如果次数>1,说明这不是首次出现,标记为"Duplicate";反之则是首次出现(包括完全唯一的行),标记为"Unique"。

进阶版:判断整行(所有列)的唯一性

如果你需要判断整行(比如A到Z列)是否重复,用LET函数让公式更简洁易读:

=ARRAYFORMULA(IF(ROW(A:A)=1, "Status", LET(
  row_strings, BYROW(A:Z, LAMBDA(row, TEXTJOIN("|", TRUE, row))),
  duplicate_counts, COUNTIFS(row_strings, row_strings, ROW(A:A), "<="&ROW(A:A)),
  IF(duplicate_counts>1, "Duplicate", "Unique")
)))

额外注意事项:

  • 空白行处理:如果表格里有空白行,它们会被当成重复行标记。你可以在公式里加个判断,比如把最外层的IF改成:
    =ARRAYFORMULA(IF(ROW(A:A)=1, "Status", IF(A:A="", "", IF(COUNTIFS(...)))))
    
  • 分隔符选择:拼接用的"|"要确保不会出现在你的数据里,不然会导致误判。如果数据里有这个符号,换成其他不常用的,比如"~"或者"###"。

举个实际效果的例子:

A列B列Status
AppleRedUnique
BananaYellowUnique
AppleRedDuplicate
OrangeOrangeUnique
BananaYellowDuplicate

这样就完美实现了你要的效果:首次出现的行显示"Unique",后续重复行才标记为"Duplicate"。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 04:10:16