我如何实现宏或条件格式设置规则,根据列中的值比较两个单独的工作表?
基本上,我需要做的是在每个工作表中搜索匹配的值(例如,单元格A10
将是“项目10”,而在另一个工作表上,它可能是单元格A6
为“项目10” “)。
然后它会查看一个单独的列,并匹配那里的日期(即,单元格A10
将具有日期“11/12/15”并且另一个表格上的单元格A6
将具有日期“11/11/15”)突出显示单元格是否与第一张表单上的日期不同。
这里棘手的问题是每个工作表上的项目顺序不同(如上所述)。我尝试了几个代码建议,但还没有到达任何地方。
答案 0 :(得分:0)
让我们使用条件格式解决。
您可能知道,条件格式设置的工作原理是设置一个规则来管理您应用它的单元格。如果该规则生成TRUE,则应用规则(diff颜色等)。所以这里的目标是制定一个在满足所有条件时得到TRUE的公式。我们关心的有两个条件。首先,sheet1上A列中的项目是否存在于sheet2的A列中?
=not(iserror(match($A1,sheet2!$A:$A,0)))
首先,它使用MATCH函数来检查是否存在A1(在列上具有绝对引用,因此当您将规则应用于列A和B时,它根本不会查看列B)存在于sheet2 columnA 。如果它确实存在,它将吐出它出现的行号。如果它不存在,则会产生错误。因此,它包含在ISERROR中,表示"如果此参数返回错误,则吐出TRUE"。但是,当出现 no 错误时,我们希望它返回TRUE。所以,我们将它包装在NOT中,它将TRUE反转为FALSE,反之亦然。
现在您真正关心的是,如果Sheet2中存在A1,那么sheet2上B列中的那一行是否与sheet1上的B1值相匹配?
因此我们通过使用索引函数找到列B中的值,其中A列中存在匹配,如下所示:
=Index(sheet2!$B:$B,match($A1,sheet2!$A:$A,0))
这给出了表2中B列的值。因此,检查:该值是否等于B1,sheet1中的值? [我们实际检查该值是否与B1不同,因此我们使用"<>"而不是" ="。
=Index(sheet2!$B:$B,match($A1,sheet2!$A:$A,0))<>$B1
现在我们只需要用&#34;&#34;替换错误(如果匹配不返回匹配)。
=Iferror(Index(sheet2!$B:$B,match($A1,sheet2!$A:$A,0)),"")<>$B1
就是这样。如果在sheet2 columnA [使用MATCH函数]中匹配,它将为您提供B列[使用INDEX]功能的日期。如果没有匹配,则返回&#34;&#34; [使用IFERROR功能]。然后,如果该值不等于B1,则结果为TRUE,这会触发条件格式化。