Notifications
Clear all

PROCV com condições iguais / buscar dados que contenham

4 Posts
4 Usuários
0 Reactions
1,226 Visualizações
(@mt419)
Posts: 6
Active Member
Topic starter
 

tenho uma base de dados com estas informações com contas correntes dos empregados:

http://prntscr.com/7ydxgu

gostaria de uma forma de procurar nesta planilha pela coluna "W" e sempre que encontrasse uma condição , no primeiro caso que seja "1SC" (empregado que trabalha na casa "1" e tem conta no "S"antander tipo "C"orrente), trouxesse o nome deste empregado para a coluna B da aba "1"

http://prntscr.com/7ydyxm

, ocorre que com o procv que usei, "=PROCV(A:A;BD_POR_CASA!W:X;2;FALSO)" retorna sempre um unico nome. como fazer para buscar e trazer todos?

 
Postado : 29/07/2015 7:20 am
Issamu
(@issamu)
Posts: 605
Honorable Member
 

Com PROCV você não vai conseguir extrair essas informações. Vejo duas alternativas que são relativamente complexas:

1) Fórmula Matricial: Em B4 da sua planilha 1 aplicar a fórmula com CRTL+SHIFT+ENTER e arrastar para demais linhas:

=ÍNDICE(BD_POR_CASA!$X:$X;MENOR(SE(BD_POR_CASA!$W$2:$W$100=A4;LIN(BD_POR_CASA!$W$2:$W$100);"");LIN(A1)))

Estou assumindo 100 linhas no BD_POR_CASA. Quando trabalhamos com fórmula matricial eu não recomendo utilizar o endereço de coluna puro (ex: W:W), por poderá travar o Excel uma vez que a fórmula matricial processará a fórmula para uma matriz de milhões de linhas.

2) Criar uma UDF (User defined Function) para realizar essa busca:

- Pressione ALT+F11 para abrir o VBA
- Adicione um novo módulo no projeto do arquivo
- Cole o código abaixo:

Function PROCVN(Val1 As Variant, Table As Range, ResultCol As Integer, Val1Occrnce As Integer)
    Dim i As Integer
    Dim iCount As Integer
    Dim rCol As Range
        For i = 1 To Table.Rows.count
            If UCase(Table.Cells(i, 1)) = UCase(Val1) Then
                iCount = iCount + 1
            End If
            If iCount = Val1Occrnce Then
                PROCVN = Table.Cells(i, ResultCol)
                Exit For
                Else
                PROCVN = CVErr(xlErrNA)
            End If
        Next i
End Function

- Feche o VBA
- Na planilha 1 na célula B4 a fórmula referente a esta função personalizada ficará:

=PROCVN(A4;BD_POR_CASA!$W$2:$X$100;2;LIN(A1))

Também estou assumindo 100 linhas no BD_POR_CASA.

Para manter o funcionamento da UDF será preciso salvar o arquivo como pasta habilitada para macro (.xlsm).

Rafael Issamu F. Kamimura
Moderador Oficial Microsoft Community - MCC (Contribuidor do Microsoft Community)
http://zip.net/bjrt0X - http://zip.net/bhrvbR
Foi útil? Clique na mãozinha
Conheça: http://excelmaniacos.com/

 
Postado : 29/07/2015 7:48 am
(@verocb)
Posts: 1
New Member
 

Tentei a sua explicação para um excel com 600 linhas mas ele não dá o resultado de todas, da apenas para 200 sabe como resolver?

 
Postado : 17/09/2015 9:55 am
(@mprudencio)
Posts: 2749
Famed Member
 

Usando formula faça assim

=ÍNDICE(BD_POR_CASA!$X:$X;MENOR(SE(BD_POR_CASA!$W$2:$W$1000=A4;LIN(BD_POR_CASA!$W$2:$W$1000);"");LIN(A1))

Alterei a formula de 100 para 1000 caso precise de mais ou menos altere o valor para o numero desejado se quiser apenas 600 é so alterar 1000 para 600 e lembre-se finalize com CTRL+SHIFT+ENTER do contrario da erro

Para a função do codigo abaixo funciona igual alterei tb para 1000 linhas se desejar menos altere o valor 1000 para 600 na formula abaixo.

PROCVN(A4;BD_POR_CASA!$W$2:$X$1000;2;LIN(A1))

Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho."
Autor Desconhecido

Simplifica que simples fica.
Nicole Tomazella.

"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.

 
Postado : 17/09/2015 10:11 am