如何在google电子表格的同一列中重复显示单元格的值?

时间:2014-02-20 06:03:36

标签: google-sheets gs-conditional-formatting

我正在寻找谷歌电子表格的公式 如果值在同一列中重复,则突出显示单元格

有人可以帮助我查询这个问题吗?

7 个答案:

答案 0 :(得分:375)

试试这个:

  1. 选择整栏
  2. 点击格式
  3. 点击条件格式
  4. 点击添加新规则
  5. 格式单元格设置为:Custom formula is:
  6. 将值设置为:=countif(A:A,A1)>1
  7. 设置格式样式。
  8. 确保范围适用于您的列(例如A1:A100)。
  9. 任何用A1:A100单元格写的东西都会被检查,如果有重复(多次出现),那么它就会被着色。

    对于使用逗号(,)作为小数分隔符的语言环境,参数分隔符很可能是分号(;)。也就是说,请尝试:=countif(A:A;A1)>1,而不是。

    对于多列,请使用countifs

答案 1 :(得分:49)

虽然zolley's answer完全适合这个问题,但这里是针对任何范围的更通用的解决方案,加上解释:

    =COUNTIF($A$1:$C$50, INDIRECT(ADDRESS(ROW(), COLUMN(), 4))) > 1

请注意,在此示例中,我将使用范围A1:C50。 第一个参数($A$1:$C$50)应替换为您要突出显示重复项的范围!

突出重复:

  1. 选择需要重复标记的整个范围。
  2. 在菜单上:Format> Conditional formatting...
  3. Apply to range下,选择应该应用规则的范围。
  4. Format cells if中,在下拉列表中选择Custom formula is
  5. 在文本框中插入给定的公式,调整范围以匹配步骤(3)。
  6. 为什么会这样?

    COUNTIF(range, criterion)会将range中的每个单元格与criterion进行比较,后者的处理方式与公式类似。如果没有提供特殊运算符,它将比较该范围内的每个单元格与给定单元格,并返回找到的匹配规则的单元格数量(在本例中为比较)。我们使用固定范围(带有$符号),以便我们始终查看整个范围。

    第二个块INDIRECT(ADDRESS(ROW(), COLUMN(), 4))将返回当前单元格的内容。如果将它放在单元格内部,则docs会对循环依赖关系进行评论,但在这种情况下,公式将被评估为好像它在单元格中,而不是更改它。

    ROW()COLUMN()将分别返回给定单元格的行数字和列数字。如果未提供参数,则将返回当前单元格(例如,这是1,例如,B3将为ROW()返回3,为COLUMN()返回2.)

    然后我们使用:ADDRESS(row, column, [absolute_relative_mode])将数字行和列转换为单元格引用(如B3。请记住,当我们在单元格的上下文中时,我们不知道它的地址或内容,我们需要内容以便与之比较)。第三个参数负责格式化,4返回格式INDIRECT()喜欢。

    INDIRECT(),将使用单元格引用并返回其内容。在这种情况下,当前单元格的内容。然后回到开始,COUNTIF()将测试范围内的每个单元格对我们的单元格,并返回计数。

    最后一步是让我们的公式返回一个布尔值,使其成为一个逻辑表达式:COUNTIF(...) > 1。使用> 1因为我们知道至少有一个与我们相同的单元格。这是我们的细胞,它在范围内,因此将与自身进行比较。因此,为了表明重复,我们需要找到2个或更多匹配我们的单元格。

    来源:

答案 2 :(得分:27)

  

从“文本包含”下拉菜单中选择“自定义公式为:”,并写入:“= countif(A:A,A1)> 1”(不带引号)

我完全按 zolley 提出,但应该进行小修正:使用“自定义公式”而不是“Text Contains”。 然后条件渲染将起作用。

Screenshot from menu

答案 3 :(得分:19)

@zolley的回答是对的。只需添加一个Gif和步骤供参考。

  1. 转到菜单Format > Conditional formatting..
  2. 查找Format cells if..
  3. 在字段=countif(A:A,A1)>1中添加Custom formula is
    • 注意:使用您自己的专栏更改字母A
  4. enter image description here

答案 4 :(得分:5)

此外,您可以安装加载项Remove Duplicates并查找(突出显示)或删除列或表中的重复值。

答案 5 :(得分:3)

突出显示重复项(在C列中):

=COUNTIF(C:C, C1) > 1

