Create COUNTIFS formula in VBA
- No need to use
FillDown
, just apply the formula to the whole range.
Option Explicit
Sub addFormulas()
Dim frmla As String
frmla = "=IF(COUNTIFS(" _
& "'[FBIS-PO Report.csv]PCARD'!$A$2:$A$5000,C5," _
& "'[FBIS-PO Report.csv]PCARD'!$C$2:$C$5000,D5," _
& "'[FBIS-PO Report.csv]PCARD'!$F$2:$F$5000,E5," _
& "'[FBIS-PO Report.csv]PCARD'!$B$2:$B$5000,H5)>0," _
& """Valid"",""Not Valid"")"
Range("K5:K16").Formula = frmla
End Sub
' First use this until you get the formula right. Occasionally run
' the procedure to see what has to be changed. When done copy the formula
' to the main procedure.
Sub createFormula()
Dim frmla As String
frmla = "=IF(COUNTIFS(" _
& "'[FBIS-PO Report.csv]PCARD'!$A$2:$A$5000,C5," _
& "'[FBIS-PO Report.csv]PCARD'!$C$2:$C$5000,D5," _
& "'[FBIS-PO Report.csv]PCARD'!$F$2:$F$5000,E5," _
& "'[FBIS-PO Report.csv]PCARD'!$B$2:$B$5000,H5)>0," _
& """Valid"",""Not Valid"")"
Debug.Print frmla
End Sub
If you prefer a one-liner:
Sub addFormulas
Range("K5:K16").Formula = "=IF(COUNTIFS('[FBIS-PO Report.csv]PCARD'!$A$2:$A$5000,C5,'[FBIS-PO Report.csv]PCARD'!$C$2:$C$5000,D5,'[FBIS-PO Report.csv]PCARD'!$F$2:$F$5000,E5,'[FBIS-PO Report.csv]PCARD'!$B$2:$B$5000,H5)>0,""Valid"",""Not Valid"")"
End Sub