如果值包含特定值,则将值从一列复制到另一列

时间:2013-07-29 02:19:59

标签: excel excel-vba excel-2007 excel-formula excel-2010 vba

enter image description here

原始图片.. http://screencast.com/t/jk3IIbuuV

需要从~500行中获取5种类型的数据并粘贴到5个单独的行中。理想情况下,数据将如屏幕截图右侧所示进行转换。

  1. 诊所名称
  2. 诊所电子邮件地址
  3. 网站
  4. 代表姓名
  5. 诊所类型
  6. 我正在考虑某种类型的If公式/宏搜索大写字母,另一种搜索@并返回字符串,另一种搜索www,另一种搜索子弹点。可能的?

1 个答案:

答案 0 :(得分:1)

好的,你只是给了你500多个的一些行,所以我假设了一些模式:

我想我得到了“诊所名称”,“网站”和“电子邮件”,

数据位于A列。 将显示一个单元格的示例,但公式可以重现其他单元格(只需拖动它们)。

诊所名称。

转换大写字符串中的所有字符串。

B1 =UPPER(A1)

检查新字符串(B1)是否与原始字符串(A1)不同。

C1 =IF(EXACT(A1,B1),A1,"")

网站

跟踪角色位置:“www。”

B1 =SEARCH("www.",A1,1)

“www。”后的裁剪字符串

C1 =MID(A1,B1,100)

跟踪角色位置:“。cl”(假设您提供的所有示例都使网站仅使用“.cl”完成)

D1 =SEARCH(".cl",C1,1)

替换“.cl”右边的所有内容(以防万一字符串未在“.cl”中完成),仅替换“.cl”。

E1 =REPLACE(C1,D1,100,".cl")

<强>电子邮件

与网站相同的想法,但现在,对原始数据做出更强有力的假设:
- 所有电话号码的格式均为(2)XXXX XXXX或(2)XXXX-XXXX;
- 电子邮件信息就在电话号码的右侧。

B1 =FIND("(2)",A1,1)  
C1 =MID(A1,B1,100)  
D1 =MID(K18,14,100) #remove the phone number (13 characters)#  
E1 =SEARCH(".cl",L18,1)  
F1 =REPLACE(D1,E1,100,".cl")

我没有尝试收集“诊所类型”,因为我无法在Excel上重现子弹(实际上,我从MS Word复制并粘贴了子弹,但我不确定它是否与你的)。我的第一次尝试是使用公式B1 =left(A1,1)来提取每个字符串的第一个字符。对于所有带有子弹的文本/字符串,可能会有一个模式(相同的字符)。然后,人们只需过滤选择子弹字符的单元格并复制/过去“诊所类型”信息。

我不知道如何检索“联系人姓名”,但根据我在此提出的建议,可以删除包含“诊所类型”和“临床名称”信息的行。