Разделите данные Excel с разделителями на 2 столбца - PullRequest
1 голос
/ 05 января 2012

У меня есть несколько адресов электронной почты в столбце A в Excel.Есть много строк, однако имена прикрепляются в одной ячейке с каждым адресом электронной почты, поэтому это выглядит так:

johnsmith:johnsmith@gmail.com
adamsmith:adam1i2@gmail.com
CoryAdam:Cory1991@gmail.com

Есть ли способ (в Excel) разделить данные, чтобы я могсохранить мои строки, но имена в одном столбце и адреса электронной почты в другом столбце?Также я смогу сделать это автоматически, скажем, в конце каждого дня или около того?

Ответы [ 3 ]

0 голосов
/ 05 января 2012

На основе вашего комментария к ответу @ 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 module)

Private Sub Workbook_Open()
    Dim sh As Worksheet
    For Each sh In Me.Worksheets
        SplitNames sh
    Next
End Sub
0 голосов
/ 06 января 2012

Это автоматизированное решение, использующее текст в столбцы.Он будет работать до тех пор, пока ваши данные всегда начинаются в ячейке 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, и они будут запускаться каждый раз, когда вы открываете книгу.

0 голосов
/ 05 января 2012

Предположим, что электронная почта существует в столбце C3, вы можете попробовать следующее (напишите формулу в столбце D3):

=LEFT(C3,FIND("@",C3)-1)

Затем можно применить одну и ту же формулу ко всем строкам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...