Valores separados por vírgula (literalmente, não csv) na mesma célula no excel, colocados em células individuais

2

Eu tenho uma coluna de células no Excel que contém e-mails, alguns contêm apenas um e-mail como deveriam, mas outros têm mais de um e-mail por célula neste formato:

[email protected], [email protected], [email protected]

O que eu quero alcançar é obtê-los assim:

[email protected]
[email protected]
[email protected]

Eu estou supondo (não tome minha palavra sobre isso), você poderia fazer algum tipo de declaração ao longo das linhas de

if (cell contains ", ")
get string from ", " to ", " and paste somehow
else "b1"

Você pode estar gritando na sua tela agora :) (ou rindo), mas é como abordá-lo, não ter idéia das funções a serem usadas ou se é possível dessa forma.

Então, se você tem alguma idéia, eu agradeço!

Apenas no caso, eu quero fazer um csv fora deste arquivo assim, qualquer solução que faria isso faria ...

Obrigado antecipadamente!

Trufa

BTW Espero ter explicado o problema com clareza suficiente, se não por favor pedir esclarecimentos!

EDIT: O problema está realmente resolvido, eu dei e fiz um por um, o método que nunca falha você :) Eu gostaria de receber qualquer ideia para o futuro e pelo conhecimento!

    
por Trufa 22.10.2010 / 19:46

4 respostas

2

No Excel, tente Dados - > Texto para colunas.

Em seguida, escolha "," como o delimitador. Isso colocará quebras de coluna onde as vírgulas estão agora.

    
por 22.10.2010 / 21:03
0

Você não pode salvar como CSV e pesquisar e substituir , to \n ?

    
por 22.10.2010 / 20:10
0

Exporte seu arquivo do Excel para um csv.

Copie para uma máquina Linux e edite-a no editor Vim.

Em seguida, digite:

%s/,/\n/g

Este é o detalhamento desse comando:

  • : - comando de execução
  • % s - substitua
  • / - separador
  • , - string para encontrar
  • / - separador
  • **** - um caractere de controle para ignorar o próximo caractere, mas neste caso queremos que a seguinte parte \ n seja a string que substitui a vírgula com
  • \ n - string para substituir vírgula por
  • / - separador
  • g - globalmente

Isso localizará e substituirá as vírgulas com uma quebra de linha globalmente e colocará cada célula em uma nova linha. Você pode então reimportar esse arquivo para o Excel.

Desculpas se você não usa o Linux - essa é a minha especialidade e o editor e as ferramentas de manipulação de strings são muito melhores que no Windows.

    
por 21.04.2011 / 08:29
0

Não tenho certeza se minha resposta se encaixa aqui, já que é mais uma resposta do Stackoverflow, mas você pode escrever uma macro para fazer isso com bastante facilidade. Por exemplo, a macro a seguir supõe que os endereços de e-mail atuais estão na primeira coluna e os copiariam para a segunda coluna:

Cells(1, 1).Select
Dim curr As String
Dim cnt As Integer
cnt = 0
For i = 1 To ActiveCell.SpecialCells(xlLastCell).Row
    curr = Cells(i, 1).Value
    If InStr(curr, "@") Then
        If InStr(curr, ",") Then
            Dim tmp() As String
            tmp = Split(curr, ",")
            For j = LBound(tmp) To UBound(tmp)
                cnt = cnt + 1
                Cells(cnt, 2).Value = tmp(j)
            Next
        Else
            cnt = cnt + 1
            Cells(cnt, 2).Value = curr
        End If
    End If
Next i

Eu não conheço muito o VBA, então podem ser maneiras melhores de fazê-lo.

    
por 22.12.2011 / 10:05