EXCEL中INDEX函数应用解决?

各位函数大神,请求解决快速匹配表中“班次编码”问题;A列涉及137个代码,图片只列出2个例子代码,B列是下单时段,C列是需要匹配“G-J列”对应代码下单时段的班次编码;例如C2是匹配H2的“ 01P”班次编码。附上文字文本:代码 下单时间 班次编码756A 08:55 公式匹配756AA 09:55 756A 10:56 756AA 11:56 756A 12:56 756AA 13:56 756A 14:57 756AA 15:57 756A 16:57 756AA 17:57 756A 18:58 756AA 19:58 756AA 20:58 序号 代码 班次编码 开始时间 结束时间1 756A 01P 0800 09302 756A 02P 0931 11002 756A 03P 1101 12302 756A 04Pa 1231 14402 756A 04Pb 1441 16202 756A 05Pa 1621 18202 756A 05Pb 1821 19452 756A 06P 1946 21002 756AA 01P 0800 09552 756AA 02P 0956 11252 756AA 03P 1126 13202 756AA 04Pa 1321 14452 756AA 04Pb 1446 16202 756AA 05Pa 1621 18202 756AA 05Pb 1821 19402 756AA 06P 1941 2100

用powerquery很简单:

分别引入两个原始表格到powerquery,并将查询命名为【匹配表】和【原始表】,然后新建一个查询,如下所示

let

    源 = Table.NestedJoin(原始表, {"代码"}, 匹配表, {"编码"}, "匹配表", JoinKind.LeftOuter),

    #"展开的“匹配表”" = Table.ExpandTableColumn(源, "匹配表", {"下单时间"}, {"下单时间"}),

    更改的类型 = Table.TransformColumnTypes(#"展开的“匹配表”",{{"开始时间", type time}, {"结束时间", type time}}),

    已添加自定义 = Table.AddColumn(更改的类型, "是否保留", each if ([开始时间]<=[下单时间] and [下单时间]<=[结束时间]) then "Y" else "N"),

    筛选的行 = Table.SelectRows(已添加自定义, each ([是否保留] = "Y"))

in

    筛选的行

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-12-18
C2输入:

=INDEX(H:H,MIN(IF(($G$2:$G$1000=A2)*(--$I$2:$I$1000<=--TEXT(B2,"hhmm"))*(--$J$2:$J$1000>=--TEXT(B2,"hhmm")),ROW($2:$1000),4^8)))&""
ctrl+shift+回车下拉
第2个回答  2019-12-18
使用vlookup函数,应该会更快一点吧追问

涉及2个条件用Vlookup?呵

追答

根据两列的值来匹配所需列的值:
=IF(I6="","",VLOOKUP(I条件1&条件2,IF({1,0},条件1范围&条件2范围,获取的值),2,0))
=IF(G4="","",VLOOKUP(G4&H4,IF({1,0},$A$4:$A$9&$B$4:$B$9,$C$4:$C$9),2,0))
使用数组函数,写完后,按Ctrl+shift+enter

相似回答