我在Excel的A列中有一些电子邮件地址。有许多行,但名称与每个电子邮件地址都附在同一单元格中,因此它看起来像这样:
johnsmith:johnsmith@gmail.com
adamsmith:adam1i2@gmail.com
CoryAdam:Cory1991@gmail.com
是否有一种方法(在Excel中)来分隔数据,以便我可以维护我的行但是在一列中包含名称而在另一列中包含电子邮件地址?我也可以自动完成这项工作,比如每天结束时左右吗?
答案 0 :(得分:0)
假设C3列中存在电子邮件,您可以尝试以下操作(在D3列中编写公式):
=LEFT(C3,FIND("@",C3)-1)
然后,您可以将相同的公式应用于所有行。
答案 1 :(得分:0)
根据您对@ user496607答案的评论,您的数据实际上是
johnsmith:johnsmith@gmail.com
adamsmith:adam1i2@gmail.com
CoryAdam:Cory1991@gmail.com
在专栏A
中。这是对的吗?
您希望每次打开工作簿时Excel都会自动将其拆分为列A
和B
吗?
这个Sub
会做分裂
Sub SplitNames(sh As Worksheet)
Dim rng As Range
Dim dat As Variant
Dim i As Long, j As Long, s As String
Set rng = sh.Range(sh.Cells(1, 1), sh.Cells(sh.Rows.Count, 1).End(xlUp))
'rng.Select
dat = rng.Formula
If IsArray(dat) Then
ReDim Preserve dat(1 To UBound(dat, 1), 1 To 2)
For i = LBound(dat, 1) To UBound(dat, 1)
s = dat(i, 1)
j = InStr(dat(i, 1), ":")
If Left(s, 1) <> "=" And j > 0 Then
dat(i, 2) = Mid(s, j + 1)
dat(i, 1) = Left(s, j - 1)
End If
Next
rng.Resize(, 2).Formula = dat
End If
End Sub
另一个Sub
可能会触发您想要触发的内容。例如,这将在Workbook
open(将其放在ThisWorkbook
模块中)
Private Sub Workbook_Open()
Dim sh As Worksheet
For Each sh In Me.Worksheets
SplitNames sh
Next
End Sub
答案 2 :(得分:0)
这是一个使用Text to columns的自动解决方案。只要您的数据始终在单元格A1中开始,它就会起作用,正如您所说的那样:
Private Sub Workbook_Open()
Range(Cells(1, 1), Cells(Rows.Count, 1).End(xlUp)).Select
Selection.textToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar _
:=":"
End Sub
将它放在ThisWorkbook
模块中,每次打开工作簿时都会运行。