我需要帮助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栏获得生计值。
答案 0 :(得分:1)
到目前为止,资源最少(因此效率最高)的设置是在表中使用一个额外的列,根据A和C列中的条目生成一系列唯一标识符。
因此,如果您的表格当前位于A1:C8
(第1行中包含标题),那么您可以使用D列,在D2
中输入此公式:
=A2&"|"&C2
(在你的情况下,分隔符可能不是绝对必要的,但一般来说这是一种很好的做法。)
并向下复制到D8
。
之后,并假设您选择的搜索值,例如" Ahmadaba"和" 18,890"分别位于E1
和F1
中,所需公式为:
=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万个单元格。
此致