Foros del Web » Soporte técnico » Ofimática »

Multiplicador en VBA Excell

Estas en el tema de Multiplicador en VBA Excell en el foro de Ofimática en Foros del Web. Tengo un pequeño problema, y es que no acierto a hacer en un scrip una pequeña opción para que me multiplique (uno por otro ) ...
  #1 (permalink)  
Antiguo 03/10/2008, 09:22
 
Fecha de Ingreso: septiembre-2008
Mensajes: 113
Antigüedad: 15 años, 7 meses
Puntos: 1
Multiplicador en VBA Excell

Tengo un pequeño problema, y es que no acierto a hacer en un scrip una pequeña opción para que me multiplique (uno por otro ) todos los valores de un rango , por ejemplo, de B1 a B15 (sin hacerlo por la cuenta de la vieja como var1= B1*B2*....*B15).
Sería lo equivalente a un sumatorio, pero con multiplicando los valores en vez de sumando.
He probado con

M = 1

For j = 1 To 15

M2total = 1 * Cells(j, 2).Value
Mtotal = Mtotal * M2total

Next

Cells(3, 4).Value = LRtotal

Donde fallo?

Gracias
  #2 (permalink)  
Antiguo 03/10/2008, 10:05
Avatar de abrahamvj  
Fecha de Ingreso: julio-2006
Ubicación: Lima, Peru
Mensajes: 708
Antigüedad: 17 años, 9 meses
Puntos: 18
Respuesta: Multiplicador en VBA Excell

Sub adgasd()
Dim celda As Range
Dim total as double
total = 1
For Each celda In ActiveSheet.Range("b1:b15")
total = total * celda
Next
MsgBox total
End Sub

Abraham
  #3 (permalink)  
Antiguo 03/10/2008, 10:07
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Exclamación Respuesta: Multiplicador en VBA Excell

El código de abrahamvj es correcto.

Te explico por qué el tuyo no funcionó. Para empezar que MTotal debe tener 1 como valor inicial, porque de lo contrario siempre multiplicará por 0 y siempre saldrá 0. Y otra cosa, el resultado de la multiplicación vas asignando a la variable MTotal mientras que en la celda tratas de poner el valor de LRtotal.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.

Última edición por David; 03/10/2008 a las 10:24 Razón: Corregir nombre.
  #4 (permalink)  
Antiguo 03/10/2008, 10:30
 
Fecha de Ingreso: septiembre-2008
Mensajes: 113
Antigüedad: 15 años, 7 meses
Puntos: 1
Respuesta: Multiplicador en VBA Excell

Gracias me ha funcionado.
La pelicula es que en ese rango puedo tener algun valor en blanco, o "cero", y si me multiplica por cero daría error.
¿como podría subsanarlo?
Soy novato y me lio con la definición de las variables

Muchas gracias por vuestra ayuda.

s2
  #5 (permalink)  
Antiguo 03/10/2008, 10:55
Avatar de abrahamvj  
Fecha de Ingreso: julio-2006
Ubicación: Lima, Peru
Mensajes: 708
Antigüedad: 17 años, 9 meses
Puntos: 18
Respuesta: Multiplicador en VBA Excell

Esta bien que sea "novato", pero, si tanta es tu necesidad de usar macros, pues, al menos deberias leer mas sobre VBA, y sobretodo, esforzarte por entender.

Una cosa es pedir ayuda, y otra muy diferente esperar que a uno le hagan todo el trabajo.

de todos modos ya que SIMPLEMENTE era cuestion de aumentar un 3 lineas a la macro, te la dejo:

Sub para_el_que_no_lee()
Dim celda As Range
Dim total
total = 1
For Each celda In ActiveSheet.Range("b1:b15")
If celda <> 0 Or celda <> "" Then
total = total * celda
End If
Next
MsgBox total
End Sub


Abraham
  #6 (permalink)  
Antiguo 03/10/2008, 12:07
 
Fecha de Ingreso: septiembre-2008
Mensajes: 113
Antigüedad: 15 años, 7 meses
Puntos: 1
Respuesta: Multiplicador en VBA Excell

Gracias,
intento aprender todo lo que puedo, pero a veces, o me bloqueo o me pierdo con tanta información que bien, o no me es útil, o no se interpretar.
Es por eso que recurro al foro.

Por eso, os doy muchas gracias por vuestra ayuda.

s2
  #7 (permalink)  
Antiguo 03/10/2008, 12:54
Avatar de mrocf  
Fecha de Ingreso: marzo-2007
Ubicación: Bs.As.
Mensajes: 1.103
Antigüedad: 17 años
Puntos: 88
De acuerdo Respuesta: Multiplicador en VBA Excell

Hola! buddyk9
Una alternativa a lo que se te ha señalado es:
Código:
MiRango = "B1:B15"
[D3] = Evaluate("= PRODUCT(IF(" & MiRango & "=0, 1, " & MiRango & "))")
lo que equivale a escribir en la celda [D3] la siguiente fórmula matricial:
Cita:
= PRODUCTO(SI(B1:B15=0; 1; B1:B15) )

Saludos, Cacho.
  #8 (permalink)  
Antiguo 03/10/2008, 13:04
 
Fecha de Ingreso: septiembre-2008
Mensajes: 113
Antigüedad: 15 años, 7 meses
Puntos: 1
Respuesta: Multiplicador en VBA Excell

gracias de nuevo, Cacho (y a los demás).

No conocía esta forma de abordar las consultas en Excel.

Para David El Grande:
Gracias por tus correcciones.... me he dado cuenta de que en el primer mensaje habia escrito mal las variables.

Esta subrutina si que me funciona:

Mtotal = 1

For j = 1 To 15

M2total = 1 * Cells(j, 2).Value
Mtotal = Mtotal * M2total

Next

Cells(3, 4).Value = Mtotal

Multiplica los valores de las 15 primeras celdas de la columna 2 y luego lo obtenemos en la celda C4.

s2
  #9 (permalink)  
Antiguo 03/10/2008, 13:17
Avatar de mrocf  
Fecha de Ingreso: marzo-2007
Ubicación: Bs.As.
Mensajes: 1.103
Antigüedad: 17 años
Puntos: 88
Respuesta: Multiplicador en VBA Excell

Dos comentarios:
1º) Si cualquiera de las celdas del rango B1:B15 contiene un "0" o está vacía... ese producto te dará cero.

2º) Cells(3, 4) refiere a [D3] y no a [C4]

Saludos, Cacho.
  #10 (permalink)  
Antiguo 03/10/2008, 13:27
 
Fecha de Ingreso: septiembre-2008
Mensajes: 113
Antigüedad: 15 años, 7 meses
Puntos: 1
Respuesta: Multiplicador en VBA Excell

tienes razón ;)

paquete de mi !

Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:18.