2015-01-04 63 views
0

我已经在工作中被问及如何快速验证Excel中的数据列表,但是通过嵌套IF实现过于复杂,所以我试图通过宏来做到这一点。将一个列表中的项目与第二个列表中的相应项目进行比较

位有关的数据背景:

我们开办的课程,并为每门课程有相应的增加,他们不得不采取为好。人们必须选择2门课程,这意味着2个相应的附加组件。

在Excel中每一行,2个疗程是在列F和G,以及相应的插件是在列H和I.

的轻微的问题是,在列H和I中的数据ISN不一定是'正确'的顺序 - 列F中的课程的附加组件可能在一列中的一列中,并且在另一列中的列H中(和列G的附加组件相同)

第二张表中列出了哪些附加组件适用于哪些课程(列A具有课程,列B具有匹配的附加组件)。

突出显示哪些行是正确的,哪些行不正确的最好/最简单的方法是什么?

如果需要,我可以将文件上传到升降梭箱的一小匿名样品,但数据的快速布局是如下:

| 1st Course Choice | 2nd Course Choice | 1st Add-on | 2nd Add-on | Result 
--------------------------------------------------------------------------- 
|  Subject 1  |  Subject 2  | Add-on 1 | Add-on 2 | Correct 
|  Subject 2  |  Subject 1  | Add-on 1 | Add-on 2 | Correct 
|  Subject 3  |  Subject 9  | Add-on 9 | Add-on 3 | Correct 
|  Subject 5  |  Subject 4  | Add-on 1 | Add-on 2 | Error 
|  Subject 8  |  Subject 2  | Add-on 7 | Add-on 8 | Error 
+0

根据什么基础或如何判断哪些条目是正确的,哪些不是?你的例子表格不太清楚。 – 2015-01-04 14:05:14

+0

@PareshJ对不起,忘了补充一点。我已更新问题,以显示文件中有第二张纸,其中列出了每个课程的正确附加组件 – 2015-01-04 14:11:31

+0

看起来附加组件后缀数字需要以便始终匹配课程后缀数字,尽管不一定按照您所说的顺序排列。那是对的吗?如果是这样,看起来你不需要查找表。 – 2015-01-04 15:45:35

回答

2

所需的公式是不是在所有倒胃口如果横的参考表附加组件随附。

enter image description here

在E2的标准公式,

  
=IF(AND(OR(C2=IFERROR(VLOOKUP(A2, $G$2:$H$10, 2, FALSE), IFERROR(VLOOKUP(B2, $G$2:$H$10, 2, FALSE), NA())), D2=IFERROR(VLOOKUP(A2, $G$2:$H$10, 2, FALSE), IFERROR(VLOOKUP(B2, $G$2:$H$10, 2, FALSE), NA()))), OR(C2=IFERROR(VLOOKUP(B2, $G$2:$H$10, 2, FALSE), IFERROR(VLOOKUP(B2, $G$2:$H$10, 2, FALSE), NA())), D2=IFERROR(VLOOKUP(B2, $G$2:$H$10, 2, FALSE), IFERROR(VLOOKUP(B2, $G$2:$H$10, 2, FALSE), NA())))), "Correct", "Error") 
  

必要向下填充。使用IFERROR(自Excel 2007起可用)使功能加倍,如VLOOKUP轻而易举。如果第一个失败,您可以简单地将控制权交给第二个版本的函数。当然,为了解决所有可能性,这些仍然需要翻倍,但不应该有很大的计算负担。

您是否需要额外的条件来确保C列不是D列的重复?

编辑:添加重复检查

检查中既有重复:B和C:d不应该是一个问题,在所有的,因为他们可以被添加到现有AND功能。这里是A:B和C:D的修改。

  
=IF(AND(A2<>B2, C2<>D2, OR(C2=IFERROR(VLOOKUP(A2, $G$2:$H$10, 2, FALSE), IFERROR(VLOOKUP(B2, $G$2:$H$10, 2, FALSE), NA())), D2=IFERROR(VLOOKUP(A2, $G$2:$H$10, 2, FALSE), IFERROR(VLOOKUP(B2, $G$2:$H$10, 2, FALSE), NA()))), OR(C2=IFERROR(VLOOKUP(B2, $G$2:$H$10, 2, FALSE), IFERROR(VLOOKUP(B2, $G$2:$H$10, 2, FALSE), NA())), D2=IFERROR(VLOOKUP(B2, $G$2:$H$10, 2, FALSE), IFERROR(VLOOKUP(B2, $G$2:$H$10, 2, FALSE), NA())))), "Correct", "Error") 
  
+0

谢谢@Jeeped,看起来像它会正常工作。我待在后面才会尝试。检查C和D是否重复要多少工作/复杂? – 2015-01-04 17:48:50

+0

@JordanWall - 请参阅上面的修改 – Jeeped 2015-01-05 01:34:36

相关问题