Converte uma coluna em uma lista separada por vírgulas

108

Eu tenho a tarefa de criar uma planilha simples do Excel que leva um número não especificado de linhas na Coluna A assim:

1234
123461
123151
11321

E faça-os em uma lista separada por vírgula em outra célula que o usuário possa facilmente copiar e colar em outro programa da seguinte forma:

1234,123461,123151,11321

Qual é a maneira mais fácil de fazer isso?

    
por muncherelli 02.02.2011 / 17:01

13 respostas

21

Na verdade, acabei de criar um módulo no VBA que faz todo o trabalho. Ele pega minha lista de variáveis e cria uma string delimitada por vírgula que é enviada para a célula de minha escolha:

Function csvRange(myRange As Range)
    Dim csvRangeOutput
    Dim entry as variant
    For Each entry In myRange
        If Not IsEmpty(entry.Value) Then
            csvRangeOutput = csvRangeOutput & entry.Value & ","
        End If
    Next
    csvRange = Left(csvRangeOutput, Len(csvRangeOutput) - 1)
End Function

Então, no meu celular, coloquei apenas =csvRange(A:A) e ele me fornece a lista delimitada por vírgulas.

    
por 03.02.2011 / 15:10
132

Supondo que seus dados iniciem em A1, colocaria o seguinte na coluna B:

B1:

=A1

B2:

=B1&","&A2

Você pode colar a coluna B2 na coluna inteira. A última célula na coluna B deve agora ser uma lista da coluna A, separada por vírgulas.

    
por 02.02.2011 / 17:37
64
  • Copie a coluna no Excel
  • Abra o Word
  • "Colar especial" somente como texto
  • Selecione os dados no Word (aquele que você precisa converter em texto separado com , ), pressione Ctrl - H (Localizar e substituir)
  • Na caixa "Localizar", digite ^p
  • Na caixa "Substituir por" digite ,
  • Selecione "Substituir tudo"
por 05.06.2012 / 07:24
16

Se você tiver o Office 365 Excel, poderá usar TEXTJOIN ():

=TEXTJOIN(",",TRUE,A:A)

    
por 25.01.2017 / 19:05
10

Uma abordagem alternativa seria colar a coluna do Excel nessa ferramenta no navegador:

convert.town/column-to-comma-separated-list

Converte uma coluna de texto em uma lista separada por vírgulas.

Como o usuário está copiando e colando para outro programa, isso pode ser fácil para eles.

    
por 22.04.2015 / 22:46
7

Você poderia fazer algo assim. Se você não estiver falando sobre uma planilha enorme, isso funcionará "ok" ...

  • Alt-F11, Cria uma macro para criar a lista (veja o código abaixo)
  • Atribui-o ao atalho ou ao botão da barra de ferramentas
  • O usuário cola sua coluna de números na coluna A, pressiona o botão e sua lista vai para a célula B1.

Aqui está o código de macro do VBA:

Sub generatecsv() 

Dim i As Integer
Dim s As String

i = 1

Do Until Cells(i, 1).Value = ""
    If (s = "") Then
        s = Cells(i, 1).Value
    Else
        s = s & "," & Cells(i, 1).Value
    End If
    i = i + 1 
Loop

Cells(1, 2).Value = s

End Sub

Certifique-se de definir o formato da célula B1 para 'texto' ou você receberá um número confuso. Tenho certeza de que você também pode fazer isso no VBA, mas não sei como, no momento, e preciso voltar ao trabalho. ;)

    
por 02.02.2011 / 20:12
6

Use o vi ou o vim para simplesmente colocar uma vírgula no final de cada linha:

%s/$/,/

Para explicar este comando:

  • % significa fazer a ação (ou seja, localizar e substituir) para todas as linhas
  • s indica substituição
  • / separa os argumentos (por exemplo, s/find/replace/options )
  • $ representa o final de uma linha
  • , é o texto de substituição neste caso
por 06.02.2011 / 23:53
2

