顯示最新價格的電子表格公式

顯示最新價格的電子表格公式

我創建了一個 LibreOffice Calc 電子表格,其中包含 AC 列。在 A 欄中,我有一份購買的零件清單(按時間升序排列)。在 B 列中,我有相應價格的清單。在 C 列中,我想顯示最後購買價格對於當前部分。

這就是我想出的方法:

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

基本上可以用,但有兩個問題:

  1. 這是非常複雜的。有沒有更簡單的方法來實現這一點?
  2. 如果以前從未購買過該零件,它將顯示上一行中任何零件的價格。

更新:經過更多測試,它肯定不會按預期工作。我無法判斷這是否是 MATCH 函數中的錯誤,或者它是否不是適合該作業的函數。 MATCH 函數找到“較小或等於”,我認為“較小”條件導致了問題。

答案1

這是一個非常相似的問題如何讓VLOOKUP返回最後的匹配?。 A解決方案Excelll 的產品非常適合您的要求。

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

我將查找範圍設為任意大。您可以使用很大的範圍,因此在新增更多資料時無需調整公式。我的測試範例只有六個條目;未使用的行不會匹配任何內容,因此它們將被忽略。

這是 C1 中的公式,因此查找目標是 A1(兩個位置)。

MAX 函數會尋找最大數字匹配行(按時間順序排列,因此這將是最新的)。

這是一個陣列公式,因此需要使用 Ctrl-Shift-Enter 輸入。輸入 C1 後,您可以使用 Ctrl-C 複製儲存格,根據需要選取儲存格範圍,然後使用 Ctrl-V 貼上。如果新增更多數據,請複製並貼上另一個儲存格區塊。

或者,將其包裝在空白單元格測試中,並預先填充比您需要的更多的單元格:

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

使用此方法,預先填入的儲存格將保持空白,直到您為該行新增資料。

相關內容