条件

时间:2017-10-17 03:25:42

标签: excel

我现在遇到一个问题,即使使用If和Vlookups的多种组合,我也无法解决。我做得不对。

我有一张表,其中包含产品名称和Sl Number的空列。如果Sl数与公式的相邻单元格中的值匹配,则需要从Sheet 2中检索Sl数(我知道这可以通过Vlookup实现)。但是,即使匹配不准确,我也会尝试显示该值。我的意思是,如果产品名称具有表1中的所有值,但在括号中还有其他信息,则仍应显示该值。

表1 image description

Formula in A2 - A7 = "=VLOOKUP(B2, Sheet2!B:E, 2, 0)"

表2 完整的数据 image description

这可能吗?

提前致谢。

抱歉,我是新来的,不知道这是怎么回事。因此,尝试做正确的事情,但可能需要一些时间。

谢谢弗兰克和蒂姆。我还有另外一个问题。

有没有办法通过忽略查找单元格本身括号中的文本来检索值?

例如:

第1页

    Sl Number    Name  
    123454       Cream SPF 30+ 50g 
    **NA**       Bar Chocolate 70g X 6 (Sample)
    234256       Hand Wash 150ml
    26786        Toothpaste - Whitening 110g

第2页

ID  Name                    Sl number   Manufacturer    Quantity
8   Collagen Essence 10ml   456788          AL              87
9   Hand Wash 150ml         234256          AD              23
10  Bar Chocolate 70g X 6   835424          AU              234

工作表1上的第2行具有包含(样本)的名称,而工作表2上的相同产品不包含该产品的(样本)。有没有办法在上面的场景中使用查找?

谢谢

1 个答案:

答案 0 :(得分:0)

蒂姆的评论

  

= VLOOKUP(B2&“*”,Sheet2!B:E,2,0)只要将“额外”信息标记到名称的末尾,并且您的所有产品名称都不是   另一个产品名称的子字符串。 - 蒂姆威廉姆斯53分钟前

将获得您正在寻找的内容,以及在“(...)”之间删除文本

=IFERROR(IF(FIND("(",A2),LEFT(A2,FIND("(",A2)-1),A2),A2)

要创建一个新列,将删除任何带有括号“(...)”的列,这假设所有条目的末尾都有“(...)”,即最右侧。

当你是新人时,我认为你可能对解释感兴趣。我会解释蒂姆和我的所作所为。如果我不正确,任何人都可以自由编辑。

根据您的问题,您似乎熟悉Excel而不是网站。这就是说,我对你的尝试与蒂姆的关键区别的理解是=VLOOKUP(B2 & "*", Sheet2!B:E, 2, 0)或具体& "*"。这会在搜索参数中引入通配符。因此,如果您键入“Bob”但实际引​​用是“Bob's Burger”,那么“*”将允许['s Burger]作为可能搜索的一部分包含在内,因为您设置了vLookup来搜索Approximate而不是精确匹配。 =VLOOKUP(B2 & "*", Sheet2!B:E, 2, 0)具体为, 0)

就我而言,IFERROR实际上是IF函数错误的全部。如果有错误,则为X.在这种情况下,如果它在单元格中找不到“(”,那么它将抛出错误。由于它是错误,显示原始单元格。

至于IF(FIND("(",A2),LEFT(A2,FIND("(",A2)-1),A2)它要求Excel在单元格A2中查找“(”,如果找到它,那么它从LEFT开始计算,直到找到“(”并将文本删除一个空格为第一个“(”的左侧。因此删除“(...)”。