Separar números de una columna filtrada

Tengo una columna A10:A1000000 con valores negativos y positivos necesito una fórmula, que me permita en A1 poner la suma de los números positivos, y en A2, la suma de los números negativos, teniendo en cuenta que el total de A1 y A2 se vaya modificando el la medida que la columna sea filtrada, es decir que me tire los valores negativo o positivos visibles

1 Respuesta

Respuesta
1

Pon la siguiente en A1

=SUMAR.SI(A10:A1000000;">0")

Pon la siguiente en A2

=SUMAR.SI(A10:A1000000;"<0")

hola dante como estas, lo que necesito es que me tire los totales visibles no todos, solamente los que yo filtro gracias

Te anexo un par te macro.

Pon las macros en un módulo

Function SumarPos()
'Por.Dante Amor
    For i = 10 To Range("A" & Rows.Count).End(xlUp).Row
        If Rows(i).Hidden = False Then
            If Cells(i, "A") > 0 Then
                pos = pos + Cells(i, "A")
            End If
        End If
    Next
    SumarPos = pos
End Function
Function SumarNeg()
'Por.Dante Amor
    For i = 10 To Range("A" & Rows.Count).End(xlUp).Row
        If Rows(i).Hidden = False Then
            If Cells(i, "A") < 0 Then
                neg = neg + Cells(i, "A")
            End If
        End If
    Next
    SumarNeg = neg
End Function

Ahora, en la celda A1, pon la siguiente fórmula:

=SumarPos()

En la celda A2, pon la siguiente fórmula

=SumarNeg()

pedoname dante pero no funciona cuando filtro

en realidad no funciona cuando filtro ni cuando no filtro

Tienes razón, lo que pasa es que debes efectuar algo en la hoja.

Me explico, para que el cálculo se actualice debes realizar algún cambio en la hoja, el que hagas un filtro no estás modificando la hoja.

Lo que pides no es algo sencillo.

Otra opción es la siguiente, primero elimina las otras macros. Ahora pon la siguiente macro en los eventos de tu hoja.

Para que funcione deberás, después de realizar el autofiltro, debes seleccionar la celda A1 o la celda A2.

Yo entiendo que lo quieres en automático, pero simple y sencillamente no se puede realizar en automático, deberás hacer algo en tu hoja para que se actualicen los valores.

Espero que comprendas lo que te estoy diciendo, si quieres cambiar la celda que activará la macro puedes cambiar esta parte

If Not Intersect(Target, [A1:A2]) Is Nothing Then

Camiba A1:A2, por el rango de celdas que quieras, puede ser por las celdas que tienen el autofiltro A9:B9, así después de realizar el autofiltro, seleccionas la celda A9 y se activa la macro.

Otra opción es que pongas en una macro el autofiltro, es decir, que una macro haga el autofiltro y que esa misma macro active la macro de la hoja.

Recuerda las limitantes de excel.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Por.Dante Amor
    If Not Intersect(Target, [A1:A2]) Is Nothing Then
        [A1:A2] = ""
        For i = 10 To Range("A" & Rows.Count).End(xlUp).Row
            If Rows(i).Hidden = False Then
                If Cells(i, "A") > 0 Then
                    [A1] = [A1] + Cells(i, "A")
                Else
                    [A2] = [A2] + Cells(i, "A")
                End If
            End If
        Next
    End If
End Sub

=SUMAPRODUCTO(SUBTOTALES(9;DESREF(A11;FILA($A$11:$A$1048576)-FILA($A$11);;1))*($A$11:$A$1048576>0))

Yo encontré esta fórmula que funciona bien lo que sucede es que funcian lenta

Revísala y vas a ver, fíjate si se puede hacer más rápido gracias

Orale, siempre se aprende algo nuevo.

Lo que se me ocurre es que cambies este número 1048576 por el un número más pequeño, es decir, por la última fila que tengas con datos, si en realidad tienes datos hasta la fila 1048576, entonces libera memoria de tu máquina cerrando otras aplicaciones.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas