【问题标题】:Rank ordering dates (and repeating the command for each ID/person)排列排序日期(并为每个 ID/人重复该命令)
【发布时间】:2019-06-20 20:20:04
【问题描述】:

我对数据集中的每个案例(人)都有一系列日期。我正在尝试为每个人对这些日期(有重复)进行排序。

我的问题是这个线程的直接应用:

How to rank the date in Excel without duplicates

我只是想弄清楚如何对数据集中的 100 多个案例重复此操作。

我从上面的线程中获得的示例代码:

=SUMPRODUCT((A$1:A$6<A1)/COUNTIF(A$1:A$6,A$1:A$6&""))+1

现在,我可以让 Excel 为每个人分别重复此代码(按 ID 区分)。

【问题讨论】:

    标签: excel repeat ranking


    【解决方案1】:

    您需要添加其他条件:

    =SUMPRODUCT((($A$2:$A$13=A2)*($B$2:$B$13<B2))/(COUNTIFS($B$2:$B$13,$B$2:$B$13,$A$2:$A$13,A2)+($A$2:$A$13<>A2)))+1
    

    【讨论】:

    • 这在样本子集上完美运行,但我还没有超过 16000 行的最终输出(状态表明它正在使用 4 个处理器以 0% 的速度计算很长一段时间)。有什么办法可以加快速度?
    • 像这样的数组类型公式不适合那么多输入。您将需要 vba 并完成整个范围一次。您正在这样做,假设您将引用的范围限制为仅数据的范围,4*16000*16000= 1,024,000,000 次计算,如果您使用完整列引用,那么您正在执行 4*1,048,576*16,000 = 67,108,864,000 次计算。无论设置如何,这都将花费大量时间。如果你说你有 16,000 行,我会建议使用 vba 而不是公式。
    • 刚接触这个,我没有想到数据的大小会成为问题。在这种情况下使用 vba 需要什么,然后我应该修改问题吗?
    • 不,不要修改问题。由于我的答案将不再匹配,这将使我投反对票。提出一个新问题,但请注意,如果您至少没有尝试自己做 vba,那么该问题将因过于宽泛而被关闭,并且很可能被否决。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-17
    • 1970-01-01
    • 2015-11-29
    • 2012-05-25
    • 1970-01-01
    • 1970-01-01
    • 2011-11-10
    相关资源
    最近更新 更多