Transformar dados no Excel [fechado]

1

Eu tenho dois problemas com meus dados no Excel.

  1. Eu tenho essa tabela, então para cada dia do ano eu tenho 24 valores, são 365 colunas.

image1 http://imageshack.us/a/img600/1773/dataxz.jpg

Eu preciso escrever uma macro que transforme os dados verticalmente, um abaixo do outro . Como na outra mesa. Então o 1.1.1996 está em (B4: B28), 2.1.1996 (B29: B53) etc. Fiz uma macro simples mas não sei como continuar com ela automaticamente.

  1. O segundo problema é a tabela dinâmica, ou, como fazer, por exemplo, médias diárias / semanais / mensais ou somas de cada coluna separadamente. E do que o gráfico. Eu fiz uma tabela, mas isso me faz mal média

image2 http://imageshack.us/a/img690/5305/pivottable.png

    
por Peter 10.03.2013 / 11:31

1 resposta

0

Você pode fazer a transposição sem qualquer macro:

O caminho direto para o primeiro passo seria usar a função TRANSPOSE , ou seja, selecione um intervalo que seja 365rowsx24cols e digite =TRANSPOSE(B4:NB27) e pressione Ctrl + Shift + Digite .

No entanto, eu recomendaria abordar o problema 1 e 2 de uma maneira ligeiramente diferente: converta seus dados em uma lista, ou seja, uma tabela com 365 x 24 linhas x 3 colunas: Data , Hora , Valor . Essa tabela pode ser facilmente usada como fonte para uma tabela dinâmica!

Para fazer isso, você pode usar duas colunas auxiliares - a primeira começando em 1 e aumentando cada linha por uma até que seja 24, então redefina (Em A2: 1 , em A3: =IF(A2=24,1,A2+1) ), a segunda começando com 1 e aumentando em 1 a cada 24 linhas (B2: 1 , B3: =IF(A3=1,B2+1,B2) . Alternativamente, você poderia simplesmente usar a função ROW() (que retorna a linha da célula com a fórmula se nenhum parâmetro for fornecida) para derivar o número 1 a 24 com MOD(ROW(),24)-1 e o 1 a 365 com INT((ROW()-2)/24)+1 . (O +1 e -2 deve ajustar para a tabela de dados começando na linha 2).

Usando a função INDEX com esses dois parâmetros, agora você pode recuperar facilmente os dados das três colunas:

Data: =INDEX($B$3:$NB$3,B2) (ou sem as colunas auxiliares: =INDEX($B$3:$NB$3,INT((ROW()-2)/24)+1) )

Hora: =INDEX($A$4:$A$27,A2) (ou =INDEX($A$4:$A$27,MOD(ROW(),24)-1) )

Valor: =INDEX($B$4:$NB$27,A2,B2) (ou =INDEX($B$4:$NB$27,MOD(ROW(),24)-1),INT((ROW()-2)/24)+1) )

    
por 10.03.2013 / 23:53