使用VBA搜索和比较各种值

时间:2015-04-17 01:08:38

标签: excel vba excel-vba

我必须创建一个宏:

  1. 从单元格A1中获取值,在C列中搜索此值。
  2. 如果单元格A1中的值存在于列C中,则宏需要将单元格B1中的值与列D中的值进行比较。
  3. 如果单元格A1中的值存在于列C中,并且单元格B1中的值存在于列D中,则文本"值找到"应出现在单元格E1中。
  4. 上述需要在A列中的所有非空行中发生。

    我试图使用以下公式:

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

    但它不能按我的意愿工作。我访问互联网的机会有限,因此我无法检查所有网站。你能帮我吗非常感谢。

2 个答案:

答案 0 :(得分:1)

要检查A1是否在C列中,如果B1在D列中(在C列中找到同一行A1 ),那么您需要做以下内容:

=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列中(在C列中找到同一行A1 )

它将返回"找到的负载号"只有两个条件都成立。否则它将返回"未找到加载编号"。

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


更新

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

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

将此公式粘贴到E1时,请务必按 CTRL + Shift + 输入,而不是仅按 Enter key。

答案 1 :(得分:0)

如果我理解,使用公式的传统解决方案是连接您的C和D列数据,然后搜索它。如果您插入新的columnC:

=D2&E2  

复制到适合您可以申请(但在ColumnF而不是ColumnE中)您现有的公式,只需稍加修改:

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

完全取决于哪一行。