none
Trazer um valor caso ele não esteja na selação RRS feed

  • 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
    quinta-feira, 3 de setembro de 2015 14:12

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 A


    Felipe Costa Gualberto - http://www.ambienteoffice.com.br

    • Marcado como Resposta Elo10 quinta-feira, 24 de setembro de 2015 19:24
    sexta-feira, 4 de setembro de 2015 19:36
    Moderador

Todas as Respostas

  • Se a lista está organizada em ordem sequencial e crescente, use a fórmula abaixo para obter a colocação da empresa desejada:

    =CORRESP("nome_da_empresa";B1:B5;0)


    Felipe Costa Gualberto - http://www.ambienteoffice.com.br

    quinta-feira, 3 de setembro de 2015 16:21
    Moderador
  • 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.

    quinta-feira, 3 de setembro de 2015 16:29
  • 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

    quinta-feira, 3 de setembro de 2015 17:27
    Moderador
  • Olá

    Mandei no seu email a planilha.

    Muito obrigadu por sua ajuda

    fico no aguardo.

    quinta-feira, 3 de setembro de 2015 18:06
  • 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

    quinta-feira, 3 de setembro de 2015 18:14
    Moderador
  • 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

     

    sexta-feira, 4 de setembro de 2015 12:31
  • 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

    sexta-feira, 4 de setembro de 2015 12:36
    Moderador
  • 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

    sexta-feira, 4 de setembro de 2015 13:20
    Moderador
  • 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?

    sexta-feira, 4 de setembro de 2015 14:25
  • Execute o procedimento Main. Apenas isso e esse código irá fazer o que deseja com o arquivo que você me enviou.

    Felipe Costa Gualberto - http://www.ambienteoffice.com.br

    sexta-feira, 4 de setembro de 2015 16:59
    Moderador
  • 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.

    sexta-feira, 4 de setembro de 2015 18:43
  • Só para esclarecer: a tela 'Plan 2' ficará fixa e os dados de 'Plan 1' são atualizados regularmente? É isso?

    Felipe Costa Gualberto - http://www.ambienteoffice.com.br

    sexta-feira, 4 de setembro de 2015 19:01
    Moderador
  • Isso mesmo, na plan dois uso o PROCV

    sexta-feira, 4 de setembro de 2015 19:11
  • 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 A


    Felipe Costa Gualberto - http://www.ambienteoffice.com.br

    • Marcado como Resposta Elo10 quinta-feira, 24 de setembro de 2015 19:24
    sexta-feira, 4 de setembro de 2015 19:36
    Moderador
  • Boa tarde.

    Muito Obrigado ... resolveu meu caso.

    Abraços

    quinta-feira, 24 de setembro de 2015 19:24