Você pode usar o guia do How-To Geek sobre como transformar uma linha em uma coluna e simplesmente invertê-la. Em seguida, exporte os dados como um formato csv (formato delimitado por vírgula) e você terá sua lista separada por vírgula de texto simples! Você pode copiar do bloco de notas e colocá-lo de volta no Excel, se quiser. Além disso, se você quiser um espaço após a vírgula, poderá fazer uma pesquisa & substitua o recurso, substituindo "," por ",". Espero que ajude!

    
por 02.02.2011 / 17:12
2

muncherelli, eu gostei da sua resposta, e eu ajustei isso :). Apenas uma coisa pequena, há momentos em que eu puxo dados de uma planilha e a utilizo para consultar um banco de dados. Eu adicionei um parâmetro opcional "textQualify" que ajuda a criar uma lista separada por vírgula utilizável em uma consulta.

Function csvRange(myRange As Range, Optional textQualify As String)
    'e.g. csvRange(A:A)  or csvRange(A1:A2,"'") etc in a cell to hold the string
    Dim csvRangeOutput
    For Each entry In myRange
        If Not IsEmpty(entry.Value) Then
            csvRangeOutput = csvRangeOutput & textQualify & entry.Value & textQualify & ","
        End If
    Next
    csvRange = Left(csvRangeOutput, Len(csvRangeOutput) - 1)
End Function
    
por 08.04.2011 / 17:54
1

Eu melhorei o generatecsv () sub para manipular uma planilha do excel que contém várias listas com linhas em branco separando os títulos de cada lista e as listas de seus títulos. exemplo

list title 1

item 1
item 2

list title 2

item 1
item 2

e combina-os de curso em várias linhas, 1 por lista.

razão, eu tinha um cliente me enviar várias palavras-chave em formato de lista para o seu site com base no assunto, precisava de uma maneira de obter essas palavras-chave para as páginas da web facilmente. Então, modifiquei a rotina e encontrei o seguinte, também alterei os nomes das variáveis para nomes significantes:

    Sub generatecsv()

      Dim dataRow As Integer
      Dim listRow As Integer
      Dim data As String

      dataRow = 1: Rem the row that it is being read from column A otherwise known as 1 in vb script
      listRow = 1: Rem the row in column B that is getting written

      Do Until Cells(dataRow, 1).Value = "" And Cells(dataRow + 1, 1).Value = ""
        If (data = "") Then
          data = Cells(dataRow, 1).Value
        Else
          If Cells(dataRow, 1).Value <> "" Then
            data = data & "," & Cells(dataRow, 1).Value
          Else
            Cells(listRow, 2).Value = data
            data = ""
            listRow = listRow + 1
          End If
        End If
        dataRow = dataRow + 1
      Loop

      Cells(listRow, 2).Value = data

    End Sub
    
por 28.09.2011 / 19:23
1

A resposta do Sux2Lose é o meu método preferido, mas não funciona se você estiver lidando com mais do que um casal mil linhas, e pode quebrar para um número ainda menor de linhas se o seu computador não tiver muita memória disponível.

A melhor prática, neste caso, é provavelmente copiar a coluna, criar uma nova pasta de trabalho, especial em A1 da nova pasta de trabalho e Transpose , para que a coluna seja agora uma linha. Em seguida, salve a pasta de trabalho como .csv . Seu csv agora é basicamente uma lista separada por vírgula de texto simples que você pode abrir em um editor de texto.

Nota: Lembre-se de transpor a coluna para uma linha antes de salvar como csv. Caso contrário, o Excel não saberá colocar vírgulas entre os valores.

    
por 07.10.2014 / 00:56
-1

Uma das maneiras mais fáceis é usar o aplicativo da web zamazin.co para esse tipo de tarefa de separação de vírgulas. Basta preencher os dados da coluna e clicar no botão converter para criar uma lista separada por vírgulas. Você pode até usar algumas outras configurações para melhorar a saída desejada.

link

    
por 02.11.2016 / 13:45
-2

Use =CONCATENATE(A1;",";A2;",";A3;",";A4;",";A5) na célula em que você deseja exibir o resultado.

    
por 02.02.2011 / 17:32