需要前 10 名以及其他列中的相应值

问题描述 投票:0回答:1

我需要一些帮助。我有一个包含 3 列的电子表格,其中包含许多小项目的日期:

A 列:开始日期 B 栏:中途日期 C 栏:结束日期

每天都会添加新日期,具体取决于项目的状态更新。出于显而易见的原因,A 列的日期最多,而 C 列的日期最少。

我想要显示的是最近 10 个已结束项目的阶段之间的平均时间。使用 LARGE 函数在辅助列中列出 C 列中的 10 个最近结束日期很容易失败。然而,我并不总能在 A 列和 B 列中找到正确的匹配日期(同一行)。问题是多个项目通常在同一日期结束,因此当我列出前 10 个结束日期时,总会有一些相同的值。由于我对函数 XLOOKUP 或 INDEX 的了解有限,它总是返回第一个匹配的值,即使某些相同的结束日期具有不同的开始日期和中途日期。

我的猜测是我应该使用另一个函数(我在网上看到了一些 AGGREGATE 示例)来忽略之前在前 10 名中返回的行,但我可以弄清楚。

有人吗?

附注不重要??:有时B和C范围之间存在差距:开始的项目并不总是按顺序完成。我认为这并不重要,因为 C 列中的值始终在 A 列和 B 列中具有匹配的值。

A 栏 B 栏 C 栏
2012 年 1 月 2 月-17 日 12 年 3 月
2013 年 1 月 2 月-19 日 14 年 3 月
1 月 15 日 2 月 21 日
2015 年 1 月 2 月-24 日 14 年 3 月
1 月 17 日 2 月-24 日 2011 年 3 月
1 月 19 日
1 月 19 日 3月3日
1 月 23 日
等等... 等等... 等等...

我尝试了 XLOOKUP 和 INDEX 以及嵌套的 LARGE 函数,菜鸟的东西。它返回每个相同输入的第一个匹配项,它不会忽略以前返回的值(行)。

我尝试了在网上找到的 idex-aggregate 示例:

=index('a:a, aggregate(15, 6, row($2:$999)/(C:C=LARGE(C:C,1), row(1:1)))

向下拖动10行,返回错误。

我很乐意创建另一个具有唯一ID(1,2,3,4...)的辅助列,但它每次都会找到它匹配的第一个ID。

excel indexing aggregate
1个回答
0
投票

问题在于您的行的相对引用。 如果您想在向下拖动时忽略上一行,则需要使用

$C2:$C$100

以下是修正公式的方法:

=INDEX($A$1:$A$100,AGGREGATE(15,6,ROW($C2:$C$100)/($C2:$C$100=LARGE($C2:$C$100,1)),1),1)

向下拖动10行,你会看到这个:

enter image description here

公式细分:

  1. 获取c列中最大的日期:

=LARGE($C2:$C$100,1)
.

  1. 查找匹配的行号:

=AGGREGATE(15,6,ROW($C2:$C$100)/($C2:$C$100=LARGE(C2:$C$100,1)),1)

  1. 使用
    INDEX
    获取A列中匹配的行:

=INDEX($A$1:$A$100,AGGREGATE(15,6,ROW($C2:$C$100)/($C2:$C$100=LARGE($C2:$C$100,1)),1),1)

© www.soinside.com 2019 - 2024. All rights reserved.