最新の価格を表示するスプレッドシートの式

最新の価格を表示するスプレッドシートの式

列AからCまでのLibreOffice Calcスプレッドシートを作成しました。列Aには、購入した部品のリスト(時系列昇順)があります。列Bには、対応する価格のリストがあります。列Cには、最終購入価格現在の部分について。

私がこれを実行するために思いついたのは次の通りです:

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

基本的には動作しますが、2 つの問題があります。

  1. 非常に複雑です。これを実現するより簡単な方法はありますか?
  2. 部品がこれまでに購入されていない場合は、上の行にある部品の価格が表示されます。

更新: さらにテストしたところ、期待どおりに動作しないことがわかりました。MATCH 関数のバグなのか、この関数がジョブに適していないのかはわかりません。MATCH 関数は「小さいか等しい」を検索しますが、「小さい」条件が問題を引き起こしていると思います。

答え1

これは、VLOOKUPで次の値を返す方法最後マッチ?.あ解決Excellll はあなたの要件にほぼ適合します。

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

ルックアップ範囲を任意に大きくしました。非常に大きな範囲を使用すれば、データを追加しても数式を調整する必要がありません。私のテスト例ではエントリは 6 つだけでした。未使用の行は何も一致しないため無視されます。

これは C1 に入力される数式なので、検索対象は A1 (2 つの場所) になります。

MAX 関数は、最も番号の大きい一致する行 (時系列順、つまり最新の行) を検索します。

これは配列数式なので、Ctrl + Shift + Enter で入力する必要があります。C1 を入力したら、Ctrl + C でセルをコピーし、必要に応じてセルの範囲を選択して、Ctrl + V で貼り付けることができます。さらにデータを追加する場合は、別のセル ブロックをコピーして貼り付けます。

または、これを空白セルのテストでラップし、必要以上のセルを事前に入力します。

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

この方法では、行にデータを追加するまで、事前に入力されたセルは空白のままになります。

関連情報