Divide information

0

Eu tenho um arquivo do Excel com várias linhas (cerca de 1k). Cada linha descreve algumas ação de um usuário e (minha má) para ações diferentes existem linhas diferentes. Algo parecido com isto

      action              user
      ===============     =====
r1    lore ipsum 1        user1
r2    lore ipsum 2        user1
r3    lore ipsum 3        user2
r4    lore ipsum 1        user2
r5    lore ipsum 2        user3
r6    lore ipsum 4        user1
r7    lore ipsum 5        user1

Como você pode ver, tenho várias ações para user1. Tudo que eu preciso é colocar em uma linha única todas as ações do usuário1 e nas outras linhas as outras ações para os outros usuários (da mesma forma que para o usuário1) witohut duplicatas na coluna "user". Algo parecido com isto:

      action              user
      ===============     =====
r1    lore ipsum 1        user1
      lore ipsum 2        
      lore ipsum 4        
      lore ipsum 5        
r2    lore ipsum 3        user2
      lore ipsum 1        
r3    lore ipsum 2        user3

Como posso fazer isso? Muito obrigado

    
por Lc0rE 19.07.2013 / 14:03

2 respostas

0

Veja uma amostra de como seus dados podem ser armazenados:

Selecioneumadascélulasdatabela,comonaimagemacima.Emseguida,váparaomenuInserir>TabelasDinâmicas.Eleselecionarátodososseusdadosesolicitaráumacaixadediálogocomoesta:

Sinto muito! Meu Excel está em Português, mas acredito que você pode seguir as fotos.

Clique em Ok. Ele irá criar uma nova planilha, assim:

Eummenuseráexibidoàdireita:

Arraste e solte user , arraste e solte action para o Rótulo da Linha, na caixa inferior esquerda.

Oresultadoseráparecidocom:

Veja se isso é satisfatório para você ou se você deseja outra coisa. Podemos trabalhar em algo neste momento, mas talvez seja isso que vai precisar, eu não sei.

Desculpe o atraso para responder, estou no tempo de trabalho;)

    
por 19.07.2013 / 16:02
0

Crie uma nova tabela à direita da tabela existente, coloque os usuários à esquerda e crie uma coluna para cada ação possível. Esta é a única maneira confiável de registrar quem fez quais ações.

Em seguida, crie uma coluna à esquerda da sua tabela existente contendo esta fórmula:

=UserColumnCell&ActionColumnCell
i.e. =$C2&$B2

Isso lhe dará um valor que você pode usar para criar um VLOOKUP na sua nova tabela, como User1Lore ipsum 1 .

Volte para sua nova tabela e, na primeira célula da coluna mais à esquerda, adicione essa fórmula:

=IF(ISERROR(VLOOKUP(UserColumnCell&ActionColumnTitle),FirstTableRange,2,FALSE)),0,1)
i.e. =IF(ISERROR(VLOOKUP(E2&F1,$A$2:$C$1000,2,FALSE),0,1)

Como não corrigimos as referências de célula na primeira metade da fórmula, agora você pode arrastar a fórmula para cada ação e para baixo para cada usuário e ela será ajustada de acordo.

Por fim, copie todos os dados que acabamos de criar e cole-os novamente, criando o tipo de colagem como Values. Você pode saber destruir sua mesa original.



Obviamente, se você quiser um sinalizador diferente para a ação que está sendo feita, altere o 1 e o 0. Por exemplo, se desejar um pouco, você pode deixá-lo como está e usar a formatação condicional para 'células baseadas em seus valores'. o ícone Carrapato definido, ou você poderia simplesmente definir a fonte de cada uma das colunas de Ação para Marelett e substituir 0,1 por "","a" como a é um carrapato em Marlett.



Se você estiver usando tabelas, poderá simplificar isso usando referências de tabelas. Onde sua tabela existente é Table1 e a nova é Table2:

A fórmula na Coluna1 da Tabela 1 seria:

=[@User]&[@Action]

E a fórmula em cada uma das colunas de ação na Tabela2 seria:

=IF(ISERROR(VLOOKUP([@User]&Table2[[#Headers],[lore ipsum 1]],Table1,2,FALSE)),0,1)

Embora, se você fizer isso, você terá que redefinir a referência [@User] quando arrastar a fórmula, pois ela terá se desviado.



Então, o que isso está fazendo?
apenas no caso de você não ter experiência com o VLOOKUP: A instrução IF leva a habilidade de ditar o que nós produzimos, ao invés de apenas retornar o valor que o VLOOKUP encontra.

O ISERROR retornará um verdadeiro ou falso dependendo se o VLOOKUP encontra alguma coisa

O VLOOKUP procura por essa fórmula concatenada que construímos, para ver se pode encontrar um resultado dentro dessa coluna que corresponda à combinação de usuário e ação relevante para aquela combinação de coluna e linha na Tabela2, se ela encontrar o resultado, o que faz o ISERROR retornar como falso, e se ele não encontrar nada, ele cometerá erros, fazendo com que o ISERROR retorne como verdadeiro.

A saída do ISERROR é TRUE ou FALSE, se for TRUE, então não há correspondência, então deixamos um 0 ou um espaço em branco se você preferir mostrar que esse usuário não concluiu essa ação. Se ele retornar um FALSE, o usuário conclui essa ação para retornar 1 ou a para uma marca ou o que você preferir.



EDITAR
Essa resposta se baseia em você querer reformular sua tabela. Se você quiser manter sua tabela como está, eu diria o comentário de Math sobre as Tabelas Dinâmicas, já que elas seriam a melhor maneira de fazer isso se você precisasse manter a estrutura original da tabela, mas apresentar os dados de uma maneira diferente.

    
por 19.07.2013 / 15:26