我正在寻找谷歌电子表格的公式 如果值在同一列中重复,则突出显示单元格
有人可以帮助我查询这个问题吗?
答案 0 :(得分:375)
试试这个:
Custom formula is:
=countif(A:A,A1)>1
A1:A100
)。任何用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
)应替换为您要突出显示重复项的范围!
突出重复:
Format
> Conditional formatting...
Apply to range
下,选择应该应用规则的范围。Format cells if
中,在下拉列表中选择Custom formula is
。为什么会这样?
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”。 然后条件渲染将起作用。
答案 3 :(得分:19)
@zolley的回答是对的。只需添加一个Gif和步骤供参考。
答案 4 :(得分:5)
此外,您可以安装加载项Remove Duplicates并查找(突出显示)或删除列或表中的重复值。
答案 5 :(得分:3)
=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:C
(C$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
我希望这会有所帮助。