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。 从那里工作。