2015-04-17 37 views
-1

各种值我必须创建宏,其将:搜索并比较使用VBA

  1. 从小区A1获取值搜索中列此值C.
  2. 如果在单元中的值A1存在于列C,宏需要将单元格B1中的值与列D中的值进行比较。
  3. 如果单元格A1中的值存在于列C中并且单元格B1中的值存在于列D中,则会查找“找到值“应该出现在单元格E1中。

上述需要发生的所有非空行A列中

我试着用下面的公式:

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

但它不工作,因为我想要的。我限制访问互联网,所以我无法检查所有网站。你能帮我吗?非常感谢。

回答

1

要检查是否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 + 输入而不是只按输入 ke年。

+0

好,所以如果两个条件都是真的,那么从逻辑的角度来看,IF是TRUE。但让我解释一下。例如:在A列中,我有列B中的姓名,我有电话号码。我想确定列A和列B的值是否与列C和列D的值匹配。我可以在C列中找到Samntha,但这并不意味着在列D上找到的Samantha的电话将在列中反驳到Samantha C.在你的解释中,这两个条件都是真的,因为这两个值都可以在某处找到(例如,Samantha可以在C1460行找到,而她的手机在D13) – LukeJ

+0

确定它在文件开头的许多行中工作,但是稍后停止。 – LukeJ

+0

我已经更新了答案中的代码。正在处理你的配方。那只有列选择了138行。我已经包括整个列现在 – slayernoah

0

如果我明白了,带公式的常规解决方案是连接C和D列数据,然后搜索它。如果你插入一个新columnC有:

复制下来,以适应您可以应用(但在ColumnF而非ColumnE说)你现有的公式,只有轻微的修改:

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

受到相当什么在哪一行。

+1

谢谢。这是一种想法。但是我需要一些防止不熟悉Excel的人做出错误的事情。这就是为什么我需要宏观。我们有很多这样的文件,有上千行。 – LukeJ