Encontre linha correspondente no array

1

Eu tenho uma lista de produtos contendo o peso de cada produto. Tenho outra tabela com intervalos de pesos e cada intervalo tem um custo de armazenamento diferente.

Eu gostaria de ter uma fórmula que identifique em qual faixa cada produto e o custo de armazenamento correspondente.

Veja o que eu tenho (parte superior: lista do produto, parte inferior: preço de armazenamento por intervalo):

Alguma ideia de como faço isso?

Melhor

Gabriel

    
por Gabriel Tortelli 24.02.2016 / 15:01

2 respostas

1

Se você puder dispor os dados como tal:

..paraqueocustodearmazenamentosejaaterceiracolunaemvezdoprimeiro,vocêpodeusarestafórmula:

=VLOOKUP($E2,$A$12:$C$16,3,TRUE)

Ondeoprimeiroargumentoéovalorquevocêestáprocurando,osegundoargumentoétodoointervaloparasuapesquisa(nãoincluindocabeçalhos),oterceiroargumentoéacolunadesuatabelaparaobterosdadoseoúltimoargumentoespecificaqueestápesquisandodentrodeumintervalo.

Observetambémqueseusvaloresparaoskgsdevemserformatadosdessaformaenãorealmentecontêmastring"KG" como um valor. Por exemplo, eu os formatei como tal:

Editar: Se você deseja manter os dados no mesmo layout, use:

=INDEX($A$12:$A$16,MATCH(E2,$B$12:$B$16,1))

Um pouco menos legível, mas não tão ruim quanto comecei inicialmente. Note que você realmente não precisa da coluna Weight to: , isso só precisa verificar se está acima da coluna Weight from:

    
por 24.02.2016 / 15:17
0

Você pode usar esta fórmula:

=IF(E2<=$C$12,$A$12,IF(E2<=$C$13,$A$13,IF(E2<=$C$14,$A$14,IF(E2<=$C$15,$A$15,IF(E2<=$C$16,$A$16)))))

para entender a lógica por trás disso, mostrarei como funciona:

IF(E2<=$C$12
    $A$12
ELSE
    IF(E2<=$C$13
       $A$13
    ELSE
        IF(E2<=$C$14
          $A$14
        ELSE
            IF(E2<=$C$15
               $A$15
            ELSE
                IF(E2<=$C$16
                   $A$16
                END IF
            END IF
        END IF
    END IF
END IF

É mais feio e confuso que a resposta de @ Jonno, mas quando você entende sua lógica é muito simples.

    
por 24.02.2016 / 15:23