说明:此处的C1并不引用C中的第一行。由于此公式是通过条件格式规则求值的,因此,当检查该公式以查看其是否适用时,{{ 1}}有效地指向当前正在评估的任何行,以查看是否应应用突出显示。 (因此,这更像C1,如果这对您来说意味着什么!)。本质上,在评估条件格式公式时,将参照针对该公式运行的行评估引用第1行的所有内容。 (是的,如果您使用C2,则要求该规则检查当前正在评估的行正下方的行的状态。

这就是说,请计算INDIRECT(C &ROW())整个列中C1(正在评估的当前单元格)中出现的任何事件的发生次数,如果出现次数超过1(即值重复),然后:应用突出显示(,因为该公式的总体计算结果为C )。

仅突出显示第一个重复项:

TRUE

说明:仅突出显示两个=AND(COUNTIF(C:C, C1) > 1, COUNTIF(C$1:C1, C1) = 1) 均为COUNTIF(它们都出现在TRUE内)

要评估的第一个术语(AND())与第一个示例完全相同;仅当COUNTIF(C:C, C1) > 1中的任何内容重复时,它才是TRUE。 (请记住,C1有效地指向被检查的当前行以查看是否应突出显示。)

第二项(C1)看起来很相似,但有三个关键区别:

它不会搜索整个列COUNTIF(C$1:C1, C1) = 1(就像第一列一样:C),而是从第一行开始搜索:C:CC$1迫使它从字面上看是行$,而不是正在评估的行)。

然后在搜索到的当前行1处停止搜索。

最后它说C1

因此,如果当前正在评估的行上方没有重复项,则它将为= 1(这意味着它必须是重复项中的第一个)。

结合第一项(如果该行重复,则只有TRUE),这意味着将仅突出显示第一项。

突出显示第二个及以后的重复项:

TRUE

说明:第一个表达式与往常相同(如果当前评估的行完全重复,则为=AND(COUNTIF(C:C, C1) > 1, NOT(COUNTIF(C$1:C1, C1) = 1), COUNTIF(C1:C, C1) >= 1)

第二项与最后一项完全相同,除了否定:它周围有一个TRUE。因此它忽略了第一次出现。

最后,第三项选择了重复项2、3等。NOT()在当前评估的行(COUNTIF(C1:C, C1) >= 1中的C1)处开始搜索范围。然后,只有在此副本(包括该副本)下方有一个或多个副本时,它才求值为C1:C(应用突出显示):TRUE(它必须为>= 1,而不仅仅是{{1 }},否则将忽略最后的重复项。

答案 6 :(得分:1)

我尝试了所有选项,但都没有。

只有谷歌应用程序脚本帮助了我。

来源:https://ctrlq.org/code/19649-find-duplicate-rows-in-google-sheets

位于文档顶部

1.-转到工具>脚本编辑器

2.-设置脚本名称

3.-粘贴此代码:

function findDuplicates() {
  // List the columns you want to check by number (A = 1)
  var CHECK_COLUMNS = [1];

  // Get the active sheet and info about it
  var sourceSheet = SpreadsheetApp.getActiveSheet();
  var numRows = sourceSheet.getLastRow();
  var numCols = sourceSheet.getLastColumn();

  // Create the temporary working sheet
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var newSheet = ss.insertSheet("FindDupes");

  // Copy the desired rows to the FindDupes sheet
  for (var i = 0; i < CHECK_COLUMNS.length; i++) {
    var sourceRange = sourceSheet.getRange(1,CHECK_COLUMNS[i],numRows);
    var nextCol = newSheet.getLastColumn() + 1;
    sourceRange.copyTo(newSheet.getRange(1,nextCol,numRows));
  }

  // Find duplicates in the FindDupes sheet and color them in the main sheet
  var dupes = false;
  var data = newSheet.getDataRange().getValues();
  for (i = 1; i < data.length - 1; i++) {
    for (j = i+1; j < data.length; j++) {
      if  (data[i].join() == data[j].join()) {
        dupes = true;
        sourceSheet.getRange(i+1,1,1,numCols).setBackground("red");
        sourceSheet.getRange(j+1,1,1,numCols).setBackground("red");
      }
    }
  }

  // Remove the FindDupes temporary sheet
  ss.deleteSheet(newSheet);

  // Alert the user with the results
  if (dupes) {
    Browser.msgBox("Possible duplicate(s) found and colored red.");
  } else {
    Browser.msgBox("No duplicates found.");
  }
};

4.-保存并运行

在不到3秒的时间内,我的重复行被着色了。只需复制过去的脚本。

如果您不了解谷歌应用脚​​本,这个链接可以帮助您:

https://zapier.com/learn/google-sheets/google-apps-script-tutorial/

https://developers.google.com/apps-script/overview

我希望这会有所帮助。