Column1 Column2 Column3 Column4
A 0 C 100%
B 0 B
C ok D 100%
D ok 100%
E no A
F ok F 100%
我想创建公式以使第2列从column1获取值并在第3列中查找它,如果它没有找到它,写入no;如果找到该值,则在第4列中查找值,如果为100%,则写入ok,如果未找到100%,则写入0。
我希望你帮忙..
答案 0 :(得分:1)
您可以使用MATCH
检查第1列中的值是否在第3列(MATCH
在匹配时返回一个数字,否则返回错误),然后VLOOKUP
到获取百分比,全部在IF
语句中:
=IF(ISNUMBER(MATCH(A2, C:C, 0)), IF(VLOOKUP(A2, C:D, 2, 0)=1, "ok", 0), "no")
以上假设第4列中的值是格式化为百分比的数值。
VLOOKUP
的工作原理如下:
VLOOKUP(lookup_value, table_array, col_index_num, [range_lookup])
lookup_value
是您正在搜索的价值。
table_array
是执行搜索的表格,也是从中提取结果的表格。将在lookup_value
的第一列中搜索table_array
。结果将从col_index_num
中的table_array
列中提取。
[range_lookup]
将决定搜索是精确搜索还是近似搜索。
在上面的公式中,VLOOKUP
查找A2中的值到C列,并从表C:D中的第二列(即从D列)返回相应的值,并确保这是精确搜索(0表示精确,1表示近似)。
根据与OP的讨论,结果是Column1和Column3是3个需要检查的独立列。由于MATCH
和VLOOKUP
一次只能检查1列(除非求助于数组调用),COUNTIFS
可能更合适:
=IF(COUNTIFS(Sheet3!$B$13:$B$289,E5,Sheet3!$C$13:$C$289,F5,Sheet3!$D$13:$D$289,G5)=0,"no",IF(SUMIFS(Sheet3!N$13:N$289,Sheet3!$B$13:$B$289,E5,Sheet3!$C$13:$C$289,F5,Sheet3!$D$13:$D$289,G5)=1,"ok",0))
以上公式是我所提出的,我认为它适用于所提供的样本数据。
答案 1 :(得分:1)
我建议使用countif功能。如果您将数据格式化为带有标题" Column1"," Column2"等的表格,那么您可以在Column2中使用这样的公式
=IF(COUNTIF([Column3],[@Column1])>0,IF([@Column4]=1,"ok",0),"no")
我们正在做的是计算第三列中的第一列实例的数量(让我们说" A")。如果我们找到多个实例(> 0),则此表达式的计算结果为true。
=IF(COUNTIF([Column3],[@Column1])>0,
这将我们带到第二个" IF"声明我们检查匹配我们的行是否等于1(100%的百分比),如果是,我们将" ok"在我们的牢房里。如果不是这样(但我们确实找到了对#34; A"的引用),那么我们将0放在我们的单元格中。
=IF(COUNTIF([Column3],[@Column1])>0,IF([@Column4]=1,"ok",0
当然,如果我们没有找到" A"首先,我们只是把#34;没有"在我们的牢房里。
=IF(COUNTIF([Column3],[@Column1])>0,IF([@Column4]=1,"ok",0),"no")
如果这是一个简单的范围,那么Column2中第一个单元格的公式看起来就是这个
=IF(COUNTIF($C$2:$C$7,A2),IF(D2=1,"ok",0),"no")
Cell 2看起来像这样......
=IF(COUNTIF($C$2:$C$7,A3),IF(D3=1,"ok",0),"no")
等等,如果" 100%"在最后一列中存储为文本,然后您可以设置第二个" IF"声明寻找文本" 100%"而不是数字1。
编辑:我似乎略微误解了这个问题。我将上面的原始答案留在上面以供参考。以下是修订后的公式,可以提供正确的结果。
表:
=IF(COUNTIF([Column3],[@Column1]),IF(COUNTIFS([Column3],[@Column1],[Column4],1)>0,"ok",0),"no")
如此迅速地覆盖变化。基本上,通过使用countifs,我们现在计算所有与我们的匹配相等的单元格(让我们说" A")并且在最后一列中也有100%。如果这些数量大于0,我们将" ok",否则为0。
IF(COUNTIFS([Column3],[@Column1],[Column4],1)>0,"ok",0)
范围:
=IF(COUNTIF($C$2:$C$7,A2),IF(COUNTIFS($C$2:$C$7,A2,$D$2:$D$7,1)>0,"ok",0),"no")
当然,这可能不如VLOOKUP那么优雅,但希望它至少提供了解决问题的另一种方法。
参考文献:excel if,excel countif,excel operators,excel tables,excel countifs
答案 2 :(得分:0)
尝试这个:
=IF(IFERROR(VLOOKUP(A2,C:C,1,0),1)=1,"NO",IF(VLOOKUP(A2,C:D,2,0)=1,"OK",0))