Excel使用VBA标识多个条件

时间:2015-12-07 20:42:45

标签: excel excel-vba vba

我在BA栏目中使用Excel文件中的folliwing 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

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

以下是一个示例: enter image description here

1 个答案:

答案 0 :(得分: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小时。也许有更快的方法来做到这一点。