Página 1 de 1

Preencher nome depois seleção filtro

Enviado: 04 Dez 2015 às 08:26
por cristianff
Bom dia pessoal.
Deixa eu explicar o que eu preciso da ajuda de vocês.

Tenho uma planilha dinâmica que consulta o banco de dados e gera um relatório de comissão dos representantes, na primeira coluna ta tabela eu tenho o código do mesmo.
Como a tabela é inteiramente dinâmica, única coisa que falta para ficar 100% na hora de imprimir o relatório, é quando o filtro do representante por selecionado, ele de alguma maneira preenchesse o código e o nome via procv (pode ser) em frente ao campo onde eu indico o nome.

Vou postar uma imagem da tabela.
Imagem

Quando o usuário selecionar o filtro da coluna "REP", o Excel levar esse código na coluna/linha D3 aí com o código eu posso fazer um PROCV para o nome do representante que foi selecionado.

Com alguma função do Excel eu conseguiria fazer isso ou apenas com VB?

Grato e obrigado a todos.

Preencher nome depois seleção filtro

Enviado: 04 Dez 2015 às 08:53
por Parkeless
Bom dia!

A imagem não apareceu :s

Re: Preencher nome depois seleção filtro

Enviado: 04 Dez 2015 às 09:09
por cristianff
Parkeless escreveu:Bom dia!

A imagem não apareceu :s
Tinha hospedado ela no Tinypic, agora coloquei ela aqui no fórum mesmo.
Valeu pelo retorno.

Re: Preencher nome depois seleção filtro

Enviado: 04 Dez 2015 às 10:13
por Parkeless
Bolei uma forma de retornar o nome do filtro atual, mas é mais uma ideia pra você adaptar; retornando o nome do filtro, você consegue usar um Procv.

Dá uma olhada

Re: Preencher nome depois seleção filtro

Enviado: 04 Dez 2015 às 15:40
por cristianff
Parkeless escreveu:Bolei uma forma de retornar o nome do filtro atual, mas é mais uma ideia pra você adaptar; retornando o nome do filtro, você consegue usar um Procv.

Dá uma olhada
Provavelmente vai dar certo para a milha planilha, vou testar essa solução e posto a resposta aqui com a planilha de exemplo para ficar de base de consulta.

Por enquanto muito obrigado.

Preencher nome depois seleção filtro

Enviado: 04 Dez 2015 às 16:22
por cristianff
Tentei usar aqui, a solução funciona perfeitamente se usar uma Tabela Dinâmica via powerpivot ou usando uma fonte de dados interna mesmo.

Eu utilizo uma SQL pra consultar o banco e insere direto na pasta de trabalho, assim quando eu aplico o filtro, a próxima linha segundo a sua fórmula não será a linha 4 e sim a linha referente ao filtro com as linhas omitidas pelo filtro.

No filtro que eu aplico eu tenho que mostrar todas as linhas do referido representante.
Veja o anexo que vai ser mais fácil de visualizar.

Abraço.

Preencher nome depois seleção filtro

Enviado: 04 Dez 2015 às 16:42
por Parkeless
Cristian,

Realmente com filtros comuns não vai funcionar, porque ele age diferente do de uma tabela dinâmica...

Não há a possibilidade de deixar esse relatório via SQL, como tabela dinâmica?

Se não houver, posso tentar verificar alguma forma de fazer com VBA... :s

Re: Preencher nome depois seleção filtro

Enviado: 05 Dez 2015 às 07:43
por cristianff
Parkeless escreveu:Cristian,

Realmente com filtros comuns não vai funcionar, porque ele age diferente do de uma tabela dinâmica...

Não há a possibilidade de deixar esse relatório via SQL, como tabela dinâmica?

Se não houver, posso tentar verificar alguma forma de fazer com VBA... :s
Acho que uma opção vai ser desmembrar por abas e em cada uma o seu respectivo representante.
Como o filtro de data eu iria alterar manualmente no script que busca a informação no banco de dados, utilizando desta maneira vai dar muita manutenção pois se eu tiver 20 representantes eu terei que fazer um a um quando virar o mês, na realidade tem mais de 40 representantes.
Fazendo numa mesma planilha, eu alteraria a data inicial e final apenas uma vez e utilizaria o filtro.

Vou estudando aqui a melhor opção.

Preencher nome depois seleção filtro

Enviado: 05 Dez 2015 às 14:57
por Parkeless
Cristian, tenta essa função:
Código: Selecionar todos
Function Filtro_Atual(Intervalo As Range)
Dim cell As Range
Dim texto As String

For Each cell In Intervalo 'Para cada célula no intervalo
If cell.EntireRow.Hidden = False Then 'Verificar primeiro valor não filtrado
    texto = cell
    GoTo Procurar_mais 'verificar se há mais filtros
End If

Next cell

Procurar_mais:
For Each cell In Intervalo 'Para cada célula no intervalo
If cell.EntireRow.Hidden = False And cell <> texto Then
    texto = "Vários"
    Goto Final
End If

Next cell
Final:
Filtro_Atual = texto

End Function

Cola em um módulo, então vá em uma célula e digite, "=Filtro_Atual(Intervalo)"

Sendo "Intervalo" seu range de células que estão sujeitas ao filtro (sem o cabeçalho).

A função vai retornar o primeiro valor que encontrar, que não esteja filtrado. Se ela encontrar mais de um valor, retorna "Vários".

Te atende?