我的数据看起来与此类似
表包含多个行标签标题(堆叠行标签):
|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 |
我正在尝试使用查找公式根据交易的日期和类型检索数据:说明什么是27/01/11卖出价的30%的倍数 任何帮助都将非常感谢!
UPD
必须有一个解决方案,而不添加一个独特的列来查找... Excel 2000有一种方法可以通过使用自然语言公式来实现,正如您在方法2,示例2中的文章中所看到的 - support.microsoft.com/kb/275170
UPD 2
有可能吗?日期不仅会有差距,而且还会跳过一两天......就像在示例中一样
UPD 3
目前发布的解决方案存在问题:
如果查询日期是26/01/2011,公式将返回N / A(在完美的解决方案中,它应返回最接近的匹配(向下舍入到上一个日期) - 即,如果列中没有查找日期然后应返回上一个最近的日期)
堆叠行标题意味着我将行排列成这样的组(日期和类型是行标题)
答案 0 :(得分:4)
如果F1
包含所需的日期,F2
%,F3
“购买”或“卖出”
=INDEX($C:$D,MATCH(F1,$A:$A,0)+IF(F3="sell",1,0),MATCH(F2,$C$1:$D$1,0))
考虑所有三个因素
修改强>
根据您的修改,要获得您想要的内容,您只需要将完全匹配参数从0
更改为1
。来自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))
答案 1 :(得分:1)
假设您的数据在A列中开始,而您的查询日期在单元格F1中,请尝试以下操作:
=INDEX(D:D, MATCH(F1,A:A,0) + 1, 1)
这可以通过查找与日期(MATCH
)匹配的行,将其偏移1来获取卖出行,并使用INDEX
函数从列D中检索值。
答案 2 :(得分:0)
考虑你有从A1开始的值。日期25-01-2011将在A2,27 / 01将在A4等20%,将在C1和30%,将在D1
在F1中查找你想要的查找日期,在G1中查找你想要的百分比(20或30%),在H1(买或卖)中查找你想要的类型
在I1中输入以下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))
答案 3 :(得分:0)
在这些情况下,我发现在数据的左侧包含一个“关键”列很有帮助,这大大简化了公式。在数据的左侧插入一列,并将其设置为日期和买/卖的组合(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)
这种方法的优点是它使公式简单易读