如何创建公式:如果等于另一个值,则从列中查找值

时间:2014-03-31 06:57:39

标签: excel excel-2007 excel-formula

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。

我希望你帮忙..

3 个答案:

答案 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个需要检查的独立列。由于MATCHVLOOKUP一次只能检查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 ifexcel countifexcel operatorsexcel tablesexcel countifs

答案 2 :(得分:0)

尝试这个:

=IF(IFERROR(VLOOKUP(A2,C:C,1,0),1)=1,"NO",IF(VLOOKUP(A2,C:D,2,0)=1,"OK",0))