![在 Excel 中返回特定参考数字的最新值](https://linux22.com/image/1512232/%E5%9C%A8%20Excel%20%E4%B8%AD%E8%BF%94%E2%80%8B%E2%80%8B%E5%9B%9E%E7%89%B9%E5%AE%9A%E5%8F%82%E8%80%83%E6%95%B0%E5%AD%97%E7%9A%84%E6%9C%80%E6%96%B0%E5%80%BC.png)
我有一张包含今年销售数据的 Excel 表,每行代表一笔交易。共有 47 列,但对我而言,重要的是零件代码、单价和日期。
我想要的是能够确定特定交易是否是该特定零件代码的最新交易。示例数据如下:
A B C D
1 partcode price date
2 red-one £50.00 01/06/2016
3 blue-two £4.50 01/11/2016
4 green-three £1.00 20/10/2016
5 red-one £45.00 01/11/2016
6 red-one £47.00 02/11/2016
7 blue-two £5.00 20/05/2016
8 yellow-four £31.50 30/10/2016
9 yellow-four £31.00 01/10/2016
因此,我的最终目标是能够确定红色一号的最新价格为 47 英镑,蓝色二号为 4.50 英镑,绿色三号为 1 英镑,黄色四号为 31.50 英镑。我认为我可以通过创建一个名为“最近”的辅助列来实现这一点,该列将在第 2、3、5 和 7 行返回 TRUE。然后我可以很容易地在数据透视表中过滤它。但我不知道如何在一个公式中同时完成这两件事(即按零件代码子集并检查日期是否是范围内的最大值)。
答案1
我想也许你的意思是“一个名为“Most Recent”的辅助列将在第 3、4、6 和 8 行返回 TRUE”,因为这些行是date
每个行中最新的partcode
。
对于Most Recent
辅助列,您可以使用数组公式。但是,这样做的一个潜在问题是,如果数组公式必须处理大量行,则速度会非常慢。如果这对您来说不是问题,请尝试以下操作:
- 在单元格中
E2
键入以下内容,但不要按下Enter键接受:=MAX(IF($B$2:$B$9=B2,$D$2:$D$9)) = D2
- 按Ctrl++接受公式,这将使其成为数组公式(如果操作正确,当单元格具有焦点时,您将在公式栏中看到围绕公式的花括号Shift)Enter
- 公式-
E2
通过单元格向下复制单元格E9
这是一个屏幕截图(我在美国,为了避免歧义,我将日期格式化为 YYYY-MM-DD):