Excel - Sumatoria dinamica

 
Vista:
sin imagen de perfil
Val: 5
Ha aumentado su posición en 2 puestos en Excel (en relación al último mes)
Gráfica de Excel

Sumatoria dinamica

Publicado por Jose (19 intervenciones) el 21/05/2018 23:15:01
Hola.

Espero estén bien y contar con su apoyo. Tengo la duda siguiente:

* Quiero hacer sumatoria de diferentes renglones los cuales son variables, es decir, solo conozco la columna pero no se el renglón de inicio y fin. Entre cada rango de valores hay dos renglones vacíos.

Ejemplo:

Tengo valor de A8:A16, A:19:A22, A25:A35, requiero tres sumatorias. Solo tengo el código para hacer la primero pero desconozco como hacer la otras por el tema de no saber donde inicia.

Código

1
2
3
4
5
6
7
Range("A8").Select - inicio de primer renglon
Selection.End(xlDown).Select - me muevo al ultimo renglón con registros antes de encontrar una celda vacía
ActiveCell.Offset(1, 0).Select - me muevo a una línea abajo para hacer la suma
 
With [E8].End(xlDown)
    .Offset(1) = "=Sum(e8:" & .Address(, 0) & ")"  -  con esto realizo la suma
End With

Después tengo pensado hacer lo siguiente:

1
2
3
4
5
6
7
8
9
ActiveCell.Offset(2, 0).Select  - me muevo renglones abajo donde inicia mis nuevos datos a sumar
NroFila = ActiveCell.Row - esta parte no me sale pero pretendo obtener el numero de renglón.
Selection.End(xlDown).Select - me muevo al ultimo renglón con registros antes de encontrar una celda vacía
ActiveCell.Offset(1, 0).Select - me muevo a una línea abajo para hacer la suma
 
 
With [A & NroFila].End(xlDown)  - con esto empezar a hacer la otra suma pero no sé como funciona la variable
    .Offset(1) = "=Sum(A & NroFila:" & .Address(, 0) & ")"  -
End With

La idea es que anterior lo meta en un "Do Until IsEmpty(ActiveCell)" para que no lo haga cuando encuentre la celda vacía.

Gracias por la ayuda.


Saludos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Antoni Masana
Val: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Sumatoria dinamica

Publicado por Antoni Masana (2464 intervenciones) el 22/05/2018 09:14:21
El procedimiento sería el siguiente en Pseudocódigo.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Empezamos en la Fila n
Fila_Ini = 0
Fila_Fin = 0
Bucle hasta que la celda n este vacía
    SI Fila_Ini = 0 entoncen Fila_Ini = n
 
    Si la fila n+1 esta vacia entonces
        Fila_Fin = n
        Poner Formula de Fila_Ini a Fila_Fin
        Fila_Ini=0
        Fila_Fin=0
        sumar 2 a n
   else
        sumar 1 a n
Fin Bucle

Creo que se entiende el procedimiento. Por si acaso te lo explico con un ejemplo con los datos que das (A8:A16, A:19:A22, A25:A35, )

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Pongo el número de línea del código y lo que hace
 
 1.- n=8
 4.- Mientras Celda 8 con datos
 5.-     Asigna 8 a Fila_ini
 7.-     SI Celda 9 con datos
14.-     n=9
 4.- Mientras Celda 9 con datos
 7.-     SI Celda 10 con datos
14.-     n=10
 4.- Mientras Celda 15 con datos
 7.-     SI Celda 16 con datos
14.-     n=16
 4.- Mientras Celda 16 con datos
 7.-     SI Celda 16+1 con datos
 8.-         File_Fin=16
 9.-         Pone formula suma(Fila_Ini:Fila_Fin)
10.-         Fila_Ini=0
11.-         Fila_Fin=0
12           n=18
 4.- Mientras Celda 18 con datos
 5.-     Asigna 18 a Fila_ini
 7.-     SI Celda 19 con datos
14.-     n=19
 4.- Mientras Celda 19 con datos

No se si esto aclara o lia más

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 5
Ha aumentado su posición en 2 puestos en Excel (en relación al último mes)
Gráfica de Excel

Sumatoria dinamica

Publicado por Jose (19 intervenciones) el 22/05/2018 15:27:49
Hola.

Gracias por la ayuda, si es eso lo que requiero y queda claro el pseudocodigo, lo que mas me causa problemas es como realizar la formula con las variables de Fila_Ini y Fila_Fin...lo mas que he hecho es:

1
2
3
With [E8].End(xlDown)
    .Offset(1) = "=Sum(e8:" & .Address(, 0) & ")"  -  con esto realizo la suma
End With

No se como quedaría....?.

1
2
3
With [E & Fila_Ini].End(xlDown)
    .Offset(1) = "=Sum(e & Fila_Ini : " & .Address(, 0) & ")"
End With

O quedaría con =SUM(E & Fila_Ini : E & Fila_Fin) pero no se como especificar que use las variables....

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Sumatoria dinamica

Publicado por Antoni Masana (2464 intervenciones) el 22/05/2018 18:52:42
Esta es la formula:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Sub Sumatorio()
    Dim Fila_Pun As Long, _
        Fila_Ini As Long, _
        Fila_Fin As Long
 
    Const COLUMNA_A = 1
    Const COLUMNA_B = 2
 
    Fila_Pun = 1
    Fila_Ini = 0
    Fila_Fin = 0
    While Cells(Fila_Pun, COLUMNA_A) <> ""             ' ---- Columna A
        If Fila_Ini = 0 Then Fila_Ini = Fila_Pun
 
        If Cells(Fila_Pun + 1, COLUMNA_A) = "" Then
            Fila_Fin = Fila_Pun
            Cells(Fila_Pun, COLUMNA_B).Select
            ActiveCell.FormulaR1C1 = "=SUM(R" & Fila_Ini & "C1:R" & Fila_Fin & "C1)"
            Fila_Ini = 0
            Fila_Fin = 0
            Fila_Pun = Fila_Pun + 2
        Else
             Fila_Pun = Fila_Pun + 1
        End If
    Wend
End Sub

Revisa la columna A y pone la formula en la columna B.
En tu ejemplo A8:A16, A:19:A22, A25:A35, etc. pondría las formulas en: B16, B22, B35, etc.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar