在MS Excel中查找或如果条件公式

时间:2016-01-26 07:49:44

标签: excel

我需要帮助excel表中的查找公式。我基本上试图找出一行的相应值,其中同一行中的两个条件相遇。让我用他的方式说明一下。如果在A列的范围内找到某个值并且在同一行但在C列中其他某个值相等则返回B列中同一行的值。

表格如下:

Column A      Column B                        Column C 
---------------------------------------------------------
Ahmadaba      Irrigation                      550,041 
Ahmadaba      Livelihood                      18,890 
Ahmadaba      Power                           233,694 
Ahmadaba      Public Building                 64,707 
Ahmadaba      Rural Development               104,381 
Ahmadaba      Transport                       1,044,644 
Ahmadaba      Water Supply & Sanitation       1,156,322 

详细说明;参考上表,如果A栏等于Ahmadaba而C栏等于18,890,那么我应该从B栏获得生计值。

1 个答案:

答案 0 :(得分:1)

到目前为止,资源最少(因此效率最高)的设置是在表中使用一个额外的列,根据A和C列中的条目生成一系列唯一标识符。

因此,如果您的表格当前位于A1:C8(第1行中包含标题),那么您可以使用D列,在D2中输入此公式:

=A2&"|"&C2

(在你的情况下,分隔符可能不是绝对必要的,但一般来说这是一种很好的做法。)

并向下复制到D8

之后,并假设您选择的搜索值,例如" Ahmadaba"和" 18,890"分别位于E1F1中,所需公式为:

=INDEX(B2:B8,MATCH(E1&"|"&F1,D2:D8,0))

请注意,此设置的一个优点是,您还可以使用上述更灵活的变体,不仅可以引用8行,还可以引用整个列,即:

=INDEX(B:B,MATCH(E1&"|"&F1,D:D,0))

几乎不会损害计算性能。

如果由于某种原因,您无法在表中使用其他列来执行这些连接,那么另一种解决方案是:

=LOOKUP(1,0/((A2:A8=E1)*(C2:C8=F1)),B2:B8)

但是,应该指出的是,通过这种设置,Excel必须执行的计算量与所引用范围的大小成正比。因此,与INDEX / MATCH结构不同,此处使用灾难性概念:

=LOOKUP(1,0/((A:A=E1)*(C:C=F1)),B:B)

迫使Excel计算超过200万个单元格。

此致