find(多input)左侧的所有内容

我的文件

包含笔记本电脑和库存清单的工作簿1,清单将从笔记本电脑中获取数据,仅logging笔记本电脑的名称。

目的

从表笔记本电脑(如Compaq CQ58-250SA)中提取产品名称(10,000个条目)

计划

我们只需要产品名称,所以find一些关键字(电脑规格),把一切都放在它的左边(产品名称)

关键词到目标

  • 赛扬
  • 奔腾
  • B815
  • E1-1200
  • B820

电子表格数据

  • 单元格A1 = Compaq CQ58-250SA Celeron B830,Windows

  • 单元A2 = HP 650 Pentium B980,15.6 HD AG LED SVA,

  • 单元格A3 =华硕X401A-WX321H,B815,Windows 8

  • 单元A4 = Compaq CQ58-256SA E1-1200,Windows 8 64

  • 单元格A5 =华硕,X401A-WX089V,B820,Windows 7

我到目前为止所做的:

= LEFT(笔记本电脑!A1,FIND( “赛扬”,笔记本电脑!A1)-1)

我需要做什么

= LEFT(笔记本电脑!A1,FIND( “赛扬” 和 “奔腾” 和“B815,笔记本电脑!A1)-1)

基于更新的问题,您可以使用此公式,假设每个单元格只有一个关键字,并且D1:D5中的关键字列表

=LEFT(Laptops!A1,LOOKUP(2^15,FIND(D$1:D$5,Laptops!A1))-1)

否则,如果每个单元格可能有多个关键字……

你使用的是哪个版本的Excel? 在Excel 2010中,您可以像这样使用AGGREGATE函数

=LEFT(A1,AGGREGATE(15,6,FIND(D$1:D$3,A1),1)-1)

D1:D3是你的“水果名单” – 根据需要展开

[AGGREGATE函数中的15表示“SMALL”函数,6忽略错误,因此您可以从FIND(D $ 1:D $ 3,A1)中获得最小值,同时忽略错误 – 从而为您提供单元格中第一个水果的位置]

这可以作为一个常规公式input,并复制下来,如果没有发现水果,它会给出一个错误,但你可以使用IFERROR函数来修改,以返回一个文本值或A1的全部内容

注意: FIND是“区分大小写的” – 如果你不需要,可以使用SEARCH

Excel 2007或更高版本中,您可以使用IFERROR ,因此可以使用“数组input”版本

=LEFT(A1,MIN(IFERROR(FIND(D$1:D$3,A1),""))-1)

如果您的水果列表在D1:D3您可以使用这个:

 =LEFT(A1,FIND(INDEX(D1:D3,MATCH(1,COUNTIF(A1,"*"&D1:D3&"*"),0)),A1)-1) 

它需要作为数组公式input,方法是按CTRL + SHIFT + ENTER

您可以使用SUBSTITUTE将梨和橙的任何实例replace为苹果,然后使用(应该全部在一行上,但为了可读性而分解):

 =LEFT(A1,FIND("Apple",SUBSTITUTE(SUBSTITUTE(A1,"Pear","Apple"),"Orange","Apple")) -1) 

现在,如果没有Pear,Apple或Orange的实例,你会得到#Value ,所以让我们通过使用ISERROR来检查一个无效的值:

 =IF(ISERROR(LEFT(A1, FIND("Apple",SUBSTITUTE(SUBSTITUTE(A1, "Pear", "Apple"), "Orange", "Apple"))-1)),A1,LEFT(A1, FIND("Apple", SUBSTITUTE(SUBSTITUTE(A1, "Pear", "Apple"),"Orange", "Apple"))-1)) 

我的版本有点短。 还需要input数组公式:

 =MAX(1-ISERR(SEARCH(D1:D3,A1))) 

如果find则返回1,否则返回0。 从那里工作。