Macro que al copiar varias celdas con valores pegue en una celda la suma de todas. ¿Es posible?

Es decir, Copio A1, A2 y A3 que tiene los valores 10, 10 y 10.

Y al activar la macro (que asignaría a algún botón del acceso rápido) me pega en la celda seleccionada la suma de las 3, es decir, 30.

¿Se puede?

Muchas gracias. De antemano.

Respuesta
-1

Bueno más que responderte seria un consejo no seria más sencillo solo aplicar suma en vez de pegar los tres valores en una celda

No.

Primero porque necesito que no quede fórmula y segundo porque lo que busco es hacer algo más rápido, como ctrl+c y ctrl+v.

Aya

1 respuesta más de otro experto

Respuesta
2

Te anexo 6 opciones con macro para realizar la suma de las 3 celdas

Sub sumar1()
ActiveCell = Range("A1") + Range("A2") + Range("A3")
End Sub
Sub sumar2()
ActiveCell = [A1] + [A2] + [A3]
End Sub
Sub sumar3()
ActiveCell = Application.Sum(Range("A1"), Range("A2"), Range("A3"))
End Sub
Sub sumar4()
ActiveCell = Application.Sum(Range("A1:A3"))
End Sub
Sub sumar5()
ActiveCell = Evaluate("SUM(A1,A2,A3)")
End Sub
Sub sumar6()
ActiveCell = Evaluate("SUM(A1:A3)")
End Sub

Saludos.Dante Amor

No olvides valorar la respuesta.

Bien, ahora lo que faltaría es que en vez de sumar el rango a1:a3 sean las celdas que están "copiadas". ¿Se entiende?

Si yo selecciono 2 celdas cualquiera y pongo copiar, quedan como activas a la espera de que se peguen en algún lado.

En ese "algún lado", yo quiero que se sumen.

Soy chotisimo explicando

Me parece que no es tan sencillo como parece, no?

Con esta macro, antes de ejecutar, primero se deben seleccionar las celdas, copiar las celdas, después seleccionar la celda destino y por último ejecutar la macro. El resultado de la suma te lo pondrá en la celda destino que seleccionaste.

Sub sumar1()
'Por.DAM
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    On Error Resume Next
    Set h1 = ActiveSheet
    If Application.CutCopyMode = 1 Then
        Set h2 = Sheets.Add(after:=Sheets(Sheets.Count))
        nombre = h2.Name
        h2.Paste
        For Each c In ActiveSheet.UsedRange
            tot = tot + c
        Next
        h2.Delete
        h1.Select
        ActiveCell = tot
    Else
        MsgBox "No has copiado celdas", vbCritical
    End If
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
End Sub

Si quieres algo más elegante puedes utilizar la siguiente macro. 

Con esta macro. Primero la ejecutas, la macro te pide seleccionar las celdas a copiar y después te pide la celda destino.

Sub sumar2()
'Por.DAM
    On Error Resume Next
    With Application
        Set rango = .InputBox("Selecciona el rango a copiar", _
            Default:=Selection.Address, Type:=8)
        If rango Is Nothing Then Exit Sub
        Set celda = .InputBox("Selecciona celda destino", Type:=8)
        If celda Is Nothing Then Exit Sub
    End With
    For Each c In rango
        tot = tot + c
    Next
    celda.Value = tot
End Sub

Las 2 macros te suman el rango de celdas y te ponen el resultado en la celda destino. Utiliza la que más te agrade.

Saludos. Dante Amor

¡Gracias!

Excelentísimo!

Era exactamente lo que quería! Menos mal que pregunte porque no iba a llegar a este resultado nunca en mi vida.

Mil puntos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas