有没有办法根据条件计算/返回 Excel 表格中最近的 10k 项?

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

我在 Excel 中有一个大表,而且它只会变得越来越大。数据可能应该存在于数据库中,但现在我没有那么奢侈。这些数据包括我对这个问题感兴趣的两列:一个分类变量和一个响应变量。在这种情况下,我的分类变量是零件号,响应是该条目的描述符(好、坏或丑)。

我需要找到每个类别的最新 10k 数据点,然后返回“良好”响应的计数。我有一个日期列和一个时间列,我想将其用作排序标准。

今天,我向表中添加新数据,然后手动使用表排序(非常慢)。然后在表格的一侧,我为每个类别有一列,并带有 If 函数,以便在该行与类别匹配时获得运行总计。我分别为每个类别提供了匹配函数,以查找计数达到 10k 的行。最后,Offset 函数将匹配的行定义为 CountIf 的终点,以仅计算“好的”数据点。

=COUNTIFS(OFFSET(Table1[@[category]],0,0,找到 10k 的行),category1,OFFSET(Table1[@[response]],0,0,找到 10k 的行 ),“好”)

我有 30 万多个数据点,正如我提到的,它只会变得更长,我的工作表只会变得更慢。我想使用工作表 SortBy 函数,但似乎不能在 SortBy 中使用 If ?除非有一种方法可以使用 if 创建一个虚拟数组,然后可以通过 SortBy 进行评估?

我已经用虚拟排序列进行了评估,但不确定这一切都可以协同工作...... =COUNTIF(OFFSET(FILTER(SORTBY(表1,表1[日期],-1,表1[时间],-1),表1[类别]=类别1),0,0,10000,1),"好")

Table1 是我的数据表。尝试按两个级别排序,日期(日)然后时间。我只想过滤掉符合 A1 中第一个类别的数据。然后它会变得混乱,因为我希望 Offset 函数抓取 10,000 个单元格,但我不知道如何引用我的虚拟过滤数组......但如果可以的话,然后计算标记为“Good”的单元格。

arrays excel sorting countif
1个回答
0
投票

我相信您不能在过滤结果上使用

COUNTIF
,例如
FILTER
SORTBY

不确定这是否是最简洁的,但我相信这就是您想要做的。请参阅底部的一些注意事项:

=LET(TOP,TAKE(SORTBY(Table1,Table1[Day],-1,Table1[Time],-1),10000),
COUNTA(CHOOSECOLS(FILTER(TOP,(CHOOSECOLS(TOP,1)=$F2)*(CHOOSECOLS(TOP,2)=G$1)),1)))

SORTBY
2 列(日期和时间)

TAKE
前 10,000 行

FILTER
由第 1 列和第 2 列(类别和响应)得出的结果

第一列的

COUNTA
可获取满足过滤条件的行数。

请注意,如果类别列有任何空白,或者没有符合条件的数据点(如果有 0 个匹配数据点,则返回 1),这可能无法正常工作

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