Copie la suma de las celdas seleccionadas al Portapapeles

A veces lleva mucho tiempo pensar en algunas cosas. Pero cuando YA se han inventado, a posteriori parecen obvios e incluso banales. De la serie “¿Qué, fue posible?”.

Desde las primeras versiones, la barra de estado en la parte inferior de la ventana de Microsoft Excel mostraba tradicionalmente los totales de las celdas seleccionadas:

Copie la suma de las celdas seleccionadas al Portapapeles

Si lo desea, incluso es posible hacer clic con el botón derecho en estos resultados y seleccionar del menú contextual exactamente qué funciones queremos ver:

Copie la suma de las celdas seleccionadas al Portapapeles

Y recientemente, en las últimas actualizaciones de Excel, los desarrolladores de Microsoft agregaron una característica simple pero ingeniosa: ¡ahora, cuando hace clic en estos resultados, se copian en el portapapeles!

Copie la suma de las celdas seleccionadas al Portapapeles

Belleza. 

Pero, ¿qué pasa con aquellos que aún no tienen (¿o ya tienen?) una versión de Excel de este tipo? Aquí es donde las macros simples pueden ayudar.

Copiar la suma de celdas seleccionadas al Portapapeles usando una macro

Abrir en pestaña revelador (Desarrollador) editor Visual Basic o usa este atajo de teclado otro+F11. Insertar nuevo módulo vacío a través del menú Insertar – Módulo y copiar el siguiente código allí:

Sub SumSelected () Si TypeName (Selección) <> "Rango" Entonces salga de Sub con GetObject ("Nuevo: {1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText WorksheetFunction.Sum (Selección) .PutInClipboard End With End Sub  

Su lógica es simple:

  • Primero viene la "protección contra el tonto": verificamos qué se resalta exactamente. Si no se seleccionan celdas (pero, por ejemplo, un gráfico), salga de la macro.
  • Luego usando el comando Obtenerobjeto creamos un nuevo objeto de datos donde nuestra suma de celdas seleccionadas se almacenará más tarde. Un código alfanumérico largo e incomprensible es, de hecho, un enlace a la rama del registro de Windows donde se encuentra la biblioteca. Biblioteca de objetos de Microsoft Forms 2.0, que puede crear dichos objetos. A veces este truco también se llama enlace tardío implícito. Si no lo usa, entonces tendría que hacer un enlace a esta biblioteca en el archivo a través del menú Herramientas — Referencias.
  • La suma de las celdas seleccionadas se considera un comando WorksheetFunction.Sum(Selección), y luego la cantidad resultante se coloca en el portapapeles con el comando PonerEnPortapapeles

Para facilitar su uso, puede, por supuesto, asignar esta macro a un atajo de teclado usando el botón Macros de la pestaña. revelador (Desarrollador — Macros).

Y si desea ver qué se copió exactamente después de ejecutar la macro, puede activar el panel Portapapeles usando la flecha pequeña en la esquina inferior derecha del grupo correspondiente en El principal (Home) lengüeta:

Copie la suma de las celdas seleccionadas al Portapapeles

No solo la cantidad

Si además de la cantidad banal quieres algo más, entonces puedes utilizar cualquiera de las funciones que nos proporciona el objeto Hoja de trabajo Función:

Copie la suma de las celdas seleccionadas al Portapapeles

Por ejemplo, hay:

  • Suma - suma
  • Promedio - media aritmética
  • Count – número de celdas con números
  • CountA – número de celdas llenas
  • CountBlank – número de celdas vacías
  • Min – valor mínimo
  • Max – valor máximo
  • Mediana – mediana (valor central)
  • ... etc.

Incluyendo filtros y filas-columnas ocultas

¿Qué pasa si las filas o columnas están ocultas (manualmente o mediante un filtro) en el rango seleccionado? Para no tenerlos en cuenta en los totales, necesitaremos modificar ligeramente nuestro código agregando al objeto Selección perfecta Celdas especiales (xlCellTypeVisible):

Sub SumVisible() Si TypeName(Selection) <> "Rango" Entonces salga de Sub con GetObject("Nuevo:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText WorksheetFunction.Sum(Selection.SpecialCells(xlCellTypeVisible)) . PutInClipboard End con End Sub  

En este caso, el cálculo de cualquier función total se aplicará solo a las celdas visibles.

Si necesitas una fórmula viva

Si sueña, puede pensar en escenarios en los que es mejor copiar no un número (constante), sino una fórmula viva en el búfer, que calcula los totales que necesitamos para las celdas seleccionadas. En este caso, deberá pegar la fórmula a partir de fragmentos, agregarle la eliminación de signos de dólar y reemplazar la coma (que se usa como separador entre las direcciones de varios rangos seleccionados en VBA) con un punto y coma:

Sub SumFormula () Si TypeName (Selección) <> "Rango", luego salga de Sub con GetObject ("Nuevo: {1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText "= СУММ (" & Reemplazar (Reemplazar (Selección. Dirección, ",", ";"), "$", "") y ")" .PutInClipboard End With End Sub  

Suma con condiciones adicionales

Y, finalmente, para los completamente maniáticos, puede escribir una macro que resuma no todas las celdas seleccionadas, sino solo aquellas que cumplan con las condiciones dadas. Entonces, por ejemplo, se verá una macro que pone la suma de las celdas seleccionadas en el Búfer, si sus valores son mayores que 5 y al mismo tiempo se rellenan con cualquier color:

 Sub CustomCalc() Dim myRange As Range If TypeName(Selection) <> "Rango" Entonces salga de Sub para cada celda en la selección If cell.Value > 5 And cell.Interior.ColorIndex <> xlNone Entonces, si myRange no es nada, entonces establezca myRange = cell Else Set myRange = Union(myRange, cell) End If End If Next cell With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText WorksheetFunction.Sum(myRange) .PutInClipboard End With End Sub  

Como puede imaginarse fácilmente, las condiciones se pueden establecer en cualquier forma, hasta formatos de celda, y en cualquier cantidad (incluso vinculándolas con operadores lógicos o o y). Hay mucho espacio para la imaginación.

  • Convertir fórmulas a valores (6 formas)
  • Qué son las macros, cómo usarlas, dónde insertar código de Visual Basic
  • Información útil en la barra de estado de Microsoft Excel

Deje un comentario