Estoy tratando de sumar todo el valor que he comprobado. Para

ActiveCell.Formula = "=SUMIF(B1:B5,TRUE,A1:A5)" 

Funciona bien, sin embargo, cuando:

ActiveCell.Formula = "=SUMIF(Range(cells(1,2),cells(lastrow,2)),TRUE,Range(cells(1,3),cells(lastrow,3))" 

Obtengo un error de compilación. Alguien puede ayudarme por favor.


Dim lastrow As Long

lastrow = Cells(Rows.Count, "A").End(xlUp).Row
Range("D1").Select
ActiveCell.Formula = "=SUMIF(B1:B5,TRUE,A1:A5)"    'Please help me to convert into Range(cells(1,2),cells(lastrow,2)),True,Range(cells(1,3),cells(lastrow,3))
1
MR ABALONE 27 jun. 2019 a las 18:45

1 respuesta

La mejor respuesta

Tienes mala sintaxis para tu fórmula. Está utilizando la referencia de VBA en una fórmula de Excel (se desglosará los puntos):

ActiveCell.Formula = _
"=SUMIF( _  'Application
Range(cells(1,2),cells(lastrow,2)) _ 'VBA
,TRUE, _ 'Application
Range(cells(1,3),cells(lastrow,3)) _ 'VBA
" 'Application

Para que la fórmula aparezca en la celda, mostraría tal que:

ActiveCell.Formula = "=SUMIF(B1:B" & lastrow & ",TRUE,A1:A" & lastrow & ")" 

Si desea que VBA haga el trabajo y desea generar solo un valor:

ActiveCell.Value = Application.SUMIF(Range(Cells(1,2),Cells(lastrow,2)),"TRUE",Range(Cells(1,1),Cells(lastrow,1)))

Relacionados con su cambio de código, ha utilizado previamente la columna 1 (a) como su rango de suma, aunque enumere la columna 3 (c) en su código ... utilicé 1 en mis ejemplos de código, desde su trabajo SUMIF función.

0
Cyril 27 jun. 2019 a las 15:56