找到左边的所有内容(多输入)

时间:2013-01-22 14:35:33

标签: excel

我的文件

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

目标

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

计划

我们只需要产品名称,因此找到某些关键字(计算机规格)并将其左侧的所有内容(产品名称)

目标关键字

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

电子表格数据

  • Cell A1 = Compaq CQ58-250SA Celeron B830,Windows

  • 电池A2 = HP 650奔腾B980,15.6 HD AG LED SVA,

  • Cell A3 =华硕X401A-WX321H,B815,Windows 8

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

  • Cell A5 = ASUS,X401A-WX089V,B820,Windows 7

到目前为止我做了什么:

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

我需要做什么

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

4 个答案:

答案 0 :(得分:5)

如果你的水果列表在D1:D3,你可以使用它:

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

需要输入数组公式,按 CTRL + SHIFT + ENTER

答案 1 :(得分:3)

根据更新的问题,您可以使用此公式,假设每个单元格只有一个关键字,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是您的“水果列表” - 根据需要展开

[AGGLEGATE函数中的15表示“SMALL”功能而6忽略错误,因此您从FIND(D $ 1:D $ 3,A1)获得最小值,同时忽略错误 - 从而为您提供第一个水果的位置细胞]

这可以作为常规公式输入并向下复制,如果没有找到任何结果它会给出错误但您可以使用IFERROR函数来修改它以返回文本值或A1的全部内容

注意:查找是“区分大小写” - 如果您不想要

,请使用搜索

Excel 2007 或更高版本中,您可以使用 IFERROR ,因此可以使用此“阵列输入”版本

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

答案 2 :(得分:2)

您可以使用SUBSTITUTE将Apple和Orange的任何实例替换为Apple,然后使用它(应该全部在一行,但为了便于阅读而分解):

=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))

答案 3 :(得分:-1)

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

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

如果找到则返回1,如果未找到则返回0。从那里开始工作。