Totalizar

Hola como estas, te hago esta consulta ya que la pregunte en Excel pero no he podido encontrar respuesta satisfactoria, la cuestión es la siguiente, en este programa yo anexe "totalgastos" y "totalcobros" para que se sumen, pero lo hice mal ya que no cumple con lo previsto, ademas tengo un error en costoCU que debe ser el promedio, y no la sums, espero me puedad ayudar, si quieres te puedo mandar el archivo de excel para que lo entiendas mejos, gracias...
Sub totalizar()
'Declarar variables
Dim Mtotalgastos(26) As Long
Dim Mtotalcobros(26) As Long
Dim Mexistencias(26) As Long
Dim Mentrantes(26) As Long
Dim MsalientesP(26) As Long
Dim MsalientesF(26) As Long
Dim McostoCU(26) As Long
Dim McostoTotales(26) As Long
Dim rango As Long
Dim n As Long
Dim SfechaDesde As String
Dim SfechaHasta As String
Dim SfechaConsulta As String
'Inicializar variables
For i = 1 To 26
Mtotalgastos(i) = 0
Mtotalcobros(i) = 0
Mexistencias(i) = 0
Mentrantes(i) = 0
MsalientesP(i) = 0
MsalientesF(i) = 0
McostoCU(i) = 0
McostoTotales(i) = 0
Next i
SfechaDesde = Cells(7, 6)
SfechaHasta = Cells(7, 8)
SfechaConsulta = Cells(46, 6)
rango = 34
n = 0
'Inicio Procedimiento
While (SfechaConsulta <> "")
If ((SfechaConsulta <= SfechaHasta) And (SfechaConsulta >= SfechaDesde)) Then
For i = 1 To 26
Mtotalgastos(i) = Mtotalgastos(i) + Cells(46 + n)
Mtotalcobros(i) = Mtotalcobros(i) + Cells(47 + n)
Mexistencias(i) = Mexistencias(i) + Cells(54 + n * rango, i + 3)
Mentrantes(i) = Mentrantes(i) + Cells(55 + n * rango, i + 3)
MsalientesP(i) = MsalientesP(i) + Cells(56 + n * rango, i + 3)
MsalientesF(i) = MsalientesF(i) + Cells(57 + n * rango, i + 3)
McostoCU(i) = McostoCU(i) + Cells(60 + n * rango, i + 3)
McostoTotales(i) = McostoTotales(i) + Cells(61 + n * rango, i + 3)
Next i
End If
n = n + 1
SfechaConsulta = Cells(46 + n * rango, 6)
Wend
'Imprimir Valores
For i = 1 To 26
Cells(7, 3) = Mtotalgastos(i)
Cells(8, 3) = Mtotalcobros(i)
Cells(15, 3 + i) = Mexistencias(i)
Cells(16, 3 + i) = Mentrantes(i)
Cells(17, 3 + i) = MsalientesP(i)
Cells(18, 3 + i) = MsalientesF(i)
Cells(21, 3 + i) = McostoCU(i)
Cells(22, 3 + i) = McostoTotales(i)
Next i
End Sub

1 respuesta

