显示最新价格的电子表格公式

显示最新价格的电子表格公式

我创建了一个包含 AC 列的 LibreOffice Calc 电子表格。在 A 列中,我列出了所购买的零件(按时间顺序升序排列)。在 B 列中,我列出了相应的价格。在 C 列中,我想显示上次购买价格对于当前部分。

这是我想出的办法:

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

它基本上可以工作,但是存在两个问题:

  1. 这非常复杂。有没有更简单的方法来实现这一点?
  2. 如果该部件之前从未购买过,它将显示上面一行中部件的价格。

更新:经过更多测试,它确实没有按预期工作。我不知道这是 MATCH 函数中的错误还是它不是适合这项工作的函数。MATCH 函数查找“小于或等于”,我认为“较小”条件导致了问题。

答案1

这个问题与如何让 VLOOKUP 返回最后的匹配?。 A解决方案Excellll 非常符合您的要求。

=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)

采用这种方法,预填充的单元格将保持空白,直到您为该行添加数据。

相关内容