【问题标题】:Get conditional mode efficiently in Excel在 Excel 中高效获取条件模式
【发布时间】:2013-09-02 12:11:45
【问题描述】:

在给定另一列的情况下,我正在寻找一列的模式(最常见)值。

我知道该怎么做,但计算需要几分钟,并且可能导致 Excel 无响应。因此,我正在寻找更好的方法。


假设我的数据如下所示

group | Level
1       D
1       A
1.1     B
1       C
1       A
1       E

然后我希望输出看起来像这样:

group | LevelMode
1       A
1.1     B

假设数据在工作表的左上角,我现在使用这个公式,沿着 C 列拖动:

=COUNTIFS(A:A;A2;B:B;B2)/COUNTIF(A:A;A2)

这给了我组内值的比率。之后,我删除所有不高于 0.5 的以及重复项,如果存在,则为每个组提供模式。

这个公式完全符合我的要求,但是对于大约 50000 行来说,它占用了太多资源。我希望在数据透视表选项中找到它,或者在网上快速搜索后找到它,但我没有找到任何方法来实现我的目标。

我有不错的硬件,一个相当新的 Excel 版本,并且希望在没有宏的情况下执行此操作。但是,如果需要宏来实现这一点,那就这样吧。

【问题讨论】:

    标签: performance excel pivot-table mode


    【解决方案1】:

    试试这个:

    第一步。

    创建数据透视表并将其放置在 RowLabels“组”中并在其下的“级别”中。现在,将“级别”作为计数放在“值”字段中。

    第 2 步。

    见下图。点击“Level”右侧的黑色箭头(图中看不到,但应该在红色圆圈内)。 选择“值过滤器”,然后选择“前 10 个”,然后将数字设置为 1(前 1 个)。完成!

    注意:您需要为“级别”执行第 2 步。如果你对“组”做同样的事情,它将不起作用。

    编辑:这是结果以及数据透视表的外观。

    现在将输出整形为所需的格式:

    1. 在数据透视表工具 > 设计下,将报表布局设置为表格形式
    2. 禁用总计和小计

    假设默认设置,您现在可以轻松复制 Groups 和 LevelModes 列表

    【讨论】:

    • 它看起来很有希望,但似乎还没有两个工作。也许是因为顶部定义是在分组之前计算的,或者是因为字母没有顶部?
    • 它根据值字段进行排名,在这种情况下,每个组内的“级别”计数。这就是您只需要按“级别”进行排名的原因。如果您按“组”排名,它会删除几乎没有观察的组。你给出的例子对我有用。是否清楚如何设置数据透视表:在 RowLabels = Group --> Level 和 Values = Count Level 中。我将用插图更新答案。让我知道,如果它有效。谢谢
    • 哇,我以为这正是我之前尝试过的,但再次尝试后我取得了成功!为了将来参考,我将用最后一点如何获得所需形状的输出来更新您的答案.谢谢!
    猜你喜欢
    • 2014-12-03
    • 1970-01-01
    • 1970-01-01
    • 2020-06-01
    • 2018-05-05
    • 1970-01-01
    • 1970-01-01
    • 2015-11-03
    • 1970-01-01
    相关资源
    最近更新 更多