Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 如何创建公式:如果等于另一个值,则从列中查找值_Excel_Excel 2007_Excel Formula - Fatal编程技术网

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

Excel 如何创建公式:如果等于另一个值,则从列中查找值,excel,excel-2007,excel-formula,Excel,Excel 2007,Excel Formula,我想创建一个公式,使第2列从第1列获取值,并在第3列中查找它。如果没有找到,请写“否”;如果找到该值,请在第4列中查找该值(如果为100%),写入ok,如果未找到100%,则写入0 我希望你能帮忙 您可以使用MATCH检查第1列中的值是否在第3列中(MATCH在有匹配时返回一个数字,否则返回一个错误),然后VLOOKUP获取百分比,所有这些都在if语句中: Column1 Column2 Column3 Column4 A 0 C 100% B 0

我想创建一个公式,使第2列从第1列获取值,并在第3列中查找它。如果没有找到,请写“否”;如果找到该值,请在第4列中查找该值(如果为100%),写入ok,如果未找到100%,则写入0


我希望你能帮忙

您可以使用
MATCH
检查第1列中的值是否在第3列中(
MATCH
在有匹配时返回一个数字,否则返回一个错误),然后
VLOOKUP
获取百分比,所有这些都在
if
语句中:

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%
以上假设第4列中的值是以百分比形式格式化的数值


VLOOKUP
的工作原理如下:

=IF(ISNUMBER(MATCH(A2, C:C, 0)), IF(VLOOKUP(A2, C:D, 2, 0)=1, "ok", 0), "no")
lookup\u value
是您正在搜索的值

table_array
是执行搜索的表,也是从中提取结果的表。将在
表格数组的第一列中搜索
查找值
。结果将从
表数组
中的
col\u index\u num
th列中提取

[range\u lookup]
将决定搜索是精确搜索还是近似搜索

在上述公式中,
VLOOKUP
将A2中的值查找到C列,并从表C:D的第二列(即D列)返回相应的值,并确保这是一个精确搜索(0表示精确,1表示近似)


根据与OP的讨论,第1列和第3列是需要检查的3个单独的列。由于
MATCH
VLOOKUP
一次只能检查一列(除非求助于数组调用),
COUNTIFS
可能更合适:

VLOOKUP(lookup_value, table_array, col_index_num, [range_lookup])

上面的公式就是我提出的,我相信它适用于提供的样本数据。

我建议使用countif函数。若将数据格式化为标题为“Column1”、“Column2”等的表,则可以在Column2中使用类似的公式

=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))
我们所做的是计算第三列中第一列(比如“A”)的实例数。如果我们找到多个实例(>0),则该表达式的计算结果为true

=IF(COUNTIF([Column3],[@Column1])>0,IF([@Column4]=1,"ok",0),"no")
这将我们带到第二个“IF”语句,在这里我们检查与我们匹配的行是否等于1(百分比为100%),如果是真的,我们将“ok”放在单元格中。如果这不是真的(但我们确实找到了对“a”的引用),那么我们在单元格中输入0

=IF(COUNTIF([Column3],[@Column1])>0,
当然,如果我们一开始没有找到“A”,我们就在牢房里放“不”

=IF(COUNTIF([Column3],[@Column1])>0,IF([@Column4]=1,"ok",0
如果这是一个简单的范围,那么第2列中第一个单元格的公式如下所示

=IF(COUNTIF([Column3],[@Column1])>0,IF([@Column4]=1,"ok",0),"no")
第二单元看起来像这样

=IF(COUNTIF($C$2:$C$7,A2),IF(D2=1,"ok",0),"no")
等等,等等。如果“100%”作为文本存储在最后一列中,那么您可以将第二个“If”语句设置为查找文本“100%”,而不是数字1

编辑:我似乎有点误解了这个问题。我已经留下了我的原始答案供参考。以下是经过修订的公式,将提供正确的结果

表:

=IF(COUNTIF($C$2:$C$7,A3),IF(D3=1,"ok",0),"no")
如此迅速地覆盖变化。基本上,通过使用countifs,我们现在可以计算所有与我们匹配的单元格(比如“A”),并且在最后一列中也有100%的单元格。如果这些的计数大于0,我们将“确定”,否则为0

=IF(COUNTIF([Column3],[@Column1]),IF(COUNTIFS([Column3],[@Column1],[Column4],1)>0,"ok",0),"no")
范围:

IF(COUNTIFS([Column3],[@Column1],[Column4],1)>0,"ok",0)
当然,这可能没有那么优雅,但希望它至少提供了一种解决问题的替代方法

参考资料:,

试试这个:


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

我不理解VLOOKUP之后的公式。什么是C:D???是第3列和第4列吗?因为我在处理不止一张表,所以公式是:=IF(ISNUMBER(匹配(G384,Sheet3!D:D,0)),IF(VLOOKUP(G384,Sheet3!D:D:Sheet3!N:N,2,0)=1,“ok”,0),“no”),但它给我0…它应该给我ok,你能告诉我为什么吗??公式有问题吗。在您所附的样本工作簿中,它工作正常,但在我的情况下,没有。谢谢Jerry。。现在一切正常。但我想知道你为什么把VLOOKUP的2号改成11号谢谢你Jerry。最后一个问题,如果我需要公式匹配2次。第一个:匹配(G384,Sheet3!D:D,0)第二个:匹配(F384,Sheet3!C:C,0)然后VLookup相同..当我使用时:=IF(和(ISNUMBER(匹配(G384,Sheet3!D:D,0),ISNUMBER(匹配(F384,Sheet3!C:C,0)),IF(VLookup(G384,Sheet3!D:N,11,0)=1,“ok”,0),“no”)这给了我一个错误:你为这个函数输入了太多的参数。当我使用第二个函数时,效果不好,因为结果总是可以的,即使N列是空的,也不是100%。从你答案的第一个链接:如果为FALSE,VLOOKUP将只找到一个精确匹配。在这种情况下,表_数组第一列中的值不需要排序。"此外,您不能使用
D2=1
,因为相应的值不一定直接位于A列中的值的右侧。@Jerry,是的,我明白了,现在,我为VLOOKUP上的误导性声明道歉,并将编辑我的帖子。很抱歉,我也误解了100%的功能,我没有仔细检查我的答案。W我会编辑的。@p0werenner,谢谢你的鼓励,很抱歉我的回答有点不对劲:-)@StephenH谢谢你的解释,但仍然不起作用。
=IF(COUNTIF($C$2:$C$7,A2),IF(COUNTIFS($C$2:$C$7,A2,$D$2:$D$7,1)>0,"ok",0),"no")