我在 sheet1 中有一些特定数据,在 sheet2 中有一些其他数据。
我需要比较 sheet1 中的特定值 (Var1) 并从 sheet2 返回特定值,并返回相同的输出。我成功地用这个公式做到了
=IF(COUNTIF(Sheet2!A:A, A2), "Yes", "No")
工作表1
+------+------+---------+---------+
| var1 | var2 | result1 | result2 |
+------+------+---------+---------+
| | | | |
| abc | 123 | yes | yes |
| | | | |
| bcd | 234 | yes | no |
| | | | |
| cde | 456 | no | blank |
+------+------+---------+---------+
工作表2
+-------+-------+-------+
| List1 | List2 | List3 |
+-------+-------+-------+
| abc | 123 | |
| bcd | | 123 |
| def | | |
+-------+-------+-------+
我需要在 list1 中查找 var1,在 list2 和 list3 中查找 var2
我想比较 Sheet2 中的另一个值(Var2),仅当前一个结果为“是”时,这可以通过 IF 函数轻松实现;但问题是它应该只比较 Sheet2 中特定行的值,这些行应该是 Sheet2 中找到 Var1 的正(+)和负(-)2 行。
我并不熟练掌握 VBA,但我一直在尝试使用 Excel 公式。
答案1
解答这个问题很有趣 :)
使用您的示例,我将这个函数放在C2
('result1'下),并用数组填充它:
=IF(COUNTIF(Sheet2!A:A,A2),"Yes","No")
对于D2
‘result2’:
=IF(C2="No","No",IF(COUNTIF(INDIRECT("Sheet2!C"&MAX((MATCH(A2,Sheet2!A:A)-2),1)&":C"&(MATCH(A2,Sheet2!A:A)+2)),B2),"Yes","No"))
再次,数组填充它,它应该可以工作:)
答案2
您可以使用 OR() 并比较是否有正数和负数。如下所示:
=IF(OR(A1="+";A1="-");"Ok";"")
然后您可以将“Ok”更改为您的公式。
=IF(OR(A1="+";A1="-");=IF(COUNTIF(Sheet1!C:C, A2), "Yes", "No");"")
这就是你需要的吗?
答案3
尝试:
=IF(C2<>"Yes","",IF(COUNTIF(OFFSET(Sheet2!$B$1:$C$5,MAX(0,MATCH(A2,Sheet2!A:A,0)-3),0),B2)>0,"Yes","No"))
我假设:
var1
就像您说的,是一个唯一键。否则,这将仅匹配第一次出现的情况。- 你想
var2
匹配两个都list1
和list2
。否则,您应该将搜索窗口缩小至$B$1:$B$5
。如果右侧有更多列表,只需将列添加到搜索窗口即可。
如果您对其工作原理有任何疑问,请告诉我。