Macro para sumar los valores de las celdas en rango seleccionado

03/08/2014 - 05:57 por perr0L0co | Informe spam
Hola!
Alguien podría ayudarme con esto?
Necesito una macro que sume los valores de las celdas seleccionadas, las cuales puede ser que no sean contiguas.

Algo como esto:

Celda - Valor
A3 - 4
A5 - 3
B8 - 2
C11 - 1

La macro deberá dar el total sea en una celda que uno designe o mediante un mensaje.

Espero que alguien pueda ayudarme con esto.

Desde ya muchas gracias por el apoyo.

Preguntas similare

Leer las respuestas

#1 Juan Español
03/08/2014 - 15:39 | Informe spam
Hola perr0L0co:
Si creas un botón y le pones este código,
te mostrará en un mensaje lo que tú quieres.

Private Sub CommandButton2_Click()
Dim MiSuma, resultado As Double
Dim rango, celda As Range

If TypeName(Selection) = "Range" Then
Set rango = Selection

For Each celda In rango.Cells
resultado = Application.WorksheetFunction.Sum(resultado, celda.Value)
Next celda
MiSuma = resultado
If MiSuma Then MsgBox "Las celdas seleccionadas suman: " & MiSuma
End If
End Sub


Saludos,
Respuesta Responder a este mensaje
#2 perr0L0co
04/08/2014 - 05:39 | Informe spam
Muchas gracias Juan, una pregunta, como puedo hacer que el resultado se ponga en alguna celda que yo escoja, he imaginado que pudiera hacerse con un control refedit pero eso implica el uso de un formulario y no consigo pasar el resultado al formulario.

Gracias nuevamente.

Saludos.



El domingo, 3 de agosto de 2014 08:39:21 UTC-5, Juan Español escribió:
Hola perr0L0co:

Si creas un bot�n y le pones este c�digo,

te mostrar� en un mensaje lo que t� quieres.



Private Sub CommandButton2_Click()

Dim MiSuma, resultado As Double

Dim rango, celda As Range



If TypeName(Selection) = "Range" Then

Set rango = Selection



For Each celda In rango.Cells

resultado = Application.WorksheetFunction.Sum(resultado, celda.Value)

Next celda

MiSuma = resultado

If MiSuma Then MsgBox "Las celdas seleccionadas suman: " & MiSuma

End If

End Sub





Saludos,
Respuesta Responder a este mensaje
#3 Juan Español
04/08/2014 - 10:41 | Informe spam
Hola,
La pregunta clave es...
¿Para qué utilizas el resultado?
Si es solamente informativo, no hace falta ni siquiera el código que mandé
en
el mensaje anterior, pues la suma puede verse en la barra de estado.
Hay algunas diferencias, y además el código anterior tiene un bug
intencionado
para ver tu nivel de exigencia.
Si una de las celdas seleccionadas contiene texto, el resultado es error.

Pero contestando a tu pregunta este código "desprecia" las celdas texto y
las fechas,
solo suma valores numéricos y pone el resultado en en la celda D1.
(cambia esto en el código a tu conveniencia)

Private Sub CommandButton2_Click()
Dim MiSuma, resultado As Double
Dim rango, celda As Range

If TypeName(Selection) = "Range" Then
Set rango = Selection

For Each celda In rango.Cells
If IsNumeric(celda.Value) Then resultado = _
Application.WorksheetFunction.Sum(resultado, celda.Value)
Next celda
MiSuma = resultado
If MiSuma Then [D1] = MiSuma
End If
End Sub


El poner el valor de algo muy variable como puede ser la suma de unas celdas
seleccionadas
como dato en otra celda te puede ocasionar "confusión", considera el borrar
el valor de la celda
"destino" de tu suma con el evento CHANGE y OPEN de tu hoja.
Si no sabes hacer esto, pregunta.

De todas maneras si contestas a..
¿Para qué utilizas el resultado?
Podría aportarte alguna otra solución.

Saludos.-
Respuesta Responder a este mensaje
#4 perr0L0co
04/08/2014 - 17:02 | Informe spam
La idea es esta:
Con regular frecuencia reviso registros numericos de gastos y a veces al momento de estar analizando los numeros necesito sumar dos o mas celdas para verificar si el resultado es apropiado a lo que estoy esperando, a veces puede necesitar la suma simplemente como dato informativo pero otras veces podría necesitar ese valor para otro uso y es ahí donde necesitaria que la macro me de la opción de guardar el resultado en alguna celda que yo elija en ese momento.

Gracias por el codigo, mi pregunta, puedo dar la opción de decidir en que celda guardar el valor? Esto es porque no siempre uso el mismo reporte y es obvio que mientras para un reporte la celda que yo ponga en el codigo sea correcta no lo sera para otros reportes donde esa misma celda este ocupada por otro dato importante.

