Parece uma tabela dinâmica simples para aprender. Gostaria de fazer uma contagem de valores exclusivos para um valor específico no qual estou agrupando.
Por exemplo, eu tenho isso:
ABC 123
ABC 123
ABC 123
DEF 456
DEF 567
DEF 456
DEF 456
O que eu quero é uma tabela dinâmica que me mostre isso:
ABC 1
DEF 2
A tabela dinâmica simples que eu criei me fornece isso (uma contagem de quantas linhas):
ABC 3
DEF 4
Mas quero o número de valores únicos.
O que realmente estou tentando fazer é descobrir quais valores na primeira coluna não têm o mesmo valor na segunda coluna para todas as linhas. Em outras palavras, "ABC" é "bom", "DEF" é "ruim"
Tenho certeza de que existe uma maneira mais fácil de fazer isso, mas pensei em tentar a tabela dinâmica ...
excel
excel-formula
pivot-table
user1586422
fonte
fonte
Respostas:
Insira uma terceira coluna e, em Cell,
C2
cole esta fórmulae copie-o. Agora crie seu pivô com base na 1ª e 3ª coluna. Ver instantâneo
fonte
=IF(SUM((A$2:A2=A2)*(B$2:B2=B2)) > 1, 0, 1)
(pressione Ctrl-Shift-Enter ao inserir a fórmula para que ela adquira em{}
torno dela).ATUALIZAÇÃO: Agora você pode fazer isso automaticamente com o Excel 2013. Criei isso como uma nova resposta porque minha resposta anterior realmente resolve um problema um pouco diferente.
Se você possui essa versão, selecione seus dados para criar uma tabela dinâmica e, ao criar sua tabela, verifique se a opção 'Adicionar esses dados ao modelo de dados' está marcada (veja abaixo).
Então, quando sua tabela dinâmica for aberta, crie suas linhas, colunas e valores normalmente. Em seguida, clique no campo que você deseja calcular a contagem distinta e edite as Configurações de valor do campo:
Por fim, role para baixo até a última opção e escolha 'Contagem distinta'.
Isso deve atualizar os valores da tabela dinâmica para mostrar os dados que você está procurando.
fonte
Gostaria de lançar uma opção adicional na mistura que não requer uma fórmula, mas pode ser útil se você precisar contar valores exclusivos dentro do conjunto em duas colunas diferentes. Usando o exemplo original, eu não tinha:
e deseja que apareça como:
Mas algo mais como:
e queria que ele aparecesse como:
Encontrei a melhor maneira de colocar meus dados nesse formato e, depois, poder manipulá-los ainda mais, usando o seguinte:
Depois de selecionar 'Total total em execução', escolha o cabeçalho do conjunto de dados secundário (nesse caso, seria o título do cabeçalho ou da coluna do conjunto de dados que inclui 123, 456 e 567). Isso fornecerá um valor máximo com a contagem total de itens desse conjunto, dentro do seu conjunto de dados principal.
Copiei esses dados, colei-os como valores e os coloquei em outra tabela dinâmica para manipulá-los mais facilmente.
Para sua informação, eu tinha cerca de um quarto de milhão de linhas de dados, portanto isso funcionou muito melhor do que algumas das abordagens de fórmula, especialmente aquelas que tentam comparar entre duas colunas / conjuntos de dados porque continuavam travando o aplicativo.
fonte
Eu achei a abordagem mais fácil é usar a
Distinct Count
opção emValue Field Settings
( clique esquerdo no campo noValues
painel). A opção paraDistinct Count
está no final da lista.Aqui estão o antes (TOP; normal
Count
) e o depois (INFERIOR;Distinct Count
)fonte
Veja os itens exclusivos da contagem de Debra Dalgleish
fonte
Não é necessário que a tabela seja classificada para que a fórmula a seguir retorne 1 para cada valor exclusivo presente.
assumindo que o intervalo da tabela para os dados apresentados na pergunta seja A1: B7, digite a seguinte fórmula na célula C1:
Copie essa fórmula para todas as linhas e a última linha conterá:
Isso resulta em um 1 sendo retornado na primeira vez que um registro é encontrado e 0 em todos os momentos seguintes.
Basta somar a coluna na sua tabela dinâmica
fonte
=IF(COUNTIF($B$1:$B1,B1),1,0)
- dessa forma, o countif será executado apenas uma vez!Minha abordagem para esse problema foi um pouco diferente do que vejo aqui, então vou compartilhar.
Nota: Gostaria de incluir imagens para tornar isso ainda mais fácil de entender, mas não posso, porque este é meu primeiro post;)
fonte
A resposta de Siddharth é fantástica.
No entanto , essa técnica pode ter problemas ao trabalhar com um grande conjunto de dados (meu computador congelou em 50.000 linhas). Alguns métodos menos intensivos em processador:
Verificação única de exclusividade
Use uma fórmula que analise menos dados
Várias verificações de exclusividade
Se você precisar verificar a exclusividade em colunas diferentes, não poderá confiar em dois tipos.
Em vez de,
Adicione fórmula cobrindo o número máximo de registros para cada agrupamento. Se o ABC tiver 50 linhas, a fórmula será
fonte
=A2&B2
. Em seguida, adicione uma coluna D e em D2 coloque=IF(MATCH(C2, C$2:C2, 0) = ROW(C1), 1, 0)
. Preencha os dois para baixo. Enquanto isso ainda pesquisa desde o início de todo o intervalo, ele para quando encontra o primeiro e, em vez de multiplicar os valores de 50.000 linhas, ele apenas precisa localizar o valor - para que ele tenha um desempenho muito melhor.O Excel 2013 pode fazer Contagem distinta em pivôs. Se não houver acesso a 2013 e for uma quantidade menor de dados, eu faço duas cópias dos dados brutos e, na cópia b, seleciono as duas colunas e removo duplicatas. Em seguida, faça o pivô e conte sua coluna b.
fonte
Você pode usar COUNTIFS para vários critérios,
= 1 / COUNTIFS (A: A, A2, B: B, B2) e arraste para baixo. Você pode colocar quantos critérios quiser lá, mas isso leva muito tempo para ser processado.
fonte
Etapa 1. Adicione uma coluna
Etapa 2. Use a fórmula =
IF(COUNTIF(C2:$C$2410,C2)>1,0,1)
no 1º registroEtapa 3. Arraste-o para todos os registros
Etapa 4. Filtre '1' na coluna com a fórmula
fonte
Você pode criar uma coluna adicional para armazenar a exclusividade e resumir isso na sua tabela dinâmica.
O que eu quero dizer é que a célula
C1
deve sempre ser1
. A célulaC2
deve conter a fórmula=IF(COUNTIF($A$1:$A1,$A2)*COUNTIF($B$1:$B1,$B2)>0,0,1)
. Copie esta fórmula para baixo para que a célulaC3
contenha=IF(COUNTIF($A$1:$A2,$A3)*COUNTIF($B$1:$B2,$B3)>0,0,1)
e assim por diante.Se você tem uma célula de cabeçalho, convém movê-las todas para uma linha e sua
C3
fórmula deve ser=IF(COUNTIF($A$2:$A2,$A3)*COUNTIF($B$2:$B2,$B3)>0,0,1)
.fonte
Se você tiver os dados classificados .. sugiro usar a seguinte fórmula
Isso é mais rápido, pois utiliza menos células para calcular.
fonte
Normalmente, ordeno os dados pelo campo em que preciso fazer a contagem distinta e depois uso IF (A2 = A1,0,1); você recebe um 1 na linha superior de cada grupo de códigos. Simples e não leva tempo para calcular em grandes conjuntos de dados.
fonte
Você também pode usar a coluna auxiliar
VLOOKUP
. Eu testei e parece um pouco mais rápido queCOUNTIF
.Se você estiver usando o cabeçalho e os dados estiverem iniciando na célula
A2
, em qualquer célula da linha, use esta fórmula e copie em todas as outras células da mesma coluna:fonte
Eu encontrei uma maneira mais fácil de fazer isso. Referindo-se ao exemplo de Siddarth Rout, se eu quiser contar valores únicos na coluna A:
fonte
B
. Como você adaptará isso para trabalhar com várias colunas?