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.
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!
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.
Você não pode salvar como CSV e pesquisar e substituir ,
to \n
?
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:
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.
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.
Tags csv microsoft-excel cells ordering