我有一份需要分配价格值的退货(因此,独一无二的)产品清单。问题在于虽然有许多相同的产品,但它们都有不同的参考编号。我计划有4列:特定产品,特定价格,清单名称,清单价格。
查看我想象的完成此步骤的三步示例: 正如您所看到的,第一列的条目有点混乱,但它们包含与列表名称中的产品完全相同的字母。具体的价格栏是我想把我的公式放在哪里;公式的输出将是匹配产品价格的副本。
第一列中的所有项目都将随机填写,但必须按照第3和第4列中的指示分配正确的价格。因为每天需要报告数百种产品,所以手写价格不是一种选择。
我想填写第二列,首先找到第1列和第3列之间的匹配,然后根据第3列匹配为第4列指定价格。在Java中,这将是一件轻而易举的事,但这不是Java。使用excel,您可以通过让系统使用此组合返回布尔值来找到匹配项:
=IF(ISNUMBER(SEARCH(phrase, text)), TRUE, FALSE)
我已经能够将这些短语组合在一起,成功地为我提供了这7种产品所需要的东西,但这是特定于细胞的,我需要编写近千种产品。 = LOOKUP与我的需求接近匹配,唯一的问题是我的实际产品名称不是逐字逐句列出的产品名称。有什么建议吗?
这不是它如何工作,事实上我爱一个人给我一个新鲜的看法。
答案 0 :(得分:0)
在Google Spreadsheets中,您可以在C2中输入以下内容,然后复制该列:
=array_constrain(filter(E$2:E, regexmatch(A2, D$2:D)), 1, 1)
这将检查D列中的每个字符串,A2是否包含此字符串,并从E返回相应的条目。包装器array_constrain
表示只应返回第一个匹配项。
希望您没有与D列中的多个名称匹配的产品,否则问题就会变得模棱两可。
这是一个更详细的公式,它不会尝试使用array_constrain扫描地毯下的多个匹配问题:在这种情况下会抛出#REF错误。
=arrayformula(filter(filter(E$2:E, len(D$2:D)), regexmatch(A2, filter(D$2:D, len(D$2:D)))))
原理是相同的,除了数组不再受约束并且D列中的空单元格被过滤掉 - 这是必要的,没有约束,因为空字符串包含在任何其他字符串中。
答案 1 :(得分:0)
以下是在Excel中执行此操作的一种方法。使用输入数组的公式(通过在点击ctrl+shift
时按住enter
输入公式:
=INDEX(LIST_PRICE,MATCH(TRUE,ISNUMBER(SEARCH(PRODUCT_NAMES,A2)),0))
PRODUCT_NAMES
和LIST_PRICE
是指定范围,指的是图片中D列和E列中的数据范围。