提问人:Kevin T 提问时间:8/31/2023 更新时间:8/31/2023 访问量:44
尝试根据 4 个条件从表中返回值 - 不完全匹配
Trying to return values from a table based on 4 criteria - not exact matches
问:
我正在尝试根据商品的市场、重量、高度、长度和宽度退还运费。
我尝试使用具有多个条件的索引匹配,但未能成功确保它考虑了所有条件。
问题是重量和尺寸不会完全匹配,它们被归类为某些批次。
如果它可以在数组中工作,我会使用当前的公式进行管理,但由于它有 ifs 和 ands,所以它必须在每一行上。
这是一个示例电子表格的链接,其中一张表格包含我当前使用的重量和尺寸数据的计算。另一个是表格中列出的运费。
https://docs.google.com/spreadsheets/d/1ybaS8KYUfiDkvG-5wGcFN3XsyC-SLfZrwChV-xNKMNk/edit?usp=sharing
这是我目前正在使用的公式,它工作正常,但运行速度有点慢。
=IFNA(
IFS(AND(E3<=20,F3<=15,D3<=1,C3<=80),
IFS('MAIN TEMPLATE'!$F$1="UK",0.86,
'MAIN TEMPLATE'!$F$1="DE",1.19,
'MAIN TEMPLATE'!$F$1="FR",1.6,
'MAIN TEMPLATE'!$F$1="IT",2.01),
AND(E3<=33,F3<=23,D3<=2.5),
IFS(C3<=60,
IFS('MAIN TEMPLATE'!$F$1="UK",1.03,
'MAIN TEMPLATE'!$F$1="DE",1.38,
'MAIN TEMPLATE'!$F$1="FR",1.87,
'MAIN TEMPLATE'!$F$1="IT",2.12),
C3<=210,
IFS('MAIN TEMPLATE'!$F$1="UK",1.21,
'MAIN TEMPLATE'!$F$1="DE",1.58,
'MAIN TEMPLATE'!$F$1="FR",2.54,
'MAIN TEMPLATE'!$F$1="IT",2.38),
C3<=460,
IFS('MAIN TEMPLATE'!$F$1="UK",1.59,
'MAIN TEMPLATE'!$F$1="DE",1.88,
'MAIN TEMPLATE'!$F$1="FR",3.32,
'MAIN TEMPLATE'!$F$1="IT",3.07)),
AND(E3<=33,F3<=23,D3<=4),
IFS('MAIN TEMPLATE'!$F$1="UK",1.91,
'MAIN TEMPLATE'!$F$1="DE",2.14,
'MAIN TEMPLATE'!$F$1="FR",3.64,
'MAIN TEMPLATE'!$F$1="IT",3.12),
AND(E3<=33,F3<=23,D3<=6),
IFS('MAIN TEMPLATE'!$F$1="UK",2.09,
'MAIN TEMPLATE'!$F$1="DE",2.51,
'MAIN TEMPLATE'!$F$1="FR",4.04,
'MAIN TEMPLATE'!$F$1="IT",3.26),
AND(E3<=35,F3<=25,D3<=12),
IFS(C3<=150,
IFS('MAIN TEMPLATE'!$F$1="UK",2.38,
'MAIN TEMPLATE'!$F$1="DE",3.02,
'MAIN TEMPLATE'!$F$1="FR",4.33,
'MAIN TEMPLATE'!$F$1="IT",3.8),
C3<=400,
IFS('MAIN TEMPLATE'!$F$1="UK",2.51,
'MAIN TEMPLATE'!$F$1="DE",3.11,
'MAIN TEMPLATE'!$F$1="FR",4.74,
'MAIN TEMPLATE'!$F$1="IT",4.06))))
答:
0赞
Martín
8/31/2023
#1
这是我的建议。它使用 BYROW 来应用于您范围内的所有行。然后使用 COUNTA,它发现如果行为空,则不会计算。
使用 INDEX 和 XMATCH,我将费用范围限制在国家/地区的列中,并使用 FILTER 和第二个 BYROW 比较 A-D 列的每个值,以查看它们是否小于或等于费用参数。然后,使用 MIN,它只会找到可以包含套餐的所有费用的最小值:
=BYROW(A2:D,LAMBDA(r,IF(COUNTA(r)=0,,
MIN(FILTER(INDEX('Shipping table'!$E$2:$I$9,,XMATCH('MAIN TEMPLATE'!$F$1,'Shipping table'!$E$1:$I$1)),
BYROW('Shipping table'!$A$2:$D$9,LAMBDA(each,PRODUCT(INDEX(--(each>=r))))))))))
评论
0赞
Kevin T
9/3/2023
完美的解决方案。谢谢
0赞
Martín
9/3/2023
我很高兴它很有用!
评论