如何根据其他单元格上的数据反映 1 或 0?

How to reflect 1 or 0 based on data on other cells?

在A1:W14范围内,我有发货数据。根据数据,我必须检查 A18:W31 范围内的性能。在 Delivery performance table,Dispatch Column 中,我需要从 Delivery Data table 中获取 dispatch volume。这可以通过进行单元格链接来完成,但考虑到交付性能中的动态数据变化 table 我不能那样做。

基于 SLA 列,性能将相应地反映出来。这里,D-0表示派送日送达。 D+1 为次日发货,D+2 为次日发货。

如果客户的 SLA 是 D-0,并且他们按照 SLA 收到产品,则发货日 D-0 的值将为 1,否则为 0。例如,AAA 的产品于 1 月 1 日发货,AAA 收到根据 SLA 在同一天,因此 D-0 在 1 月 1 日的值为 1(单元格 E22)。在另一个示例中,BBB 的产品数量为 200,并于 1 月 1 日发货。根据 SLA,交货应该在当天完成,但在发货后的第二天(即 D+1)交付。因此 D-0 在 1 月 1 日的值为 0(单元格 E23)。

作为一个例外示例,III 订购的 200 件产品已于 1 月 1 日发货。根据 SLA,订单应在 1 月 2 日 (D+1) 交货。但由于效率和紧迫性,它是在 D-0 上交付的。在这种情况下,性能将为 1.

我正在尝试使用公式或任何自动方式替换该值。要获取电子表格,click here.

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))