在Excel工作表中使用Vlookup来匹配子string

请在下面find我的问题,将我提出问题的表格显示在图像中:

对于不匹配的文本,我想输出值为0。 在这里输入图像说明

您可以使用数组公式(Ctrl + Shift + Enter)find相关数据,如下所示:

{=MIN(IF(ISERROR(FIND(Sheet1!$A$3:$A$5,A3)),FALSE,Sheet1!$B$3:$B$5))}

这假设您的定价描述在A3:A5的Sheet1中,而您的产品标题则在A3和另一个表中的下方

然后,您可以根据需要复制(拖动复制或以其他方式)。 请注意,如果您的string匹配多行,您将获得最低成本(如果需要,您可以更改为不同的聚合函数)。

这个公式的工作方式是:

  1. FIND(Sheet1!$A$3:$A$5,A3) :根据匹配的string返回一组索引或错误值。
  2. IF(ISERROR(FIND..) :testing每个数组项的错误和 – >
  3. 对于错误值(不匹配)返回FALSE
  4. 对于非错误值(匹配)返回请求值,根据数组的位置/索引( Sheet1!$B$3:$B$5 )。
  5. MIN(....) :返回由一些FALSE值和一些(希望只是1)数组成的数组的最小值。 这将数组聚合成一个数字。

由于无法将Sheet1定价中的相同单词与Sheet2产品进行匹配,因此需要在Sheet1定价中在列描述和成本之间插入新列。 在这一栏插入公式:

 =VLOOKUP("*"&MID(A2,2,9)&"*",Product!$A$2:$A$4,1,0) 

使用MIDfunction是因为,据我所知,在sheet2产品中你没有相同的擦除部分(例如“3 HD包” – “3 Matte Sreen的优质包”)

现在,您可以在sheet2产品中使用VLOOKUP公式来使用新列以供参考:

 =IFERROR(VLOOKUP(A2,Pricing!$B$2:$C$4,2,0),0)