Excel 2010中的二维查找

我有一个类似这样的数据

表格包含多个行标签标题(堆叠行标签):

|20% |30% | |25/01/11 |buy |1 |1.1 | | |sell |0.8 |0.9 | |27/01/11 |buy |1.02 |1.03 | | |sell |1.1 |1.2 | |01/02/11 |buy |1.05 |1.07 | 

我正在尝试使用查找公式来检索基于交易date和types的数据:在27/01/11上,卖出30%的乘数是多less?我非常感谢任何帮助!

UPD

必须有一个解决scheme,而不添加一个唯一的列来查找… Excel 2000有一种方法,通过使用自然语言的公式,你可以从方法2,例如2 – support.microsoft的.com / KB / 275170

UPD 2

有没有可能? date不但会有差距,而且还会跳过一两天……就像在这个例子中一样

UPD 3

在这里输入图像说明

到目前为止发布的解决scheme存在一些问题:

如果查找date是26/01/2011,公式将返回N / A(在完美的解决scheme中,它应该返回最接近的匹配(向下舍入到前一个date) – 即如果查找date在列A中不可用,则以前最近的date应该返回)

堆栈的行标题意味着我有行排列成这样的组(date和types是行标题) 在这里输入图像说明

如果F1包含必要的date, F2 %, F3 “买入”或“卖出”

 =INDEX($C:$D,MATCH(F1,$A:$A,0)+IF(F3="sell",1,0),MATCH(F2,$C$1:$D$1,0)) 

考虑到所有三个因素

编辑

根据你的编辑,得到你想要的只需要改变完全匹配参数从01 。 从Excel帮助文件

Match_Type:1或省略MATCH查找小于或等于lookup_value的最大值。 lookup_array参数中的值必须按照升序排列

所以公式成为

 =INDEX($C:$D,MATCH(F1,$A:$A,1)+IF(F3="sell",1,0),MATCH(F2,$C$1:$D$1,0)) 

另外,如果您想要对%值做同样的操作,请对另一个MATCH执行相同的操作

 =INDEX($C:$D,MATCH(F1,$A:$A,1)+IF(F3="sell",1,0),MATCH(F2,$C$1:$D$1,1)) 

假设您的数据在列A中开始,您的查找date在单元格F1中,请尝试以下操作:

 =INDEX(D:D, MATCH(F1,A:A,0) + 1, 1) 

这是通过查找匹配date( MATCH )的行,将其偏移1以获得销售行,并使用INDEX函数从列D检索值。

考虑你有从A1开始的值。 date25-01-2011将在A2,27/01将在A4等20%,将在C1和30%,将在D1

在F1中查找你想要的date,在G1中查找你想要的百分比(20或30%),查找你想要的H1(买或卖)

在I1中input下面的formuka。 你有结果。

 =INDEX(C2:D6,IF(H1="buy",MATCH(F1,A2:A6,0),IF(H1="sell",MATCH(F1,A2:A6,0)+1)),MATCH(G1,C1:D1,0)) 

在这些情况下,我发现在数据左侧包含一个“关键”列是很有帮助的,这使得公式简化了很多。 在数据的左侧插入一列,使其成为date和买/卖(A2 = B2&“_”&C2)的组合:

  |20% |30% | 25/01/11_buy |25/01/11 |buy |1 |1.1 | 25/01/11_sell | |sell |0.8 |0.9 | 27/01/11_buy |27/01/11 |buy |1.02 |1.03 | 27/01/11_sell | |sell |1.1 |1.2 | 01/02/11_buy |01/02/11 |buy |1.05 |1.07 | 

然后,只要做一个vlookup +匹配:

 =VLOOKUP({needed date and type}, A1:E6, MATCH({needed %}, A1:E1,0),0) 

这种方法的优点是保持公式简单易读