【问题标题】:Excel countifs with multiple criteria using VBA使用 VBA 的具有多个条件的 Excel 计数
【发布时间】:2016-03-12 14:26:55
【问题描述】:

我在 Excel 文件中通过 BA 列使用以下 COUNTIFS 函数:

=(COUNTIFS(E$2:E2;E2;$G$2:G2;G2;$I$2:I2;I2;$N$2:N2;N2;$O$2:O2;O2;$R$2:R2;R2)=1)*1

我有超过 15 万条记录,因此 Excel 崩溃了。是否可以改进公式或使用 vba 代码来做同样的事情?

这是一个示例:

【问题讨论】:

  • 您能否按原样发布您的数据模型和预期结果
  • 目前还不清楚你想用公式实现什么,多一点解释会有所帮助。
  • 我不确定您要达到什么目的,但如果我冒险猜测,您是在尝试计算 BA 列中 1 的数量(真)?如果是这样,我建议你试试=SUM(BA:BA)

标签: excel vba


【解决方案1】:

在本示例中,我尝试根据多个条件计算唯一记录。公式=(COUNTIFS(E$2:E2;E2;$G$2:G2;G2;$I$2:I2;I2;$N$2:N2;N2;$O$2:O2;O2;$R$2:R2;R2)=1)*1 就像一个魅力,但我想用 vba 做同样的事情。

Sub CountIfsFormula()
Dim varFilas As Long
Dim vari As Long

    On Error GoTo errCountIfsFormula
    varFilas = Cells(Rows.Count, "A").End(xlUp).Row
    For vari = 2 To varFilas
        Range("BA" & vari).Formula = "=(COUNTIFS(E$2:E" & vari & ",E" & vari & ",$G$2:G" & vari & ",G" & vari & ",$I$2:I" & vari & ",I" & vari & ",$N$2:N" & vari & ",N" & vari & ",$O$2:O" & vari & ",O" & vari & ",$R$2:R" & vari & ",R" & vari & ")=1)*1"
        Range("BA" & vari).Value = CStr(Range("BA" & vari).Value)
    Next vari

    Exit Sub

大约 200K 记录大约需要 1 小时。也许有更快的方法来做到这一点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-12
    • 2023-02-08
    • 2014-08-15
    • 1970-01-01
    • 1970-01-01
    • 2013-11-03
    • 1970-01-01
    相关资源
    最近更新 更多