我有一个服装产品列表,我想根据两个标准为每个产品分配一个折扣码。
A列是产品描述,B列是服装季节,C列是应该生成折扣代码的地方。然后我有一个表格,其中有折扣代码的规则:季节在F列,产品类型在G列,折扣代码在H列。这是电子表格:https://docs.google.com/spreadsheets/d/1zwjjs55BFBtKYJdoznsjXQXGDRWpUs7lQ5lm2tnuUR4/edit?usp=sharing
因此,如果一件产品是夏季t恤,那么它应该被赋予折扣码";AAA";。如果产品与此不匹配,那么我想继续向下查看折扣代码表,直到某个季节和产品类型组合匹配为止。折扣代码需要按照折扣代码表的严格顺序应用。
我可以通过使用IFS公式来实现这一点,但这需要为我添加到表中的每个额外折扣代码使公式变得越来越长。
=IFS( AND(B3=$F$3,REGEXMATCH(LOWER(A3),LOWER($G$3))),$H$3 , AND(B3=$F$4,REGEXMATCH(LOWER(A3),LOWER($G$4))),$H$4 )
有更好的方法吗?感谢
@Tim B,尝试完全清除列C(包括标题(,并将以下公式放入C2:
=ArrayFormula({"Discount Code";IF(A3:A="","",IFERROR(VLOOKUP(UPPER(B3:B)&IFERROR(REGEXEXTRACT(UPPER(A3:A),TEXTJOIN("|",TRUE,UPPER(G2:G)))),{UPPER(F3:F&G3:G),H3:H},2,FALSE),IFERROR(VLOOKUP(UPPER(B3:B)&IFERROR(REGEXEXTRACT(SUBSTITUTE(UPPER(A3:A),IFERROR(REGEXEXTRACT(UPPER(A3:A),TEXTJOIN("|",TRUE,UPPER(G2:G)))),""),TEXTJOIN("|",TRUE,UPPER(G2:G)))),{UPPER(F3:F&G3:G),H3:H},2,FALSE),)))})