EXCEL返回满足同一行2条件的值

日期 班次 时间 价格
2010-10-31 1 10:30:00 1
2010-10-31 2 11:00:00 2
2010-10-31 3 11:30:00 5
2010-10-31 4 12:00:00 8
2010-10-31 5 12:30:00 11
2010-10-31 6 13:00:00 14
2010-10-31 7 13:30:00 17
2010-10-31 8 14:00:00 20
2010-10-31 9 14:30:00 23
2010-10-31 10 15:00:00 2 6
2010-10-31 11 15:30:00 29
2010-10-31 12 16:00:00 32
2010-10-31 13 16:30:00 35
2010-10-31 14 17:00:00 38
2010-10-31 15 17:30:00 41
2010-10-31 16 18:00:00 44
2010-10-31 17 18:30:00 47
列子如上有很多数据,如在表2的A1上上填日期,A2上填班次,
A3该用什么公式,可以提取符合A1,A2要求,对应的价格?
问题似乎表达的不够清楚,我补充一下,
上面的数据是表1,
在表2中,满足日期,班次条件的,返回同一行的价格D。
如,表2里面。
A1=2010-10-31 A2=16 则A3返回 44 值
VLOOKUP函数我会用,就是2个条件的,怎么处理!?

把两条件连接起来用。

A3=INDEX(Sheet1!D2:D18,MATCH(A1&A2,Sheet1!A2:A18&Sheet1!B2:B18,0))

公式输入后按ctrl+shift+enter结束。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-10-31
分析:因为你要在表2的A1里A2里输入值,让A3里自动出现引用值,所以不是按列逐行引用,不能用两个IF做成两个VLOOKUP的嵌套。在一个固定的单元格里引用,VLOOKUP在找到第一个符合条件的值后,就不往下找了。它不会在不满足第二条件后,再回头接着第一个条件下上次查询的位置继续往下找。而返回#N/A。
所以,直道不行就绕一下弯儿。在不能直接攻城的情况,不如打援或者曲线救国吧!
.......................................

我的思路,供研究吧!
1.在表1里日期列的前面插入一个列,作为辅导列,那新出现一个A列,其它顺序后移为B、C、D、E列,在A列A1里输入=CONCATENATE(B1,C1),并下拉!就是将这两个单元格里的数据日期和班次合为一个文本值!供VLOOKUP使用!
...在不能直接用公式的情况,使用辅助列,是个相当不错的想法!
.....本人在网上不厌其烦地进行了推荐!
2.为了美观,将A列隐藏!!!
3.在表2中干活吧。你当然就会了,但我还是说完吧。
A3=VLOOKUP(CONCATENATE(A1,A2),Sheet1!A1:D12,4,TRUE)
你在表2的A1上填上日期,A2上填上班次,
A3就会变魔术了!哈哈......
解决问题是一种快乐!你不笑吗?哈哈

========================================
您的问题==我的课题 奉献知识==辉煌生命
黑龙江省 张志晨
========================================
第2个回答  2010-10-31
如果需要核对多个数据。。。
使用1,0的格式进行核对。。
在sheet2表中,A1是2010-10-31日期,B1是班次,那么C1输入:
=LOOKUP(1,0/(sheet1!A1:A400&sheet1!B1:B400=A1&B1),sheet1!D1:D400))
详细解释下。。
sheet1!A1:A400&sheet1!B1:B400表示:
两个条件同时满足,才返回值。。
A1&B1表示要满足的条件。。这两个单元格在sheet2中
sheet1!D1:D400表示,随便返回对应的价格一列,
第3个回答  2010-10-31
话说,A1、B1、C1、D1是同一行吧?A1、A2、A3是一列才对。

按照你贴出来的格式,写了一下:
=IF(AND(YEAR(A1)=2010,MONTH(A1)=10,DAY(A1)=31,B1=1),D1,"")

注:为了规避数据格式不匹配的问题,我把年月日拆分写了;如果你能搞定数据格式,可简化公式。
第4个回答  2010-10-31
A3输入:
=sumproduct((sheet1!a1:a20=a1),(sheet1!b1:b20=a2),(sheet1!d1:d20))