4

我的文件

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

客观的

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

计划

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

要定位的关键字

  • 赛扬
  • 奔腾
  • 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)

我需要做什么

=左(笔记本电脑!A1,查找(“赛扬”&“奔腾”&“B815,笔记本电脑!A1)-1)

4

4 回答 4

5

如果你的水果清单在D1:D3你可以使用这个:

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

需要按CTRL++将其作为数组公式SHIFT输入ENTER

于 2013-01-22T15:03:50.417 回答
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 是您的“水果清单” - 根据需要扩展

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

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

注意:FIND是“区分大小写的” -如果您不想要,请改用SEARCH

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

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

于 2013-01-22T15:58:52.103 回答
2

您可以使用SUBSTITUTE将 Pear 和 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))
于 2013-01-22T14:58:11.893 回答
-1

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

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

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

于 2013-01-22T15:56:34.643 回答