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

3

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 em sua tela agora :) (ou rindo), mas é como abordá-lo, não ter idéia das funções a serem usadas ou se é possível até mesmo dessa maneira.

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 ...

Desde já, obrigado!

Trufa

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

EDIT: O problema é realmente resolvido, eu cedi e fiz um por um, o método que nunca falha você :) Iwpuld apreciar quaisquer ideias de qualquer maneira para o futuro e por amor de conhecimento!

Trufa
fonte

Respostas:

3

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.

Larry C
fonte
Eu conuldt encontrar uma maneira de fazer isso! obrigado de qualquer maneira olhar para a minha edição por favor :)
Trufa
0

Você não pode simplesmente salvar como um arquivo CSV e fazer uma pesquisa e substituir para ,a \n?

Olá71
fonte
Então, \ n é válido em um arquivo csv, ele irá entender?
Trufa
@Trufa: Não é; Eu usei \ncomo um espaço reservado para uma quebra de linha no Notepad ++. Você terá que descobrir o que uma quebra de linha é representada como na pesquisa e substituir no seu editor de texto.
Olá71
Eu conuldt encontrar uma maneira de fazer isso! obrigado de qualquer maneira olhar para a minha edição por favor :)
Trufa
0

Exporte seu arquivo do Excel para um csv.

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

Então digite:

%s/,/\\n/g

Este é o detalhamento desse comando:

  • : - comando de execução
  • % s - substituto
  • / - separador
  • , - corda 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.

Chris
fonte
1
O Notepad ++ também lida com a pesquisa e substituição de regex e é executado no Windows. Eu uso regularmente para casos como este.
Glallen
0

Não tenho certeza se minha resposta se encaixa aqui, já que é mais uma resposta do Stackoverflow, mas você poderia 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 fazer isso.

ho1
fonte
0

Então você quer as quebras de linha em vez de vírgulas, então você precisa encontrá-las e substituí-las por char (10). Experimente esta fórmula.

= SUBSTITUTO (A2, ",", CHAR (10))

A fórmula substituirá vírgulas do texto em A2 e as substituirá por uma quebra de linha.

Por exemplo: se A2 contiver:

alguém @ gmail.com, alguém @ yahoo.com

então retornará como:

[email protected]
[email protected]

nifraz
fonte