2015-12-07 153 views
0

我使用的Excel文件中的follwing COUNTIFS函數在BA列多個條件:的Excel COUNTIFS使用VBA

=(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代碼做同樣的事情?

這裏有一個例子: enter image description here

+0

你可以發佈一個模擬你的數據原樣和預期結果 –

+0

你仍然不明白你想用公式實現什麼,多一點解釋會有幫助。 –

+0

我不確定你想要達到什麼目的,但是如果我冒險猜測,你正在計算BA列中1(真)的數量?如果是這樣,我建議你嘗試'= SUM(BA:BA)' – waqasahmed

回答

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小時。也許有更快的方法來做到這一點。