我正在寻找谷歌电子表格的公式,用于在同一列中值重复时高亮显示单元格。
请问有人可以帮助我吗?
我正在寻找谷歌电子表格的公式,用于在同一列中值重复时高亮显示单元格。
请问有人可以帮助我吗?
尝试以下步骤:
自定义公式是
=countif(A:A,A1)>1
(或将A
更改为您选择的列)A1:A100
)。任何写在A1:A100单元格中的内容都将被检查,如果存在重复项(出现超过一次),则它将被标记颜色。
对于使用逗号 (,
) 作为小数分隔符的区域设置,参数分隔符很可能是分号 (;
)。因此,请尝试:=countif(A:A;A1)>1
。
对于多列,请使用countifs
。
虽然zolley的回答对于这个问题是完全正确的,但这里提供了一个更通用的解决方案,适用于任何范围,以及解释:
=COUNTIF($A$1:$C$50, INDIRECT(ADDRESS(ROW(), COLUMN(), 4))) > 1
A1:C50
。
第一个参数($A$1:$C$50
)应替换为您想要突出显示重复项的范围!
突出显示重复项:
格式
> 条件格式...
应用于范围
中,选择应用规则的范围。如果格式符合以下条件,则设置格式
中,从下拉菜单中选择 自定义公式
。为什么它有效?
COUNTIF(range, criterion)
,将会比较range
中的每个单元格和criterion
,该参数将被类似于公式的方式进行处理。如果没有提供特殊运算符,它将会将范围内的每个单元格与给定单元格进行比较,并返回符合规则(在此情况下是比较)的单元格数量。我们使用了一个固定的范围(带有$
符号),以便我们始终查看完整的范围。
第二个块,INDIRECT(ADDRESS(ROW(), COLUMN(), 4))
,将返回当前单元格的内容。如果将其放置在单元格内部,文档将会抱怨循环依赖关系,但在这种情况下,该公式将被评估为在单元格内部,而不改变它。
ROW()
和 COLUMN()
将分别返回给定单元格的行号和列号。如果未提供参数,则将返回当前单元格(这是基于1的,例如,B3
将返回ROW()
为3,COLUMN()
为2)。
ADDRESS(row, column, [absolute_relative_mode])
将数字行和列转换为单元格引用(如B3
)。请记住,在单元格的上下文中,我们不知道它的地址或内容,我们需要内容才能进行比较。第三个参数负责格式化,4
返回INDIRECT()
所喜欢的格式。
INDIRECT()
将获取单元格的引用并返回其内容。在这种情况下,是当前单元格的内容。然后回到起点,COUNTIF()
将针对范围内的每个单元格测试我们的单元格,并返回计数。COUNTIF(...) > 1
。使用> 1
是因为我们知道至少有一个与我们相同的单元格。那就是我们的单元格,它在范围内,因此将与自身进行比较。因此,要指示重复项,我们需要找到2个或更多与我们匹配的单元格。
来源:
*
)和另一个检查,所以大致如下:`((COUNTIF(...))*(NOT(ISBLANK(INDIRECT(...当前单元格...))))。这是我在手机上能做到的最好的了。 :) - Selfish$A$1:$C$50
- 根据所涉及的列进行相应更改。我更喜欢这种更通用的方法,而不是zolley的方法。 - boldnik=COUNTIF(C:C, C1) > 1
Explanation: 这里的C1
并不是指C列中的第一行。因为此公式是通过条件格式规则进行评估的,所以在检查公式是否适用时,C1
有效地指当前正在评估以确定是否应该应用突出显示的任何行。(因此,如果对你有意义的话,它更像是INDIRECT(C &ROW())
!)实质上,在评估条件格式公式时,任何引用第1行的内容都会针对运行公式的行进行评估。(是的,如果您使用C2,则表示要检查当前正在评估的下一行的状态。)TRUE
。)
=AND(COUNTIF(C:C, C1) > 1, COUNTIF(C$1:C1, C1) = 1)
说明:这只会在两个COUNTIF
都为TRUE
时(它们出现在一个AND()
函数内)进行突出显示。
要计算的第一个术语(COUNTIF(C:C,C1)>1
)与第一个示例完全相同;只有当C1
中的内容重复时,它才为TRUE
。(请记住,C1
实际上是指当前要检查是否应该突出显示的行)。
第二个术语(COUNTIF(C$1:C1,C1)=1
)看起来相似,但有三个关键差异:
它不搜索整个C列(就像第一个公式一样:C:C
),而是从第一行开始搜索:C$1
($
强制它严格查看第一行,而不是正在计算的任何行)。
然后在当前正在评估的行C1
处停止搜索。
最后说=1
。
因此,只有当在当前行之前没有重复项时(这意味着它必须是重复项中的第一个),它才为TRUE
。
与第一个术语结合使用(它只有在此行具有重复项时才为TRUE
),这意味着只会突出显示第一次出现的重复项。
=AND(COUNTIF(C:C, C1) > 1, NOT(COUNTIF(C$1:C1, C1) = 1), COUNTIF(C1:C, C1) >= 1)
说明:第一个表达式与以往相同(如果当前评估的行在所有行中是重复的,则为TRUE
)。
第二个表达式与最后一个完全相同,只是它被取反了:它周围有一个NOT()
。所以它忽略了第一次出现的情况。
最后,第三个表达式捕捉到2、3等重复项。COUNTIF(C1:C, C1) >= 1
从当前评估的行开始搜索范围(C1:C
中的C1
)。然后它仅在此行以下(包括此行)存在一个或多个重复项时(应用高亮)才评估为TRUE
:>= 1
(它必须是>=
而不仅仅是>
,否则最后一个重复项将被忽略)。
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秒钟,我的重复行就被着色了。只需复制粘贴脚本即可。
如果您不了解Google应用脚本,这些链接可能会对您有所帮助:
https://zapier.com/learn/google-sheets/google-apps-script-tutorial/
https://developers.google.com/apps-script/overview
希望这能帮到您。
=COUNTIFS(A:A; A1; B:B; B1)>1
。 - Christiaan Westerbeek;
导致我出现了“无效的公式”错误。只需将其删除即可解决问题。此外请注意:作为countif
的第二个参数指定的单元格应该是您选择范围的第一个单元格。 - edelans=countif(B:B,B2)>1
。这使得在使用绝对引用与相对引用时可以进行一些高级格式设置。 - asoundmove