2012-10-01 47 views
1

我有一个导出的Outlook联系人列表,其中充满了大约1800封电子邮件。一列(Col A)中的电子邮件字段仅填充了大约一半的联系人,另一列(列B)用于“显示名称”,其中包含其他联系人的电子邮件地址。但是,“显示名称”列中除了包含电子邮件地址外,还包含其他数据,所以我想避免覆盖现有电子邮件地址A.将填充的列复制到同一行另一列中的空字段中

所以,我想找到一种方法来填充只有Col A的数据来自Col B的空场。任何帮助将不胜感激!

+0

是y你试图把所有在Col.B细胞中的东西都放入空的Col.A细胞中?或者将Col.B单元格中的特定数据放入空的Col.A单元格中? –

+0

理想情况下,我想从Col. B中取出电子邮件地址。目前Col. B单元格看起来像“名字姓氏([email protected])”。 – user1712390

+0

我编辑了我的foreach循环,只从B列中的字符串中获取电子邮件地址。它专门搜索“(”以知道从哪里开始 –

回答

1

如果你试图把一切从上校B插入空柱A,那么你可以在宏中使用此VBA代码:


Sub macro1() 

    Dim theSheet As Worksheet 
    Dim theRange As Range 
    Dim emailLocation As Integer 
    Dim output As String 

    Set theSheet = Sheets("Sheet1") 

    Set theRange = Range("A1:A" & theSheet.UsedRange.Rows.Count) 


    For Each theCell In theRange 

     If theCell = "" Then 

      emailLocation = InStr(1, theCell.Offset(0, 1), "(") 
      output = Mid(theCell.Offset(0, 1), emailLocation) 
      theCell.Value = output 

     End If 


    Next 

End Sub 

这个宏应该工作无论多么数据片的许多行包含

+0

感谢Mike!这是钱! – user1712390

+0

@ user1712390 welcome!don' t忘记选择一个问题的答案,并很高兴我可以帮助:) –

2

在第三列,把这段代码....

=IF(A1 <> "",A1,B1) 

然后,它适用于所有1800行。

+0

+ +1为一个好的简洁和易于使用的解决方案:) –

+0

Excel似乎不符合双引号,并产生错误,当我尝试使用公式。 ( – user1712390

+0

@ user1712390,'= IF(A1 <>“”,A1,B1)'是你应该使用的,分号不正确 –

2

你也可以使用嵌套的if语句中的ISBLANK功能,并在第三列像这样串联的两列:= CONCATENATE(IF(ISBLANK(A2),B2,A2),B2)

相关问题