Se me habia ocurrido hacerlo a traves de un refedit usando un userform pero mi problema ahi radica en que no encuentro como pasar mi resultado al userform.

Gracias por el tiempo!!

Saludos.




El lunes, 4 de agosto de 2014 03:41:44 UTC-5, Juan Español escribió:
Hola,

La pregunta clave es...

¿Para qué utilizas el resultado?

Si es solamente informativo, no hace falta ni siquiera el código que mandé

en

el mensaje anterior, pues la suma puede verse en la barra de estado.

Hay algunas diferencias, y además el código anterior tiene un bug

intencionado

para ver tu nivel de exigencia.

Si una de las celdas seleccionadas contiene texto, el resultado es error.



Pero contestando a tu pregunta este código "desprecia" las celdas texto y

las fechas,

solo suma valores numéricos y pone el resultado en en la celda D1.

(cambia esto en el código a tu conveniencia)



Private Sub CommandButton2_Click()

Dim MiSuma, resultado As Double

Dim rango, celda As Range



If TypeName(Selection) = "Range" Then

Set rango = Selection



For Each celda In rango.Cells

If IsNumeric(celda.Value) Then resultado = _

Application.WorksheetFunction.Sum(resultado, celda.Value)

Next celda

MiSuma = resultado

If MiSuma Then [D1] = MiSuma

End If

End Sub





El poner el valor de algo muy variable como puede ser la suma de unas celdas

seleccionadas

como dato en otra celda te puede ocasionar "confusión", considera el borrar

el valor de la celda

"destino" de tu suma con el evento CHANGE y OPEN de tu hoja.

Si no sabes hacer esto, pregunta.



De todas maneras si contestas a..

¿Para qué utilizas el resultado?

Podría aportarte alguna otra solución.



Saludos.-
Respuesta Responder a este mensaje
#5 Juan Español
04/08/2014 - 22:16 | Informe spam
Sabido lo que me cuentas, creo que la mejor solución
es pasar el valor de la suma al Clipboard (portapapeles)
para que así esté disponible y lo pegues donde quieras.

Y para que sea más útil, yo el código final lo pondría en una marcro
asociada a una tecla de función y guardada en el libro PERSONAL.XLS
y así la tendrías disponible en cualquier libro de excel que abrieses.
Pero de todas maneras no quitaría el mensaje con el valor de la Suma
por si no quieres pegarlo y sólo quieres visualizar la Suma.

El código sería así, para un botón.
(Si te gusta la idea de meterlo en una macro y no sabes cómo... pregunta)

El código quedaría así...

Private Sub CommandButton2_Click()
Dim MiSuma, resultado As Double
Dim c_sel, c_sum As Integer
Dim rango, celda As Range

If TypeName(Selection) = "Range" Then
c_sel = Selection.Count
c_sum = 0
Set rango = Selection

For Each celda In rango.Cells
If IsNumeric(celda.Value) Then
resultado = Application.WorksheetFunction.Sum(resultado, celda.Value)
c_sum = c_sum + 1
End If
Next celda
MiSuma = resultado
If MiSuma Then
MsgBox "Las celdas seleccionadas suman: " & MiSuma & Chr(10) & _
c_sel & " celdas seleccionadas." & Chr(10) & c_sum & " celdas sumadas."
Dim DataObj As New MSForms.DataObject
DataObj.SetText MiSuma
DataObj.PutInClipboard
End If
End If
End Sub


Su uso sería:
1º Seleccionas celdas
2º Le das al botón
3º Te muestra el mensaje con la Suma
el num. de celdas seleccionadas
el num. de celdas sumadas
4º Si necesitas pegar la Suma en cualquier sitio, pulsas Ctrl + V

Saludos.-
P.S.
Si contestas a este mensaje por favor indica q versión de Excel utilizas.

"perr0L0co" escribió en el mensaje de noticias
news:
La idea es esta:
Con regular frecuencia reviso registros numericos de gastos y a veces al
momento de estar analizando los numeros necesito sumar dos o mas celdas para
verificar si el resultado es apropiado a lo que estoy esperando, a veces
puede necesitar la suma simplemente como dato informativo pero otras veces
podría necesitar ese valor para otro uso y es ahí donde necesitaria que la
macro me de la opción de guardar el resultado en alguna celda que yo elija
en ese momento.

Gracias por el codigo, mi pregunta, puedo dar la opción de decidir en que
celda guardar el valor? Esto es porque no siempre uso el mismo reporte y es
obvio que mientras para un reporte la celda que yo ponga en el codigo sea
correcta no lo sera para otros reportes donde esa misma celda este ocupada
por otro dato importante.

Se me habia ocurrido hacerlo a traves de un refedit usando un userform pero
mi problema ahi radica en que no encuentro como pasar mi resultado al
userform.

Gracias por el tiempo!!

Saludos.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida