计划: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)
我是否更容易通过多个步骤?
提前谢谢你。
答案 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))
名字将是第一个“单词”,所以你可以测试看看先生或夫人或你不想要的东西。
当且仅当有三个名称时才会返回中间名,但可以重写以返回除名字和姓氏之外的所有名称