在A1:W14的范围内,我有交付数据。根据数据,我必须检查在A18:W31范围内的性能。在传递性能表Dispatch列中,我需要从传递数据表中获取分派卷。这可以通过进行单元链接来完成,但是考虑到交付性能表中的动态数据更改,我无法做到这一点。
基于SLA列,将相应地反映性能。在这里,D-0是指派送日的交货.D+1是第二天的调度,D+2是第二天的调度。
如果客户的SLA为D-0,并且他们按照SLA接收产品,则D0在分派日的值将为1其他0。例如,1月1日发运的AAA产品和AAA在同一天接收到的SLA,因此1月1日的D-0值为1(单元E22)。在另一个例子中,BBB的产品数量为200辆,按照SLA的规定,在1月1日发货,交货时间应该在同一天,但在第二天交货(即D+1)。因此1月1日的D-0值为0(细胞E23)。
作为一个例外的例子,III的订购量200单位是在1月1日按照SLA发送的,订单应该在1月2日(D+1)交付。但由于效率和紧迫性,它是在D-0上交付的。在这种情况下,性能将为1。
我试图用公式或任何自动化的方法来替换这个值。要获得电子表格,单击此处。

发布于 2022-05-28 00:15:49
E22:
=ARRAYFORMULA(SPLIT(REPT(" ×", REGEXEXTRACT($C5:$C14, "\d+"))&
IF(TRIM(FLATTEN(QUERY(TRANSPOSE(IFNA(VLOOKUP(IF((1*REGEXEXTRACT($C5:$C14, "\d+"))>=
SEQUENCE(1, 4, 0), ROW(D5:D14)&"×"&D5:D14&"×"&SEQUENCE(1, 4, 0)+D1, ),
FLATTEN(IF(FILTER(D5:$W14, D3:$W3="delivery")="",,
FILTER(ROW(D5:D14)&"×"&D5:$W14&"×"&D1:$W1, D3:$W3="delivery"))), 1, 0))),,
9^9)))="", 0, 1), "×", 1))J22:
=ARRAYFORMULA(SPLIT(REPT(" ×", REGEXEXTRACT($C5:$C14, "\d+"))&
IF(TRIM(FLATTEN(QUERY(TRANSPOSE(IFNA(VLOOKUP(IF((1*REGEXEXTRACT($C5:$C14, "\d+"))>=
SEQUENCE(1, 4, 0), ROW(H5:H14)&"×"&H5:H14&"×"&SEQUENCE(1, 4, 0)+H1, ),
FLATTEN(IF(FILTER(H5:$W14, H3:$W3="delivery")="",,
FILTER(ROW(H5:H14)&"×"&H5:$W14&"×"&H1:$W1, H3:$W3="delivery"))), 1, 0))),,
9^9)))="", 0, 1), "×", 1))等。

最新情况:
=ARRAYFORMULA(SPLIT(REPT(" ×", REGEXEXTRACT($C5:$C14, "\d+"))&
IF(TRIM(FLATTEN(QUERY(TRANSPOSE(IFNA(VLOOKUP(IF((1*REGEXEXTRACT($C5:$C14, "\d+"))>=
SEQUENCE(1, 4, 0), ROW(D5:D14)&"×"&D5:D14&"×"&SEQUENCE(1, 4, 0)+D1, ),
FLATTEN(IF(FILTER(D5:$W14, D3:$W3="delivery")="",,
FILTER(ROW(D5:D14)&"×"&D5:$W14&"×"&D1:$W1, D3:$W3="delivery"))), 1, 0))),,
9^9)))="", 0&REPT(" ×", VLOOKUP(ROW(C5:C14)&"×"&F5:F14, SPLIT(FLATTEN(IF(FILTER(D5:$W14, D3:$W3="delivery")="",,
FILTER(ROW(D5:D14)&"×"&D5:$W14&"¤"&D1:$W1, D3:$W3="delivery"))), "¤"), 2, 0)-D1)&1, 1), "×", 1))

https://stackoverflow.com/questions/72411569
复制相似问题