Encontre o último valor em um intervalo de células que atenda a uma condição

3

Estou procurando uma fórmula no LibreOffice Calc para encontrar o último valor em um intervalo que atenda a uma condição. Aqui estão os dados da amostra:

A         B             C           D                E                 F
Date      US Amount     Currency    Local Amount     Exchange Rate     Reconciled
01/01/01  $1000.00      GBP         654 GBP          1.53              x
01/05/01  $1000.00      EUR         757.12 EUR       1.32              x
01/18/01  $1000.00      GBP         688 GBP          1.45              x
01/19/01  $1000.00      EUR         763.36 EUR       1.31              x
01/28/01  $1000.00      GBP         675.58 GBP       1.48
01/29/01  $1000.00      EUR         778.87 EUR       1.28

Então, estou procurando uma fórmula que obtenha a última taxa de câmbio reconciliada da moeda apropriada. (Nesse caso, para EUR ele puxaria 1,31, já que o 1,28 ainda não foi reconciliado.) Parece que no Excel eu posso usar a função DLAST, mas isso não parece ter sido implementado no LibreOffice. .

Alguma solução alternativa para o LibreOffice?

    
por Allez les lions 09.09.2013 / 18:10

1 resposta

1

Sim, você pode usar a função MATCH para encontrar a <última> última linha que corresponde a um determinado critério . Dessa forma, você pode calcular o OFFSET com base no primeira linha. Ficaria assim:

=OFFSET(E2;(MATCH("x";F1:F100;-1)-1);0;1)

Ou, com algumas pausas e comentários inseridos:

=OFFSET(              // find Offset ...
    E2;               // ... starting from first exchange rate ...
    (                 // ... and go down some rows:
        MATCH(        // get row of last reconciled rate using MATCH:
            "x";      // search for "x" ...
            F2:F100;  // in F1 to F100 (make sure that the range covers all rates!)
            -1        // assuming a descending sort order. So, the last of a sequence
                      // of identical values is the "first" one.
        )-1           // MATCH would return 4, so OFFSET would point to 5,
                      // so reduce by -1
    );
    0;                // no "horizontal" offset (stay in the same column)
    1)                // return only one cell
    
por 09.09.2013 / 20:11