Excel如何在一个数据表中提取,同时满足两个条件不重复的多个值,使用函数

具体表格如下,第一个是数据基础表,第二个是需要提取出的表。
第一个表基础数据
单位 周数 线路名称
单位1 1 线路123
单位2 1 线路321
单位1 1 线路124
单位1 1 线路123
单位1 2 线路123
表二中输入要查看单位,周数,自动选出符合的不重复线路,例如 输入要查看的单位1,周数1
单位 周数 线路
单位1 1 线路123
单位1 1 线路124

用上图给你演示一下,不在同一张工作表中的话,意思是一样的。

可以用VLOOKUP和MATCH函数的组合:

=IFERROR(VLOOKUP(A1,F1:H4,3,MATCH(B1,G1:G4,0)),"")

输入完以上公式后,按Ctrl+Shift+Enter,形成最终的公式:

{=IFERROR(VLOOKUP(A1,F1:H4,3,MATCH(B1,G1:G4,0)),"")}

有以下3个公式都可以实现这个功能:

1:{=IFERROR(VLOOKUP(A1,F1:H4,3,MATCH(B1,G1:G4,0)),"")}

2:{=IFERROR(VLOOKUP(A1&B1,IF({1,0},F:F&G:G,H:H),2,0),"")}

3:{=IFERROR(INDEX(H:H,MATCH(A1&B1,F:F&G:G,0)),"")}

相对来说,就我个人使用,感觉第1个公式更好一点,当查找单元格没有填写内容时,返回值不会为0,其他两个都会返回0,强迫症和有别的需求时,很不方便,可能就需要再用其它函数想办法把0给去除了,目前没去研究具体的去除方法,所以,我就用的第1个公式去处理这种需求的。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-01-04
在Sheet2的C4单元格中输入公式
=INDEX(Sheet1!E:E,SMALL(IF((Sheet1!D$3:D$30=A4)*(Sheet1!B$3:B$30=B4)),ROW($3:$30),4^8),ROW(A1)))&""
公式输入结束后按【组合键】确认,再将公式下拉填充。追问

公式不对吧……提示公式错误

追答

可能有如下两个原因:
1、公式输入结束后应同时按【Ctrl+Shift+Enter】三键确认,你未按要求做到——如果是,改过来就行。
2、你的数据源工作表的名称不是Sheet1而是其他的——如果是,改过来就行。

追问

这两个我都知道,公式最后都没有括号,而且括号多了吧

追答

左括号和右括号各7个——一个不多,一个不少——最后有连续3个括号!

追问

大神我哭了真的不行。
=index(停运明细表!e:e,small(if((停运明细表!b3:b18=$b4)*(停运明细表!d3:d15=$a4)),row($3:$30),4^8),row(a1)))&""
括号)有八个……还有为啥最后有个&""

追答

=index(停运明细表!e:e,small(if((停运明细表!b3:b30=$b4)*(停运明细表!d3:d30=$a4),row($3:$30),4^8),row(a1)))&""

本回答被网友采纳
第2个回答  2019-01-04
说的太笼统,通常情况下按你的描述应该使用sumproduct函数,具体的还需要看到图片实例才能判断。追问

具体传上去了

追答

没看明白,你得具体说下,哪个单元格的结果需要满足什么条件。

追问

例如我要查看单位1,第一周有那些线路,第二个表,自动生成满足单位1,第一周的线路,提取出线路123,线路134。另一个线路123因为于前面重复不提取。
表二变成
单位 周数 线路
单位1 1 线路123
单位1 1 线路124

第3个回答  2019-01-04
可选用以下两种方法:
1、用LOOKUP函数配合有关条件实现。
示例公式:
=LOOKUP(0,0/((sheet2!A$1:A$100=A1)*(sheet2!B$1:B$100=B1)),sheet2!C$1:C$100) 该公式“在SHEET2中查找A列B列与本表A列B列对应相同的C列值”。
其中:LOOKUP函数返回向量或数组中的数值,其语法形式有向量和数组两种,本例使用了向量形式。
向量形式的语法是:
LOOKUP(lookup_value,lookup_vector,result_vector) 参数Lookup_value为函数在第一个向量中所要查找的数值,Lookup_vector和result_vector分别为第一向量查找区域和第二向量结果区域,它们是只包含一行或一列的区域。
2、用VLOOKUP函数与IF({1,0}配合实现。
示例公式:
=VLOOKUP(A1&B1,IF({1,0},SHEET2!A$1:A$100&SHEET2!B$1:B$100,SHEET2!C$1:C$100),2,)
其中:IF({1,0},SHEET2!A$1:A$100&SHEET2!B$1:B$100,SHEET2!C$1:C$100)建立一个包含两列数据的内在数组,第一列为A列与B列值同行合并结果,第二列为C列值。本回答被网友采纳
相似回答