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

1

Eu criei uma planilha do LibreOffice Calc com as colunas A-C. Na coluna A, eu tenho uma lista de peças compradas (em ordem cronologicamente crescente). Na coluna B, tenho uma lista de preços correspondentes. Na coluna C, quero mostrar o último preço comprado para a peça atual.

Isso é o que eu fiz para fazer isso:

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

Funciona basicamente, mas há dois problemas:

  1. É muito complicado. Existe uma maneira mais simples de conseguir isso?
  2. Se a peça nunca foi comprada antes, ela mostrará o preço da parte que está na linha acima.

UPDATE: 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.

    
por RockPaperLizard 15.10.2015 / 05:00

1 resposta

1

Este é um problema bastante semelhante ao Como obter o VLOOKUP para devolver a última correspondência? . Uma solução da Excellll se encaixa perfeitamente à sua necessidade.

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

Eu fiz os intervalos de pesquisa arbitrariamente grandes. Você pode usar um intervalo enorme para não precisar ajustar a fórmula ao adicionar mais dados. Meu exemplo de teste tinha apenas seis entradas; as linhas não utilizadas não correspondem a nada, por isso são ignoradas.

Esta é a fórmula que entra em C1, portanto, o destino de pesquisa é A1 (dois locais).

A função MAX encontra a maior linha de correspondência de número (ordem cronológica, de modo que será a mais recente).

É uma fórmula de matriz, por isso precisa ser digitada com Ctrl-Shift-Enter. Uma vez que C1 é inserido, 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élula em branco e pré-preencha mais células do que você precisa:

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

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

    
por 15.10.2015 / 06:38