Encontre nomes de pessoas comuns a várias listas de participantes no Excel

1

Eu tenho cinco listas de participantes para eventos separados. Preciso encontrar alguém que tenha participado dos cinco eventos.

Eu usei um trabalho fazendo duas colunas de cada vez para comparar os endereços de e-mail usando =IF(ISERROR(MATCH(D3,$N$3:$N$124,0)),"",C3) , mas eu gostaria de fazer isso em um único hit.

Ou talvez o trabalho em volta tenha menos esforço do que criar uma solução única!

    
por Adversane 06.03.2016 / 21:18

3 respostas

1

Contanto que as cinco listas de participantes estejam em intervalos simples de células (por exemplo, se todas elas estiverem em suas próprias colunas), usar uma série de COUNTIF funções dentro de um AND deve funcionar para todas as versões de volta ao Excel 2000:

Para facilidade de uso, a fórmula para a célula B5 é reproduzida abaixo:

=AND(COUNTIF($E:$E,$A5)>0,COUNTIF($F:$F,$A5)>0,COUNTIF($G:$G,$A5)>0,COUNTIF($H:$H,$A5)>0,COUNTIF($I:$I,$A5)>0)

Embora seja difícil criar um número grande ou variável de colunas para pesquisar, não é muito ruim para cinco conjuntos de dados. Desde que suas listas estejam em um formato fácil de ser referenciado por uma fórmula como a acima, ela deve ser uma boa opção para você.

(Para notar, há provavelmente uma maneira mais elegante de fazer isso usando as funções modernas como COUNTIFS , se for desejado.)

    
por 06.03.2016 / 22:16
0

Se você salvar os dados como CSV e importá-los para o acesso.

SELECT "EmailAddress" distinto, count ("EmailAddress") como x FROM "Endereços" group por "EmailAddress"

Então, onde quer que a segunda coluna rotulada x seja 5, o endereço de e-mail ocorre 5 vezes e, portanto, elas estavam em todas as 5 classes.

    
por 06.03.2016 / 22:11
0

Eu acho que tenho uma abordagem melhor. Eu digo pense porque isso seria melhor se você tivesse muitos dados ou se eles fossem distribuídos em várias planilhas (ou até em pastas de trabalho). Também é uma boa abordagem porque a macro abaixo pode ser usada para muitas outras finalidades ao tentar encontrar dados correspondentes (ou, conforme o caso, dados não correspondentes).

Em resumo, essa macro permite que você encontre dados correspondentes entre dois intervalos, na mesma planilha ou em planilhas. Eu colei o código de macro na parte inferior desta resposta. Eu assumo neste estágio que você saberá o que fazer com isso. Eu também suponho que você está usando uma versão do Excel que é executada no Windows.

Resumo das etapas da macro

  1. Quando você executa a macro, ele pede para você selecionar o intervalo de células contendo os dados que você está procurando. Por exemplo, assumindo em sua primeira planilha você tem todos os endereços de e-mail na coluna C de C2 a C101, você selecionaria esse intervalo.
  2. Em seguida, a macro solicitará que você selecione o intervalo que deseja investigar. Basta escolher o intervalo que contém os endereços de email para o seu segundo evento.
  3. A macro solicitará que você especifique um 'comentário' para a macro para usar para indicar que encontrou um item correspondente. Você pode especificar qualquer coisa aqui, como "Encontrado", "Sim", etc.
  4. Finalmente, a macro solicitará que você insira uma letra da coluna. Isto é o coluna que a macro irá colocar o seu 'comentário' do passo anterior em.

Por exemplo

Vamos supor que você tenha cinco planilhas idênticas em sua planilha, cada planilha para cada lista de presença. Vamos supor que as Colunas A a F sejam preenchidas em cada planilha e que seja a Coluna C que contém os endereços de email. Vamos supor também que você tenha 100 participantes, para que os endereços de e-mail apareçam de C2 a C101 em cada planilha.

Execute a macro.

No Passo 1 , selecione o intervalo C2: C101 na sua primeira planilha. No Passo 2 , selecione o intervalo C2: C101 na sua planilha segundo . No Passo 3 , digite "Sim" como seu comentário. E para o Passo 4 digite a letra G (só porque é a primeira coluna vazia baseada no meu exemplo, mas no seu caso provavelmente será outra letra da coluna).

Quando a macro é executada, a coluna G da sua primeira planilha terá o texto "Sim" em qualquer linha em que o endereço de e-mail também foi encontrado na segunda lista de participantes.

Agora, no seu caso, você precisaria executar a macro novamente. Siga as etapas acima, exceto que, desta vez na Etapa 2, selecione o intervalo C2: C101 na terceira planilha e, na Etapa 4, selecione a próxima coluna após a selecionada anteriormente. No meu cenário, agora seria a coluna H.

Quando a macro é executada, a coluna H da sua primeira planilha terá o texto "Sim" em qualquer linha em que o endereço de e-mail também foi encontrado na terceira lista de participantes.

Agora você começará a ver o que está acontecendo. No momento em que você repetir essas etapas para cobrir todas as suas listas de presença, você terá quatro colunas contendo o texto "Sim", quando relevante. Agora você pode classificar / filtrar seus dados para que apenas as linhas que contêm "Sim" em todas essas colunas sejam exibidas. Estes são os que participaram de todos os eventos.

Finalmente, antes de usar qualquer macro, faça um backup dos seus arquivos do Excel para que você tenha uma cópia limpa!

Sub FindMatchingData()
'This macro and Excel Add-In was designed by Monomeeth to allow users an easy
'way to find matching data between two ranges, either within the same worksheet or
'across worksheets within the same workbook.

Dim MySearchRange As Range
Dim c As Range
Dim findC As Variant

Set MyRange = Application.InputBox( _
Prompt:="Select the range of cells containing the data you are looking for:", Type:=8)

Set MySearchRange = Application.InputBox( _
    Prompt:="Select the range you wish to investigate:", Type:=8)

Response = InputBox(Prompt:="Specify the comment you wish to appear to indicate the data was found:")

MyOutputColumn = Application.InputBox( _
Prompt:="Enter the alphabetical column letter(s) to specify the column you want the message to appear in.")

Set Sht = MyRange.Parent

  For Each c In MyRange
    If Not c Is Nothing Then

Set findC = MySearchRange.Find(c.Value, LookIn:=xlValues)

        If Not findC Is Nothing Then
           Sht.Range(MyOutputColumn & c.Row).Cells.Value = Response
        End If
    End If
  Next
Excel.Application.SendKeys Keys:="^{HOME}", Wait:=True
DoEvents
MsgBox "Investigation completed."

End Sub
    
por 07.03.2016 / 01:58