Em uma planilha (Excel, Google Docs, OpenOffice), como faço para transpor dados de linhas para colunas, mas apenas células não nulas?

2

Eu trabalho com todos os três programas de planilhas listados acima, e acredito que minha pergunta possa ser respondida da mesma forma ou de forma semelhante para todos os três.

Na minha planilha, tenho uma linha superior cheia de cabeçalhos de coluna. A segunda linha corresponde aos dados correspondentes ao cabeçalho da coluna, mas algumas das células podem ou não estar vazias. Eu gostaria de transpor os dados nesta segunda linha para que a nova coluna ignore completamente as células nulas.

Por exemplo, se eu tiver uma linha com os valores "A", NULL, "C", "D" em células sequenciais, eu quero transpor tal que a nova coluna apareça "A", "C", " D "sem célula vazia para o NULL.

Espero que minha descrição seja bem descritiva. Obrigado.

    
por NoCatharsis 17.12.2009 / 15:44

5 respostas

2
NoCatharsis,

A resposta simples que tenho para você é específica do Excel (o Google Docs não tinha filtros semelhantes e as células filtradas do Calc copiavam o Open Office):

1) Use "AutoFiltro" (Filtro de Dados > Filtro & Automatório) e filtre por não-brancos.

2) Copie as células restantes

3) Cole especial (Editar > Colar especial) e selecione "Transpor" nas opções

JDB

    
por 17.12.2009 / 19:14
1

Dado o exemplo específico começando com uma linha e terminando com uma coluna, eu faria as mesmas etapas ao contrário, embora não goste da ideia de terminar com uma planilha filtrada. Se você puder ordenar os dados (ou seja, a ordem não importa), eles obterão todos os espaços em branco em um local onde você poderá excluir as linhas.

De qualquer forma, proponho uma solução melhor em todo o ciclo usando o filtro avançado: selecione sua linha de dados originais, copie, selecione uma célula em algum lugar em uma nova planilha com pelo menos uma célula vazia acima dela, cole > cole especial, marque "transpor", OK

Agora você tem uma coluna com lacunas.

Na célula acima, dê um rótulo à coluna, diga "data". Faça-o em negrito (Ctrl-B) para que o Excel detecte que este é um título, mesmo que seja um texto como o resto da coluna.

Em outra célula em algum lugar (por exemplo, duas células à direita), digite o mesmo rótulo e na célula abaixo de um asterisco (* - um curinga para mais tarde). Selecione sua coluna com todas as suas lacunas e cabeçalho

Vá para Faixa de dados > ordenar e filtrar grupo e clique em Filtro Avançado.

Marque "Copiar para outro local"

Verifique se o "intervalo da lista" tem sua coluna de dados selecionada.

Clique no botão "refify" ao lado de "Intervalo de critérios" e selecione as duas células que você criou antes com o cabeçalho e o curinga

Para o intervalo "copiar para", selecione qualquer célula nesta planilha, por exemplo, mais algumas colunas à direita.

Clique em OK.

Trabalho feito. Agora você tem um novo conjunto de dados contíguos e pode excluir as outras colunas.

Observe que você não pode usar o filtro avançado para copiar a nova lista para outra, exceto se você começar a partir dessa planilha em primeiro lugar, depois voltar para selecionar os dados e os critérios. Para uma abordagem rápida e suja, isso é muito mais simples.

    
por 17.12.2009 / 19:52
1

Não consigo pensar em uma maneira de fazer isso sem a programação de macros, por isso não tenho certeza sobre o Google Docs ou o OpenOffice, mas aqui está uma maneira de fazer isso no Excel.

Esta macro pressupõe:

  1. Seus dados estão em uma folha separada chamada "Folha1"
  2. Seu destino é uma folha em branco chamada "Folha2"

Para usar a macro, selecione as linhas que você deseja transpor na Folha1 e execute a macro com as linhas realçadas. Os resultados devem ser copiados para Sheet2.

Sub CopyNonNulls()

Dim DestinationCellAddress As String
DestinationCellAddress = "A1"

Dim CurrentCellAddress As String
CurrentCellAddress = DestinationCellAddress

For Each rw In Selection.Rows

    For Each c In rw.Cells

      If c.Value <> "" Then
        Worksheets("Sheet2").Range(CurrentCellAddress).Value = c.Value
        CurrentCellAddress = Worksheets("Sheet2").Range(CurrentCellAddress).Offset(1, 0).Address
      End If

    Next

    CurrentCellAddress = Worksheets("Sheet2").Range(DestinationCellAddress).Offset(0, 1).Address

Next

Worksheets("Sheet2").Select

End Sub
    
por 17.12.2009 / 19:51
1

Você pode fazer isso por meio da função TRANSPOSE no Google Spreadsheets. Encontre as explicações sobre como fazer isso aqui: link

    
por 11.01.2010 / 14:47
0

Use uma fórmula em um novo conjunto de células e colunas, como =A270 | =A272 | =A274 , depois preencha.

Ele automaticamente reorganiza essa coluna, A, por exemplo, e copia e cola valores para uma nova planilha.

    
por 26.01.2012 / 05:08