Fórmula de planilha para exibir os preços mais recentes

Fórmula de planilha para exibir os preços mais recentes

Criei uma planilha do LibreOffice Calc com colunas AC. Na coluna A, tenho uma lista de peças adquiridas (em ordem cronologicamente crescente). Na coluna B, tenho uma lista de preços correspondentes. Na coluna C, quero mostrar oúltimo preço compradopara a parte atual.

Isto é o que eu inventei para fazer isso:

=INDIRECT(CONCATENATE("B",TEXT(MATCH(A8,A1:A7,1),"#")))

Basicamente funciona, mas há dois problemas:

  1. É muito complicado. Existe uma maneira mais simples de fazer isso?
  2. Se a peça nunca tiver sido comprada antes, será exibido o preço de qualquer peça que esteja na linha acima.

ATUALIZAÇÃO: Com mais testes, definitivamente não funciona como esperado. Não sei dizer se é um bug na função MATCH ou se não é a função apropriada para o trabalho. A função MATCH encontra "menor ou igual" e acho que a condição "menor" está causando problemas.

Responder1

Este é um problema bastante semelhante aoComo fazer com que VLOOKUP retorne odurarcorresponder?. Asoluçãoda Excellll atende perfeitamente às suas necessidades.

=INDEX(IF($A$1:$A$1000=A1,$B$1:$B$1000),MAX(IF($A$1:$A$1000=A1,ROW($A$1:$A$1000))))

Tornei os intervalos de pesquisa arbitrariamente grandes. Você pode usar um intervalo enorme para não precisar ajustar a fórmula à medida que adiciona mais dados. Meu exemplo de teste tinha apenas seis entradas; as linhas não utilizadas não corresponderão a nada, portanto serão ignoradas.

Esta é a fórmula que vai em C1, então o alvo da pesquisa é A1 (dois locais).

A função MAX encontra a linha correspondente com o número mais alto (ordem cronológica, então será a mais recente).

É uma fórmula de matriz, portanto precisa ser inserida com Ctrl-Shift-Enter. Depois de inserir C1, você pode copiar a célula com Ctrl-C, selecionar um intervalo de células, conforme necessário, e colar com Ctrl-V. Se você adicionar mais dados, copie e cole outro bloco de células.

Ou envolva isso em um teste de células em branco e preencha previamente mais células do que você precisará:

=IF(ISBLANK(A1),"",formula_above)

Com essa abordagem, as células pré-preenchidas permanecerão em branco até você adicionar dados à linha.

informação relacionada