给个excel明细表,如何用函数提取指定范围内的日期?

如图,如何用函数提取当两个表内编号相同时,返回对应的服务日期,如果该日期不在指定范围内则不返回。请大佬列出公式后再解释下公式内的各种数字代表什么,在此叩谢

在指定的日期范围内服务日期是否具有唯一性?下面的公式在存在多个服务日期时返回最先的。如图

L2=IFERROR(INDEX(H$2:H$7,MATCH(1,(D$2:D$7=J2)*(MONTH(H$2:H$7)>3)*(MONTH(H$2:H$7)<7),)),"")

公式解读:

D$2:D$7=J2,编号列与J2相等时得TURE

(MONTH(H$2:H$7)>3,服务日期的月份数大于3,即4月及更后的月份

MONTH(H$2:H$7)<7,服务日期的月份数小于7,即6月及以前的月份

三者相乘,只有编号为J2,且月份数为4-6的行才得到数字1,其他均为0

用MATCH的精确查找,找到数字所在的行在什么什么位置(数据中的第几行),并返回这个行数的数字

INDEX根据MATCH返回的行数,返回H列对应的日期。

如果MATCH找不到数字1,就会返回错误值。INDEX也就只能返回错误值,这时用IFERROR将错误值赋值空(“”)

追问

公式看着没问题,但我代入后都显示空白,office2019版本。

追答

按三键试试 :同时按Ctrl+Shift+Enter三键输入数组公式。因为我的是 Office365,数组公式已无需三键。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2022-06-14
L2=IFERROR(IF(AND(MONTH(VLOOKUP(J2,D:H,5,0))>=4,MONTH(VLOOKUP(J2,D:H,5,0))<=6),VLOOKUP(J2,D:H,5,0),""),"")
解释的话也不难,就是嵌套有点复杂。
IFERROR是有的无返回或错误值,用这个函数将其变成空值;
VLOOKUP是从左侧表查找右侧对应的值;
MONTH是取月份,取出查找到的日期,看下月份是不是在4和6之间;本回答被提问者采纳
第2个回答  2022-06-14

在L2单元格输入公式=IFERROR(TEXT(VLOOKUP(J2,FILTER($D$2:$H$7,($H$2:$H$7>=DATE(2022,4,1))*($H$2:$H$7<=DATE(2022,6,30))),5,0),"yyyy/m/d"),"")

首先用FILTER函数提取符合4月1日到6月30日内的所有记录,再用VLOOKUP去匹配,再用TEXT把匹配过来的日期序数转为正常的日期格式,再用IFERROR把匹配不到显示的错误值屏蔽。

具体操作如下:

帮到您记得点赞或关注哦

追问

这个函数看着漂亮,但我的offce2019不支持FILTER函数,真遗憾

追答

我用的是WPS最新红标免费版,新函数都可以用哦。

相似回答