Localizando instâncias em várias colunas e linhas do Excel

1

Estou trabalhando no MS Excel 2007 com dados referentes a uma série de postagens no fórum. Cada postagem é representada por uma linha de dados que inclui uma ID exclusiva para cada postagem, a ID exclusiva do usuário que a publicou, a ID exclusiva da discussão e várias colunas de variáveis descritivas. Uma dessas variáveis descritivas é se o post suporta ou não a discussão (é um pró ou um con). Existem vários milhares de usuários e vários milhares de posts.

1. Quero encontrar as instâncias em que os usuários fizeram mais de uma postagem na mesma discussão. (Provavelmente algumas dezenas de instâncias)

2. Eu quero as instâncias em que os usuários postaram um "pro" e um "con". (Provavelmente um punhado)

A questão número um é a mais importante. O segundo provavelmente será fácil, uma vez que eu descobri # 1, já que as instâncias são poucas.

Alternativamente, como eu poderia conseguir isso com o Access (com o qual estou muito menos familiarizado)?

    
por Stoney 14.11.2012 / 15:15

1 resposta

2

Isso é mais fácil no Access que no Excel.

No Access, importe seus dados do Excel usando o Assistente de importação. Quando seus dados estiverem em uma tabela, crie uma nova consulta, acesse a visualização SQL e use uma consulta como a seguinte para encontrar usuários postando mais de uma vez em uma única discussão:

SELECT DiscussionID, UserID, Count(PostID) as Number_of_Posts FROM Sheet1
GROUP BY DiscussionID, UserID
HAVING Count(UserID)>1;

Quando executado, retornará em forma de tabela o DiscussionID, o UserID e o número de postagens desse usuário na discussão para cada um que tenha mais de uma postagem. Obviamente, você terá que alterar os nomes de tabela e campo para corresponder ao seu banco de dados.

Para encontrar os usuários que postaram pro e con em uma única discussão, você pode usar a seguinte consulta:

SELECT DiscussionID, UserID, SUM(Number_of_Posts) as Posts
FROM (SELECT DiscussionID, UserID, Pro_Con, Count(PostID) as Number_of_Posts FROM Sheet1
      GROUP BY DiscussionID, UserID, Pro_Con)
GROUP BY DiscussionID, UserID
HAVING Count(UserID)=2;

Isso é meio que um truque da minha parte; Tenho certeza que tem que haver uma consulta mais eficiente para fazer o trabalho, mas, mesmo assim, isso funcionará.

    
por 14.11.2012 / 18:50