Usuário com melhor resposta
Trazer um valor caso ele não esteja na selação

Pergunta
-
Bom dia,
Tenho uma planilha que uso o procv para puxar alguns valores um ranking das três primeiras.
Exemplo: 1° Empresa A
2° Empresa B
3° Empresa C
Quero que uma determinada empresa mesmo que não esteja entre as 3 primeiras aparece no ranking no lugar da ultima colocada.
Exemplo: 1° Empresa A
2° Empresa B
7° Empresa H (no lugar da ultima pois quero que sempre a empresa H apareça)
Agradeo desde já
- Editado Elo10 quinta-feira, 3 de setembro de 2015 14:15
Respostas
-
Então não precisa de macros.
Experimente escrever na célula B8 a fórmula abaixo:
=SE(ÉERROS(CORRESP("GRUPO BRADESCO";C6:C7;0));ÍNDICE('Plan 1'!A:A;CORRESP("GRUPO BRADESCO";'Plan 1'!B:B;0));3)
Explicação da fórmula:
"Se o Bradesco não está em C6:C7, mostrar o ranking do Bradesco. Caso contrário, mostrar o ranking do 3º lugar"Segunda parte:
ÍNDICE('Plan 1'!A:A;CORRESP("GRUPO BRADESCO";'Plan 1'!B:B;0))
O CORRESP me fala em qual linha encontrou o bradesco. Suponha que seja 10 o resultado. Esse valor será passado à função ÍNDICE, que se tornará:ÍNDICE('Plan 1'!A:A;10), que significa: Quero o valor do texto da 10ª célula da coluna AFelipe Costa Gualberto - http://www.ambienteoffice.com.br
- Marcado como Resposta Elo10 quinta-feira, 24 de setembro de 2015 19:24
Todas as Respostas
-
-
PODERIA ME EXPLICAR MELHOR SEGUE O PRINT DA MINHA PLANILHA
Nessa planilha quero que o terceiro lugar apareça a Empresa Grupo Bradesco somente caso ela não estiver em 1° ou 2 lugar.
Essas informações estão sendo puxadas de uma planilha ao lado que tem um ranking de mais de 40 empresas.
-
Preciso ver como está a tabela dos rankings de todos os bancos para sugerir uma fórmula.
Você pode disponibilizar no OneDrive ou SendsPace, removendo informações confidenciais?
Felipe Costa Gualberto - http://www.ambienteoffice.com.br
-
-
Elo,
Não respondo e-mails de fórum, acesso somente arquivos que estejam publicamente disponiveis. É uma política de participação de fóruns que sigo, porque assim, mais pessoas poderão te ajudar.
Felipe Costa Gualberto - http://www.ambienteoffice.com.br
-
Não estou tendo acesso do meu serviço ao One Drive....
Segue o print da primeira tebal que é a de Ranking (Nela eu tenho abwerto as informações por região) Todo mês irei atualzar esses dados mais a base sempre será a mesma.
Plan 2 (A imagem que eu ja tinha encaminhado ) segue:
Presciso que a terceira posição no ranking seja o Grupo Bradesco somente caso ele não esteja em primeiro ou segundo lugar. Caso ele esteja em primeiro ou segundo lugar o terceiro lugar permanece o mesmoque está rankiado na planilha 1 -
Experimente utilizar o SendSpace.com. Basta entrar no site, fazer o upload do seu arquivo. Ele te dará um link, copie esse link e poste aqui no tópico. Me desculpe insistir nessa questão, mas é necessário para o bom funcionamento do fórum.
---
Felipe Costa Gualberto - http://www.ambienteoffice.com.br
-
Com essas telas, tente esta macro:
Private Const SEARCH_STRING As String = "GRUPO BRADESCO" Const RANKING_COLUMN As String = "B" Const REGIÃO_COLUMN As String = "C" Type InfoType Região As String RankingColumn As Range GrupoColumn As Range End Type Dim Info(1 To 6) As InfoType Dim wsDB As Worksheet Dim wsSummary As Worksheet Sub Main() Dim i As Long Dim iInfo As InfoType Dim BradescoRow As Variant Dim MatchRow As Long Setup For i = LBound(Info) To UBound(Info) iInfo = Info(i) BradescoRow = GetBradescoRow(iInfo.Região) If BradescoRow = 0 Then GoTo linNext MatchRow = WorksheetFunction.Match(SEARCH_STRING, iInfo.GrupoColumn, 0) wsSummary.Cells(BradescoRow, RANKING_COLUMN) = wsDB.Cells(MatchRow, iInfo.RankingColumn.Column) wsSummary.Cells(BradescoRow, REGIÃO_COLUMN) = wsDB.Cells(MatchRow, iInfo.GrupoColumn.Column) linNext: Next i End Sub Private Function GetBradescoRow(pRegião As String) As Variant Dim RegiãoRow As Long Dim Top3Range As Range Dim BradescoRow As Variant RegiãoRow = WorksheetFunction.Match(pRegião, wsSummary.Columns(REGIÃO_COLUMN), 0) Set Top3Range = wsSummary.Cells(RegiãoRow + 1, REGIÃO_COLUMN).Resize(3) BradescoRow = Application.Match(SEARCH_STRING, Top3Range, 0) If Not IsError(BradescoRow) Then BradescoRow = 0 Else BradescoRow = Top3Range(3).Row End If GetBradescoRow = BradescoRow End Function Private Sub Setup() With ThisWorkbook Set wsDB = .Worksheets("Plan 1") Set wsSummary = .Worksheets("Plan 2") End With With wsDB Info(1).Região = "SUDESTE" Set Info(1).RankingColumn = .Columns("A") Set Info(1).GrupoColumn = .Columns("B") Info(2).Região = "SUL" Set Info(2).RankingColumn = .Columns("L") Set Info(2).GrupoColumn = .Columns("M") Info(3).Região = "CENTRO OESTE" Set Info(3).RankingColumn = .Columns("W") Set Info(3).GrupoColumn = .Columns("X") Info(4).Região = "NORTE" Set Info(4).RankingColumn = .Columns("AH") Set Info(4).GrupoColumn = .Columns("AI") Info(5).Região = "NORDESTE" Set Info(5).RankingColumn = .Columns("AS") Set Info(5).GrupoColumn = .Columns("AT") Info(6).Região = "BRASIL" Set Info(6).RankingColumn = .Columns("BD") Set Info(6).GrupoColumn = .Columns("BE") End With End Sub
Felipe Costa Gualberto - http://www.ambienteoffice.com.br
-
Bom dia.
Desculpe. Não entendo quase nada de macro e VBA (Prescios muito conseguir fazer isto)
Peguei o codigo que me mandou acima e colei no Visual Basic (Segue print)
Depois executei na setinha verde.
O que mais devo fazer para funcionar?
-
-
Boa tarde,
Consegui executar o codigo mas o que acontece:
Quando o Bradesco está em terceiro lugar no mês anterior e atualizo para o mês atual ele passa a estar em segundo lugar, o terceiro lugar não muda continua Bradesco, queria que puxasse a empresa do terceiro lugar já que o Bradesco já entre as 2 primeiras.
Exemplo: no print abaixo Centro Oeste - O bradesco estava em 3 Lugar, no proximo mês quando atualizo as informações o Bradesco agora está em 2° Lugar, mais na terceira posição permanece o Bradesco, pois quando excuto a macro na terceira posição O PROCV SOME.
-
-
-
Então não precisa de macros.
Experimente escrever na célula B8 a fórmula abaixo:
=SE(ÉERROS(CORRESP("GRUPO BRADESCO";C6:C7;0));ÍNDICE('Plan 1'!A:A;CORRESP("GRUPO BRADESCO";'Plan 1'!B:B;0));3)
Explicação da fórmula:
"Se o Bradesco não está em C6:C7, mostrar o ranking do Bradesco. Caso contrário, mostrar o ranking do 3º lugar"Segunda parte:
ÍNDICE('Plan 1'!A:A;CORRESP("GRUPO BRADESCO";'Plan 1'!B:B;0))
O CORRESP me fala em qual linha encontrou o bradesco. Suponha que seja 10 o resultado. Esse valor será passado à função ÍNDICE, que se tornará:ÍNDICE('Plan 1'!A:A;10), que significa: Quero o valor do texto da 10ª célula da coluna AFelipe Costa Gualberto - http://www.ambienteoffice.com.br
- Marcado como Resposta Elo10 quinta-feira, 24 de setembro de 2015 19:24
-