使用VBA搜索和比较各种值

使用VBA搜索和比较各种值,vba,excel,Vba,Excel,我必须创建一个宏,该宏将: 从单元格A1中获取值在列C中搜索此值 如果A1单元格中的值存在于C列中,则需要将B1单元格中的值与D列中的值进行比较 如果单元格A1中的值存在于列C中,单元格B1中的值存在于列D中,则文本“找到的值”应出现在单元格E1中 对于A列中的所有非空行,都需要执行上述操作 我试图使用以下公式: =IF(ISERROR(MATCH(A2,$C$2:$C$138,0)),"Load number not found","Load number found") 但它没有像我想要的

我必须创建一个宏,该宏将:

  • 从单元格A1中获取值在列C中搜索此值
  • 如果A1单元格中的值存在于C列中,则需要将B1单元格中的值与D列中的值进行比较
  • 如果单元格A1中的值存在于列C中,单元格B1中的值存在于列D中,则文本“找到的值”应出现在单元格E1中
  • 对于A列中的所有非空行,都需要执行上述操作

    我试图使用以下公式:

    =IF(ISERROR(MATCH(A2,$C$2:$C$138,0)),"Load number not found","Load number found")
    

    但它没有像我想要的那样工作。我对互联网的访问有限,因此无法查看所有网站。你能帮帮我吗。非常感谢。

    如果我理解的话,使用公式的传统解决方案是连接C列和D列数据,然后进行搜索。如果插入带有以下内容的新列C:

    =D2&E2  
    
    复制下来以适合您,只需稍加修改即可应用(但在第F列而不是第E列)现有公式:

    =IF(ISERROR(MATCH(A1&B1,$C$2:$C$138,0)),"Load number not found","Load number found")  
    

    取决于哪一行的内容。

    要检查A1是否在C列中,如果B1在D列中(在同一行中,A1在C列中),则需要执行以下操作:

    =IF(ISERROR(MATCH(A1,$C:$C,0)),"Load number not found",IF(B1=INDEX($D:$D,MATCH(A1,$C:$C,0),1),"Load number found","Load number not found"))
    
    第一个IF检查A1是否在列C中,第二个IF检查B1是否在列D中(在同一行中,A1在列C中找到)

    仅当两个条件均为真时,它才会返回“找到的装载编号”。否则,它将返回“未找到加载编号”

    您可以编写宏来执行相同的操作。但更简单的方法是只锁定E列中的单元格,并保护工作表,这样用户就不会意外更改任何公式


    更新:

    由于列C可以有重复项,因此需要使用以下数组公式:

    =IF(ISERROR(MATCH(1,(A1=$C:$C)*(B1=$D:$D),0)),"Load number not found","Load number found")
    

    将此公式粘贴到E1时,请确保按CTRL+Shift+Enter,而不是只按Enter键。

    谢谢。这是一种想法。但我需要一些东西来防止其他不熟悉Excel的人做错事。这就是为什么我需要宏。我们有很多这样的文件,有上千行,所以如果这两个条件都为真,那么从逻辑的角度来看,IF为真。但让我解释一下。在A栏中我有名字,在B栏中我有电话号码。我想确定A列和B列的pair值是否与C列和D列的pair值匹配。我可以在C列中找到Samntha,但这并不意味着D列中找到的Samantha的手机将引用C列中的Samantha。在您的解释中,这两个条件都是真的,因为这两个值都会在某处找到(示例中的Samantha位于C1460行,她的手机位于D13)好的,它在文件开始时运行了很多行,但后来停止了。我已经更新了答案中的代码。正在运行公式。这只将列选择为138行。我已经包含了整个列。它仍然不工作。我可以添加示例文件,但我不能。在C列中是否有重复的值。如果是,它将l不起作用,因为公式将检查C列上的第一个匹配项,然后检查D列上的行是否=B1