【问题标题】:Range filtering on excel and count rowsexcel的范围过滤和计数行
【发布时间】:2022-01-02 00:40:10
【问题描述】:

关于 excel 范围过滤,我需要您的帮助,这是关于学校项目的。 我有一个包含 20k 行和一个数字范围从 0 到 350k 的列的 excel 文件,我需要以某种方式每 1k 过滤它们(0-999,1000-1999 等)并计算每个团队有多少行/记录。

我正在考虑宏或 VBA 脚本,但我什至不知道起点,我希望有人能帮助我从哪里开始。

非常感谢!

【问题讨论】:

  • 为什么不使用COUNTIFS 公式,例如=COUNTIFS(A:A,">=0",A:A,"<=999")。您的问题很不清楚,无法给出真正准确的答案。请参阅How to Askminimal reproducible example
  • 因为如果范围在 0 到 350k 之间,我必须为每 1k 范围手动运行 350 COUNTIFS。
  • 为什么当A列中的值发生变化时,公式会手动更新。

标签: excel vba excel-formula


【解决方案1】:

使用 Office 365,我们可以在一个公式中做到这一点,结果会溢出:

=CHOOSE({1,2,3},SEQUENCE(351,,0,1000),SEQUENCE(351,,999,1000),FREQUENCY(A:A,SEQUENCE(350,,999,1000)))

Frequency 旨在获取桶的数量和数组并返回计数。

使用 LET 我们可以将变量移到前面:

=LET(
    rng,     A:A,
    nmbckts, 351,
    gp,      1000,
    CHOOSE({1,2,3},
         SEQUENCE(nmbckts,,0,gp),
         SEQUENCE(nmbckts,,gp-1,gp),
         FREQUENCY(rng,SEQUENCE(nmbckts-1,,gp-1,gp))))

【讨论】:

    【解决方案2】:

    无需 VBA:

    如果您的值在 A 列中,只需像在 D/E 列中一样输入 09999。其余数字可以用=D2+1000=E2+1000 完成并拉低到350k。

    计数可以在 F 列中使用 =COUNTIFS(A:A,">="&D:D,A:A,"<="&E:E) 并下拉。

    【讨论】:

    • 棒极了,我相信最简单快捷的实现,非常感谢!
    • @P.Kats 如果这回答了您的问题,请点赞/标记为已解决:Accepting Answers: How does it work?
    • ...保持简单应该(总是)成为主要的设计原则,c.f. KISS principle
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多