Respuesta
-1
Los totales están bien el promedio es la suma de todos los valores divida por el numero de registros
Hola no se si me podes ayudar, los totales no están bien, ya que no funcionan, y el promedio no se como modificar el programa... yo no lo hice... Gracias...
"no funciona" significa, no suma las celdas, las suma pero no todas, ¿faltan valores?
¿No sabes hacer un promedio?
Hacer un promedio, en lápiz y papel si pero no como corregir el programa para que en ves de sumar me lo promedie, ademas en totalgastos y totalcobros no suma, es como que sumara muchas casillas y pusiera el resultado ahí me da siempre 0, se que esta mal ya que lo agrgue yo como por ejemplo
For i = 1 To 26
Cells(7, 3) = Mtotalgastos(i)
Cells(8, 3) = Mtotalcobros(i)
Cells(15, 3 + i) = Mexistencias(i)
Cells(16, 3 + i) = Mentrantes(i)
Si quieres me pasas tu correo te mando el archivo de Excel y te das cuenta enseguida ... Gracias
Debes corregir estas lineas así:
Cells(7,3) = Cells(7,3) + Mtotalgastos(i)
Cells(8,3) = Cells(8,3) + Mtotalcobros(i)
Para el total haces lo mismo de arriba y lo divides (/) entre 26 y se lo asignas a la misma celda, por ejemplo :
Si vas a hacer el promedio de las existencias, en el for : Cells(15,3) = Cells(15,3) + Mexistencias(i), luego después que termine el for, eso es después de NEXT i
Cells(15,3) = Cells(15,3) / 26
Me da error 13 en tiempo de ejecución con esa modificación quedo así:
Sub totalizar()
'Declarar variables
Dim Mtotalgastos(26) As Long
Dim Mtotalcobros(26) As Long
Dim Mexistencias(26) As Long
Dim Mentrantes(26) As Long
Dim MsalientesP(26) As Long
Dim MsalientesF(26) As Long
Dim McostoCU(26) As Long
Dim McostoTotales(26) As Long
Dim rango As Long
Dim n As Long
Dim SfechaDesde As String
Dim SfechaHasta As String
Dim SfechaConsulta As String
'Inicializar variables
For i = 1 To 26
Mtotalgastos(i) = 0
Mtotalcobros(i) = 0
Mexistencias(i) = 0
Mentrantes(i) = 0
MsalientesP(i) = 0
MsalientesF(i) = 0
McostoCU(i) = 0
McostoTotales(i) = 0
Next i
SfechaDesde = Cells(7, 6)
SfechaHasta = Cells(7, 8)
SfechaConsulta = Cells(46, 6)
rango = 34
n = 0
'Inicio Procedimiento
While (SfechaConsulta <> "")
If ((SfechaConsulta <= SfechaHasta) And (SfechaConsulta >= SfechaDesde)) Then
For i = 1 To 26
Mtotalgastos(i) = Mtotalgastos(i) + Cells(46 + n)
Mtotalcobros(i) = Mtotalcobros(i) + Cells(47 + n)
Mexistencias(i) = Mexistencias(i) + Cells(54 + n * rango, i + 3)
Mentrantes(i) = Mentrantes(i) + Cells(55 + n * rango, i + 3)
MsalientesP(i) = MsalientesP(i) + Cells(56 + n * rango, i + 3)
MsalientesF(i) = MsalientesF(i) + Cells(57 + n * rango, i + 3)
McostoCU(i) = McostoCU(i) + Cells(60 + n * rango, i + 3)
McostoTotales(i) = McostoTotales(i) + Cells(61 + n * rango, i + 3)
Next i
End If
n = n + 1
SfechaConsulta = Cells(46 + n * rango, 6)
Wend
'Imprimir Valores
For i = 1 To 26
Cells(7, 3) = Cells(7, 3) + Mtotalgastos(i)
Cells(8, 3) = Cells(8, 3) + Mtotalcobros(i)

Cells(15, 3 + i) = Mexistencias(i)
Cells(16, 3 + i) = Mentrantes(i)
Cells(17, 3 + i) = MsalientesP(i)
Cells(18, 3 + i) = MsalientesF(i)
Cells(21, 3 + i) = McostoCU(i)
Cells(22, 3 + i) = McostoTotales(i)
Next i
End Sub
Algo estoy haciendo mal, ¿no tengo que modificar algo en inicio de procedimiento?
No se que es el error 13
Creo que si supieras programar enseguida te darías cuenta de donde esta el error, yo me doy cuenta, pero el problema es que no se como correguirlo... no se la sintaxis de programación para hacerlo (idioma)
Listo, si no se programar, entonces quizás es mejor que le preguntes a otro experto.
Realmente pido disculpas por molestarte, no quiero perder el tiempo ni hacértelo perder a vos, pero realmente se supieras, o tendrías clara la programación de marcos te darías cuenta del problema enseguida y no me propondrías esa solución incorrecta, gracias de todas formas...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas