如何实现宏或条件格式规则,根据列中的值比较两个单独的工作表?
基本上,我需要做的是搜索每个工作表中的匹配值(例如,单元格A10将是“Project10”,而在另一个工作表上,它可能是单元格A6作为“Project10”)。
然后,它将查看一个单独的列,并匹配那里的日期(即单元格A10的日期为"11/12/15“,而另一个工作表上的单元格A6的日期为"11/11/15"),如果单元格与第一个工作表上的日期不同,则突出显示该单元格。
这里的棘手之处在于,项目在每个工作表上的顺序不同(如上面所解释的)。我尝试了几个代码建议,但还没有得到任何结果。
发布于 2015-07-21 18:24:13
让我们使用条件格式来解决问题。
正如您可能知道的,条件格式通过设置一个规则来工作,该规则控制应用它的单元格。如果该规则产生真,则应用该规则(差异颜色等)。因此,这里的目标是建立一个公式,当你的所有条件都满足的时候,这个公式就会变成真。这里有两个我们关心的条件。首先,关于sheet1的A列中的项目是否存在于sheet2上的A列中?
=not(iserror(match($A1,sheet2!$A:$A,0)))首先,它使用MATCH函数来检查A1 (列上有绝对引用,以便将规则应用于列A&B时,它根本不会查看列B)是否存在于sheet2 columnA上。如果它确实存在,它将显示它出现的行号。如果它不存在,它将创建一个错误。因此,它被包装在ISERROR中,其中写着“如果这个参数返回一个错误,就吐出TRUE”。但是,当没有错误时,我们希望它返回TRUE。因此,我们将其封装在NOT中,这会使真变为假,反之亦然。
现在您真正关心的是,如果A1存在于sheet2中,那么sheet2上B列中的该行是否与sheet1上的B1中的值匹配?
因此,我们使用索引函数在B列中找到了值,其中A列中有一个匹配项,如下所示:
=Index(sheet2!$B:$B,match($A1,sheet2!$A:$A,0))因此,请检查:该值是否等于B1,sheet1中的值?[我们实际上检查该值是否与B1不同,因此我们使用"<>“而不是"=”。
=Index(sheet2!$B:$B,match($A1,sheet2!$A:$A,0))<>$B1现在,我们只需要将一个错误(如果匹配返回不匹配)替换为"“。
=Iferror(Index(sheet2!$B:$B,match($A1,sheet2!$A:$A,0)),"")<>$B1就是这样。如果sheet2 columnA中使用match函数进行匹配,则使用索引函数提供B列中的数据。如果没有匹配,则使用IFERROR函数返回"“。如果该值不等于B1,则结果为TRUE,这将触发条件格式设置。
https://stackoverflow.com/questions/31546474
复制相似问题