我需要有条件地格式化同一列之间具有不同值的单元格,如果它们对于特定列的值是相同的。
设想
我的电子表格是一个联系人数据库,其中每行都是一个联系人记录,每列包含每个联系人记录的一种数据类型(姓氏、街道 1、街道 2、城市、州等)。
该电子表格是我们公司不同办公室保存的联系信息的汇总——我们将所有联系信息合并到同一来源,以便我们可以解决任何差异,并将所有联系人保存在同一个地方。
有些联系人只有一条记录——例如,当我们只有一个办公室有该联系人的数据时,它不能与我们从其他办公室获得的数据不一致;其他联系人有几条记录(例如,Fred Johnson 可能只有一行,而 Jane Smith 有四行)。每个联系人都需要有完全相同的联系信息,然后我们才能将其上传到云数据库,否则会产生重复。
我们花了很长时间尝试使同一个人的记录之间的数据一致,现在我们需要找出剩余的差异在哪里。
我连接了 LastName 和 FirstName 字段,以便可以相互比较此字段中具有相同值的行 - 目标是与 LastFirst 列中具有相同值的其他记录(如果有)相比,突出显示同一列中具有不同数据的单元格。
我怎样才能做到这一点?
到目前为止,我知道“选择性查找”功能可以在与指定的行或列进行比较时突出显示单元格,但我需要对特定列具有相同值的行进行比较。
我可以访问 Excel 2010 和 2013 来执行此功能。
谢谢你!
答案1
可能有更简洁的解决方案,但您不需要连接名字和姓氏来创建“FullName”列。
输出预览
(右侧的白色单元格显示我们的公式将产生什么输出来驱动条件格式):
这是我们的公式
=COUNTIFS($A$1:$A$100,$A2,$B$1:$B$100,$B2)
-COUNTIFS($A$1:$A$100,$A2,$B$1:$B$100,$B2,C$1:C$100,IF(C2="","",C2))
请记住调整以适应数据集中的行数,以及名字和姓氏列的位置(如果它们不在 A 和 B 中)。
我还假设您的第一个非姓名数据从单元格 C2 开始 - 即这是您要检查不匹配情况的最左上角的数据位。如果需要,请编辑此公式中的“C”。
应用条件格式
复制上述公式(进行必要的更改),然后单击要检查不匹配情况的最左上角单元格(从这里开始我将引用“C2”)。现在,选择Conditional Formatting
功能区上的按钮,然后选择New Rule
。
选择Use a formula to determine which cells to format
,然后将公式粘贴到文本框中(确保没有空格 - 如果您是从上面复制的,则需要删除一些空格)。现在您可以单击Format
以设置如何突出显示不匹配项。我选择了(鲜艳的!)红色填充。单击OK
直到返回电子表格。
如果单元格 C2 中没有不匹配项,那么可能看起来什么都没发生,但那是因为我们仍然需要将规则应用于整个数据集。保持 C2 仍处于选中状态,单击功能区菜单Manage Rules
中的Conditional Formatting
。
现在您可以选择要检查不匹配的整个范围。在框中Applies to
单击并拖动以选择要比较的所有内容(或者,如果您有很多行,为了加快速度,只需输入单元格引用=$C$2:$Z$999
)
单击“确定”就完成了!
怎么运行的
此公式用于COUNTIFS()
计算该人有多少行:
=COUNTIFS($A$1:$A$100,$A2,$B$1:$B$100,$B2)
然后我们计算出有多少行包含该人的姓名和您要检查的列中的值。如果所有行都相同,那么这个数字应该与第一个完全匹配COUNTIFS()
。
COUNTIFS($A$1:$A$100,$A2,$B$1:$B$100,$B2,C$1:C$100,IF(C2="","",C2))
如果我们用前者减去后者,并且所有行都匹配,则公式输出 0 并且不执行任何条件格式。但是,如果有任何不同,则输出将为 1 或更高,从而触发条件格式。
笔记
我不得不将最终COUNTIFS()
标准包装在一个IF()
语句中以处理空白 -COUNTIFS
不太喜欢空白(似乎不确定是否将它们算作 0 或“”。奇怪)。
文件下载
此示例文档也是可供下载。