Excel 2010在IF函数中搜索文本 - 单独的单元格数据

时间:2014-01-29 20:57:33

标签: excel if-statement excel-formula excel-2010

计划:Excel 2010

要求:一种提取名字,姓氏,电子邮件到单个单元格的方法。

数据:我的数据有一个包含原始“脏数据”的表格,它是原始的,一团糟。我使用简单的=IF(A7="Order",1,"")整理它,然后其余的单元格跟随:=IF($C7=1,B13,"")

示例:

  (A) | Orig2              | Header? (C)          | NameAll (K)       | Price          |  
----------------------------------------------------------------------------------------
Order | Ms Admin (e@m.com) | =IF(A7="Order",1,"") | =IF($C7=1,B13,"") | =IF($C7=1,B5,"")
Order | Mr Joe (e@m.com)   | =IF(A8="Order",1,"") | =IF($C8=1,B14,"") | =IF($C8=1,B6,"")
Order | Ms Fred (e@m.com)  | =IF(A9="Order",1,"") | =IF($C9=1,B15,"") | =IF($C9=1,B7,"")

结果:

(A)   | Orig2              | Header? (C) | NameAll (K)        | Price  |  
------------------------------------------------------------------------
Order | Ms Admin (e@m.com) | 1           | Ms Admin (e@m.com) | 13.99
Order | Mr Joe (e@m.com)   | 1           | Mr Joe (e@m.com)   | 15.99
Order | Ms Fred (e@m.com)  | 1           | Ms Fred (e@m.com)  | 17.99  

工作在我复制了单元格值之后,然后在我的工作表上复制'复制/值',我可以在(U7)中使用以下内容(从中提取电子邮件) ))
=IFERROR(MID(K7,(SEARCH("(",K7)+1),((SEARCH(")",K7)-(SEARCH("(",K7)+1)))),"")

我想要做的是从数据移动的开头拿走它,所以我完全错过了复制旧的,新的,然后数据提取的步骤

尝试: 失败
=IFERROR($C7=1,B13(MID(B13,(SEARCH("(",B13)+1),((SEARCH(")",B13)-(SEARCH("(",B13)+1))))))

当我试图将第一,中间,最后一封(电子邮件)分开时,我也会发现一个名字如:W。H. Minder(m@e.net)

我是否更容易通过多个步骤?

提前谢谢你。

1 个答案:

答案 0 :(得分:1)

由于所有变化,解析名称并不简单。你所展示的数据存在的一个问题就是测试,以确定名字是否真的像Mr Ms等一样。

我的偏好是使用VBA和正则表达式来做到这一点,但这里有一些你可以玩的公式:

Email:  =MID(TRIM(A1),FIND("(",TRIM(A1))+1,FIND(")",TRIM(A1))-FIND("(",TRIM(A1))-1)
First Name:   =LEFT(TRIM(A1),FIND(" ",TRIM(A1))-1)
Middle Name:  =IF(LEN(TRIM(A1))-LEN(SUBSTITUTE(A1," ",""))<>3,"",LEFT(MID(TRIM(A1),FIND(" ",TRIM(A1))+1,99),FIND(" ",MID(TRIM(A1),FIND(" ",TRIM(A1))+1,99))-1))
Last Name:    =TRIM(RIGHT(SUBSTITUTE(TRIM(LEFT(A1,FIND("(",A1)-1))," ",REPT(" ",99)),99))

名字将是第一个“单词”,所以你可以测试看看先生或夫人或你不想要的东西。

当且仅当有三个名称时才会返回中间名,但可以重写以返回除名字和姓氏之外的所有名称