Como obter o Excel para interpretar a vírgula como um delimitador padrão em arquivos CSV?

78

Eu tenho vários arquivos .csv. Alguns deles são delimitados por vírgulas, alguns são delimitados por tabulações (talvez devessem ser chamados .tsv ...)

A extensão csv é associada ao Excel quando o Excel é instalado. No entanto, se eu abrir um desses arquivos com o excel, tudo será colocado na mesma coluna e a vírgula não será interpretada como um delimitador.

Eu posso em vez de Arquivo - > Importar ..., selecione o arquivo e escolha a maneira precisa de interpretar o conteúdo (delimitadores, tipos de dados, etc.) Mas na maioria das vezes eu quero procurar no arquivo por meio de uma clara vista de mesa. Eu não quero processá-lo com o Excel.

Existe uma maneira de fazer o Excel interpretar automaticamente o delimitador e mostrar o arquivo CSV como uma tabela apropriada assim que é aberto? Eu preciso disso para poder usar o Excel como um visualizador rápido para esses arquivos.

Eu suspeito que deve haver uma maneira, caso contrário, o Excel não se associaria a arquivos CSV.

    
por Szabolcs 11.06.2013 / 13:04

8 respostas

73

Ao abrir arquivos CSV, o Excel usará uma configuração regional do sistema chamada List separator para determinar qual delimitador padrão usar.

Microsoft Excel will open .csv files, but depending on the system's regional settings, it may expect a semicolon as a separator instead of a comma, since in some languages the comma is used as the decimal separator. (from Wikipedia)

Em Windows , você pode alterar a configuração List separator em Regional and Language Options , conforme especificado no Site de suporte do Office :

Change the separator in a CSV text file

  1. Click the Windows Start menu.
  2. Click Control Panel.
  3. Open the Regional and Language Options dialog box.
  4. Click the Regional Options Tab.
  5. Click Customize / Additional settings (Win10).
  6. Type a new separator in the List separator box.
  7. Click OK twice.

Nota : isso só funciona se o símbolo Decimal não for designado também como vírgula (de acordo com a citação da Wikipedia acima). Se for, o Excel não usará a vírgula como o separador de lista, mesmo se escolhido. Para muitas regiões não pertencentes aos Estados Unidos, a vírgula é o símbolo decimal padrão.

Em Mac OS X , essa configuração parece ser deduzida da configuração separador decimal (no Idioma e região painel de Preferências do Sistema , vá para Avançado ). Se o Separador Decimal for um ponto, o separador CSV padrão será uma vírgula, mas se o Separador Decimal for uma vírgula, o separador CSV padrão será um ponto e vírgula.

Como você mesmo disse no comentário, há uma alternativa para os usuários do Mac olharem rapidamente para esses arquivos CSV. É o plugin para Quick Look chamado quicklook-csv que lida com a detecção de separadores.

    
por 11.06.2013 / 13:07
76

Se você não quiser modificar o formato do arquivo e estiver SOMENTE visando o Excel, poderá usar o seguinte truque do Excel para ajudá-lo.

Adicione uma nova linha na parte superior do arquivo com o texto "sep=," (incluindo aspas) para que o Excel abra o arquivo com "," como o separador de lista.

É um truque muito fácil evitar alterar as configurações regionais do Windows e obter um resultado consistente. Mas é específico do Excel.

    
por 10.12.2013 / 15:38
9

Você não precisa das aspas em torno do sep=, - desde que seja a primeira linha do arquivo que funcionará, pelo menos no Excel 2016.

Descobri que, se o arquivo é delimitado por tabulações, sep=\t funciona bem, com e sem as aspas.

    
por 02.06.2017 / 14:27
1

Quando o separador nas configurações regionais não for uma vírgula, mas um ponto-e-vírgula (separador de holandês), renomeie o arquivo CSV para um arquivo TXT. Clique com o botão direito no arquivo TXT e selecione "Abrir com" e selecione "Excel". No Excel, selecione a primeira coluna, selecione os dados na faixa de opções e separe o texto em colunas.

OR

Instale o LibreOffice e abra o arquivo CSV com o LibreOffice Calc.

    
por 25.06.2018 / 16:46
1

A resposta aceita está correta, mas eu sou uma pessoa visual. Aqui está cada passo no formato de tela de como fazer isso no Windows 10.

    
por 21.07.2018 / 13:55
0

Certifique-se de inspecionar o arquivo CSV em um editor simples, como o Bloco de notas, para verificar se está formatado corretamente.

Eu adicionei esta resposta depois que resolvi um bug estúpido em que os arquivos CSV criados com o VB não eram abertos com colunas separadas no Excel. Eu descobri que a maneira que eu tinha escrito as linhas envolveu cada linha com aspas. O Excel escondeu as aspas e mostrou toda a linha na coluna A, fazendo parecer que ela ignorava meus separadores de vírgulas.

    
por 12.06.2017 / 19:22
0

melhor maneira será salvá-lo em um arquivo de texto com extensão csv

Sub ExportToCSV()
    Dim i, j As Integer
    Dim Name  As String

    Dim pathfile As String


    Dim fs As Object
        Dim stream As Object

        Set fs = CreateObject("Scripting.FileSystemObject")
    On Error GoTo fileexists

    i = 15
    Name = Format(Now(), "ddmmyyHHmmss")
    pathfile = "D:\" & Name & ".csv"

    Set stream = fs.CreateTextFile(pathfile, False, True)

fileexists:

    If Err.Number = 58 Then
        MsgBox "File already Exists"
        'Your code here
        Return
    End If
    On Error GoTo 0

    j = 1
    Do Until IsEmpty(ThisWorkbook.ActiveSheet.Cells(i, 1).Value)

        stream.WriteLine (ThisWorkbook.Worksheets(1).Cells(i, 1).Value & ";" & Replace(ThisWorkbook.Worksheets(1).Cells(i, 6).Value, ".", ","))

        j = j + 1
        i = i + 1
    Loop

stream.Close

End Sub
    
por 31.07.2017 / 08:30
0

Para o holandês, tive um problema que o Excel 2008 no Windows 7 não aderiu ao RFC4180:

"Fields containing line breaks (CRLF), double quotes, and commas should be enclosed in double-quotes."

Um arquivo separado por vírgula possuía corretamente campos com uma vírgula (separador decimal holandês) entre aspas duplas. No código de idioma holandês, o separador decimal é , e o separador de lista é ; , portanto, o Excel não pôde ler um arquivo com , usado para ambos (nem mesmo depois de alterar explicitamente o separador de lista para , no Painel de Controle).

A entrada se parece com:

"06-07-2017 17:03:18","********",0:01:04,Uitgaand,"0,1879","0,2273","0,0395",21

A solução foi dada por @ user280725:

Use o Bloco de notas para inserir como primeira linha:

sep=,

(Isso significa que a Nota do usuário @zakinster em sua solução não precisa mais ser aplicada.)

Interessante: com o arquivo csv ainda carregado, se você definir a localidade como inglês americano no Painel de controle e salvar o arquivo, ele será convertido para o formato inglês dos EUA (vírgula como separador de lista e ponto como separador decimal).     
por 22.01.2018 / 14:50