Excel 帮助器列以避开数组公式

Excel 帮助器列以避开数组公式,excel,Excel,我有一个数组公式来挑选列表中不同的值。但是,由于列表有时超过15000行,因此数组公式非常慢。有没有一种方法可以添加一个helper列来加快速度?(我无法为此使用透视表) 因此,我有一个从B2开始的列表,其值为01.01、01.02、02.04、04.08等(我的列表在此列中从最小到最大排序)。每个值都可能出现500次以上。我的列表的名称是TaskCode。我使用了数组公式{=INDEX(TaskCode,MATCH(0,COUNTIF($C$1:C1,TaskCode),0)),还找到了一个正

我有一个数组公式来挑选列表中不同的值。但是,由于列表有时超过15000行,因此数组公式非常慢。有没有一种方法可以添加一个helper列来加快速度?(我无法为此使用透视表)

因此,我有一个从B2开始的列表,其值为01.01、01.02、02.04、04.08等(我的列表在此列中从最小到最大排序)。每个值都可能出现500次以上。我的列表的名称是TaskCode。我使用了数组公式
{=INDEX(TaskCode,MATCH(0,COUNTIF($C$1:C1,TaskCode),0))
,还找到了一个正则公式
=INDEX(TaskCode,MATCH(0,INDEX(COUNTIF($C$1:C1,TaskCode),0,0))
。这两种方法都很慢,特别是当你开始达到2万和3万行时。我还考虑使用一个引用列
=COUNTIF($C$1:C1,C1)
(向下拖动),然后选择1。然而,我不知道快速找出1的最佳方法

无论如何,如果您能帮助我们加快这一过程,我们将不胜感激。

我将添加一个helper“ID”列,其中包含以下公式:

=IF(ISNA(MATCH($B2,$B$1:$B1,0)), MAX($C$1:$C1)+1,"")
这应该更快,因为每个单元格只查看上面的单元格范围,而不是整个“TaskCode”列

然后,您可以使用静态ID以及
索引
/
匹配
来获得任务代码的不同列表:

更好

如果您可以确保任务代码始终按从最小到最大的顺序排列,则只需检查上面的单元格即可:

=IF($B2=$B1,"", MAX($C$1:$C1)+1)

它有什么作用?您能否提供一个包含输入和预期输出的小样本表?