Macro para Sumar con SumIfs

Tengo la siguiente macro para sumar valores numéricos bajo dos condiciones, en la columna A (CANTIDAD) tengo los valores numéricos, en la B (SALIDAS) y en la C (PAGO) y deseo que sume los valores numéricos siempre y cuando se cumpla que en la columna B este escrito la palabra VENTAS y en la columna C este la palabra EFECTIVO. No se en que este mal la instrucción. Espero contar con su ayuuda.

Sub SumIfs()
Application.ScreenUpdating = False
On Error Resume Next
DisplayAlerts = False
Dim uf As String
uf = Sheets("Hoja1").Range("A" & Rows.Count).End(xlUp).Row
Cells(uf + 2, "D") = Application.WorksheetFunction.SumIfs(Range("A2" & ":A" & uf - 1), Range("B2" & ":B" & uf - 1), "VENTAS", Range("C2" & ":C" & uf - 1), "EFECTIVO")
Cells(uf + 2, "D").NumberFormat = "$#,#,##0.00"
MsgBox ("Las ventas suman " & Format(Cells(uf + 2, "D"), "$#,#,##0.00")), vbInformation, "AVISO"
DisplayAlerts = True
Application.ScreenUpdating = True
End Sub

2 respuestas

Respuesta
2

Te anexo la macro actualizada

Sub SumIfs()
    Dim uf As Double
    uf = Sheets("Hoja1").Range("A" & Rows.Count).End(xlUp).Row
    Cells(uf + 2, "D") = Application.WorksheetFunction.SumIfs( _
                        Range("A2" & ":A" & uf - 1), _
                        Range("B2" & ":B" & uf - 1), "VENTAS", _
                        Range("C2" & ":C" & uf - 1), "EFECTIVO")
    Cells(uf + 2, "D").NumberFormat = "$#,#,##0.00"
    MsgBox ("Las ventas suman " & Format(Cells(uf + 2, "D"), "$#,#,##0.00")), vbInformation, "AVISO"
End Sub

Observaciones:

1. En VBA no es necesario declarar las variables, si declaras las variables de forma incorrecta tendrás errores.

2. Para saber cuáles son los errores no utilices la instrucción On Error Resume Next, ya que si existe algún error no sabrás cuál es ni dónde está el error.

3. La variable uf la debes declarla como Double, la estás declarando como string

4. La instrucción no se escribe así

DisplayAlerts = False

Debe ser:

Application.DisplayAlerts = False

Pero en esta macro no es necesario que la pongas.+

5. Estás seguro que a la última fila con datos le debes restar 1?



'.[Sal u dos. Dante Amor. No olvides valorar la respuesta. 
'.[Avísame cualquier duda
.

Dante Amor , muchas gracias por tu apoyo y sobre todo los comentarios que me servirán de mucho, pero te comento que ejecute tu instrucción pero sigue haciendo lo mismo que la que envié. Que crees que este pasando.

Pero qué error te aparece y en cuál línea de la macro

Respuesta
2

El resultado de la macro lo ves en la imagen, esta busca ventas y efectivo sumando solo las filas que cumplan esas condiciones

y esta es la macro

Sub SUMAR_SI_2_CONDICIONES()
Dim FUNCION As WorksheetFunction
Set DATOS = Range("A2").CurrentRegion
Set FUNCION = WorksheetFunction
With DATOS
    uf = .Rows.Count
    CUENTA = FUNCION.SumIfs(.Columns(1), .Columns(2), "VENTAS", .Columns(3), "EFECTIVO")
    With .Cells(uf + 2, 4)
        .Value = CUENTA
        Cells(uf + 2, "D").NumberFormat = "$#,#,##0.00"
        MsgBox ("Las ventas suman " & Format(CUENTA, "$#,#,##0.00")), vbInformation, "AVISO"
    End With
    Set DATOS = Nothing
End With
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas