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:

one@example.com, two@example.com, three@example.com

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

one@example.com
two@example.com
three@example.com

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!

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.


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?


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.


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.


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:

alguem@gmail.com
alguem@yahoo.com

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.