Como obter a contagem das colunas correspondentes mais frequentes?


1

Precisa de ajuda para descobrir como fazer isso no Excel.

Eu tenho uma longa lista de nomes divididos em duas colunas - o primeiro e o último nome. Eu gostaria de descobrir quais são os 5 nomes completos mais populares, mas - Alguns sobrenomes e nomes são invertidos , e eu gostaria que "John | Smith" também contasse para "Smith | John". Como posso fazer isso no excel?

Eu tentei colocar ambas as colunas em uma tabela dinâmica e colocar o nome e sobrenome nos rótulos de linha e a contagem de nome nos valores, mas isso me dá uma longa lista de cada nome misturado com todos os outros nomes, e a única Uma maneira de descobrir o nome mais popular é percorrer a tabela inteira e contar o número mais alto que eu vejo. Quando eu adiciono um filtro de valor "top 10" aos resultados, os valores principais são retornados pelo primeiro nome que tem a frequência mais alta, independentemente de qual seja o sobrenome.

Por exemplo. Eu posso ter 5 nomes:

John Smith
Smith John
Frank White
Frank Green
Frank Black

E se eu aplicasse um filtro top 10, me mostraria que Frank era o nome mais comum, seguido por John Smith, embora o que eu realmente queira ver seja John Smith, já que estava lá mais do que qualquer outro nome.

Espero que isso faça sentido. Se alguém pudesse fornecer algumas dicas sobre como eu poderia conseguir isso, eu ficaria muito agradecido. Por favor, deixe-me saber se você tem alguma dúvida, obrigado!

EDIT: Sobre como determinar o que é um primeiro nome e qual é o sobrenome, a ordem dos nomes não importa realmente. O único problema que eu prevejo com isso é que haverá uma duplicata dos nomes mais frequentes, então, no exemplo que dei, "Smith John" e "John Smith" são os nomes mais populares, com 2 cada. (Se isso faz sentido.) Eu estou bem com isso, porque é muito fácil olhar para uma lista dos 10 melhores e descontar todos os outros resultados.


Como é "João" com 2 ocorrências mais frequentes que "Frank" com 3 ??
user1016274

@ user1016274 o "john smith" e "smith john" = 2, enquanto cada "Frank" tem apenas uma ocorrência.
Raystafariana

Você já tem uma lista de todos os nomes completos possíveis?
Raystafarian

@Rastafarian - Infelizmente eu tenho 1,4 milhões de linhas espalhadas por 100 livros, então não é realmente uma opção para corrigir os dados. Eu não tenho uma lista de todos os nomes completos possíveis.
Matt

1
Basicamente, a ordem do nome não precisa ser diferenciada. Desculpe pela confusão, estou usando o exemplo de nomes, mas minha situação atual é um pouco mais complicada de explicar e um pouco diferente. Basicamente Matt John e John Matt são exatamente o mesmo para mim.
Matt

Respostas:


0

edit: Após 3 edições da pergunta, isso pode funcionar melhor:

Suponha que as colunas A e B mantenham as partes do nome. Coloque isso na coluna C:

=A1&" "&B1

Em seguida, insira esta fórmula em uma coluna livre:

=(COUNTIF(C$1:C$7;$A1 & " " & $B1) + COUNTIF(C$1:C$7;$B1 & " " & $A1)) * NOT((COUNTIF(C$1:C1;$B1 & " " & $A1) > 0))

Isso conta os pares de nome, independentemente da ordem, e determina se o par invertido foi visto antes (observe o índice final em execução no terceiro COUNTIF). Se sim, a contagem será definida como zero. Desta forma, apenas pares únicos contarão.

Use um filtro Top10 nesta coluna para encontrar os mais frequentes.


1
Isso não vai funcionar - é a inversão de nomes que é o problema. John Smith vs Smith John.
Raystafarian

É isso? Eu pedi mais informações sobre isso.
user1016274

Obrigado por responder - não tenho certeza do que você quer dizer com "como posso determinar se está invertido?" O nome é invertido se o primeiro nome estiver na coluna do sobrenome e o sobrenome estiver na coluna do primeiro nome. Pode haver erros de ortografia também, mas não vou me preocupar em contar "Jon Smith" para "John Smith".
Matt

@Matt: e em: como você determina que "John" é um primeiro nome? Que tal "Princesa Lea" - é "Lea Princess", sem dúvida, um casal de sobrenome / primeiro nome?
user1016274

A distinção firstname / lastname não é realmente importante - veja post editado ou conversa com Raystafarian.
Matt

0

Você pode executar este código para encontrar todos os jogos e torná-los olhar o mesmo, se é first,lastoulast,first

Sub test()

Dim LastRow As Integer
LastRow = Cells(Rows.Count, "A").End(xlUp).Row

Dim fname As String
Dim lname As String

For i = 1 To LastRow
    fname = LCase(Cells(i, 1))
    lname = LCase(Cells(i, 2))
        For j = 1 To LastRow
            If LCase(Cells(j, 1)) = lname And LCase(Cells(j, 2)) = fname Then
                Cells(j, 1) = fname
                Cells(j, 2) = lname
            End If
        Next
Next

End Sub

Em seguida, use esses dados para sua tabela dinâmica.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.