Excel en la Mac no siempre ha sido la misma potencia que en Windows. Las macros realmente no funcionarían a menos que fueran creadas exclusivamente para Mac.
A partir de 2013, Microsoft trajo macros. Hay dos tipos de macros: las que puede crear al registrar rápidamente sus acciones y las que usan VBA para diseñar automatizaciones más avanzadas. Con Office 2016, Excel usa la misma base de código en todas las plataformas. Este cambio facilitará que las macros funcionen en todas las plataformas.
Así que echemos un vistazo a cómo funciona actualmente en macOS.
Habilitar macros en Excel en Mac
Trabajar con macros en Excel en tu Mac puede no estar habilitado de forma predeterminada. Esta configuración se debe a que las macros pueden ser un posible vector de malware. Cómo protegerse del malware de Microsoft Word Cómo protegerse del malware de Microsoft Word ¿Sabía que su computadora puede estar infectada por documentos maliciosos de Microsoft Office o que podría ser engañado para habilitarlo? la configuración que necesitan para infectar su computadora? Lee mas . La forma más fácil de saber es ver si tiene la pestaña Desarrollador disponible en la cinta de opciones en Excel. Si no lo ves, es simple habilitarlo.
Haga clic en Excel en la barra de menú, y luego seleccione Preferencias en el menú desplegable. En el menú, haz clic en Ribbon & Toolbar . En la lista de la derecha, el desarrollador debe estar en la parte inferior, haga clic en la casilla de verificación. Finalmente, haga clic en Guardar y verá aparecer la pestaña Desarrollador al final de la cinta de opciones.
Después de crear cada libro de trabajo con macros, guárdelo en un formato nuevo .xlsm para usar las macros después de volver a abrir el archivo. Si se olvida, Excel se lo recordará cada vez que intente guardar. También deberá habilitar las macros cada vez que abra el archivo.
Grabación manual de una macro en Excel en Mac
Aunque puede codificar macros 4 errores que puede evitar al programar macros de Excel con VBA 4 errores que puede evitar al programar macros de Excel con VBA El código simple y las macros son las claves de los superpoderes de Microsoft Excel. Incluso los no programadores pueden agregar fácilmente funcionalidades impresionantes a sus hojas de cálculo con Virtual Basics for Applications (VBA). ¡Solo evita estos errores de programación para principiantes! Leer más, eso podría no ser para todos. Si no está listo para comenzar a trabajar con VBA, Excel le permite registrar los pasos para su macro en una hoja existente. Haga clic en la pestaña Desarrollador para ver sus opciones.
Está buscando la tercera opción en la cinta, grabar macro . Haga clic aquí y aparecerá un cuadro de diálogo que le permite nombrar su macro y establecer un atajo de teclado. Puede extender su macro al Libro de trabajo actual, un Libro de trabajo nuevo o en su Libro de trabajo de macro personal . El Libro de trabajo de macro personal está en su perfil de usuario y le permite usar sus macros entre sus archivos.
Una vez que registra sus acciones, están disponibles en esta misma pestaña. Al hacer clic en las macros se mostrarán las macros guardadas en su libro de trabajo. Haga clic en su nombre de macro y haga clic en Ejecutar para ejecutar sus acciones registradas.
Ejemplo 1: Ventas diarias totales y promedio por hora
Para una macro de ejemplo, se ejecutará una hoja de ventas diaria, con las ventas desglosadas por totales por hora. Su macro agregará un total de ventas diarias y luego agregará un promedio en la última columna de cada período por hora. Si trabaja al por menor u otro puesto de ventas, esta es una hoja útil para rastrear los ingresos.
Necesitamos configurar la primera hoja. Usar este primer espacio en blanco como plantilla para copiar en una nueva pestaña cada día podría ahorrarle algo de tiempo. En la primera columna / fila ponga Hora / Fecha. En la parte superior, agregue de lunes a viernes.
Luego, en la primera columna, desglose los totales por hora de 8-5. Usé la hora de 24 horas, pero puede usar la notación AM / PM si lo prefiere. Su hoja debe coincidir con la captura de pantalla de arriba.
Agregue una nueva pestaña y copie su plantilla en ella. Luego complete sus datos de ventas del día. (Si no tiene datos para llenar esta hoja, puede ingresar = RandBetween (10, 1000) en todas las celdas para crear datos ficticios). A continuación, haga clic en Desarrollador en la cinta de opciones.
Luego, haz clic en Grabar macro . En el cuadro de diálogo, ingrese el nombre como AverageandSum y déjelo almacenado en This Workbook . Puede establecer una tecla de acceso directo si lo desea. Puede ingresar una descripción si necesita más detalles sobre lo que hace la macro. Haga clic en Aceptar para comenzar a configurar la macro.
En la parte inferior de los listados por hora, ingrese Totales diarios . En la celda al lado, ingrese = SUM (B2: B10) . Luego copie y pegue eso en el resto de las columnas. Luego, en el encabezado agrega Promedio después de la última columna. Luego, en la celda siguiente, ingrese = Promedio (B2: F2) . Luego, pega eso en las celdas en el resto de la columna.
A continuación, haga clic en Detener grabación . Su macro ahora puede usarse en cada hoja nueva que agregue a su libro de trabajo. Una vez que tenga otra hoja de datos, vuelva a Desarrollador y haga clic en Macros . Su macro debe estar resaltada, haga clic en ejecutar para agregar sus sumas y promedios.
Este ejemplo puede ahorrarle un par de pasos, pero para acciones más complejas que pueden sumarse. Si realiza las mismas operaciones en datos con formato idéntico, use macros grabadas.
Macros de VBA en Excel en Mac
Las macros grabadas manualmente en Excel ayudan con datos que siempre tienen el mismo tamaño y forma. También es útil si desea realizar acciones en toda la hoja. Puedes usar tu macro para probar el problema.
Agregue otra hora y día a la hoja y ejecute la macro. Verá que la macro sobrescribe sus datos nuevos. La forma de evitar esto es usar código para hacer que la macro sea más dinámica usando VBA, que es una versión reducida de Visual Basic 4 Grandes sitios web para hacerte un gurú de Visual Basic 4 sitios web geniales para convertirte en un gurú de Visual Basic ¿Quieres aprender? Visual Basic? Aquí hay algunos recursos geniales para comenzar. Lee mas . La implementación se centra en la automatización de Office.
No es tan fácil de aprender como Applescript Aprenda a automatizar su Mac con AppleScript [Parte 1: Introducción] Aprenda a automatizar su Mac con AppleScript [Parte 1: Introducción] Lea más, pero la automatización de Office se basa completamente en Visual Basic. Entonces, una vez que trabaje con esto, puede cambiar rápidamente y usarlo en otras aplicaciones de Office. (También puede ser una gran ayuda si tiene una PC con Windows en el trabajo).
Al trabajar con VBA en Excel, tiene una ventana separada. La captura de pantalla de arriba es nuestra macro grabada tal como aparece en el editor de código. El modo de ventana puede ser útil para jugar con su código mientras aprende. Cuando su macro se cuelga, hay herramientas de depuración para ver el estado de sus variables y datos de la hoja.
Office 2016 ahora viene con el editor completo de Visual Basic. Le permite usar el navegador de objetos y las herramientas de depuración que solían estar limitadas a la versión de Windows. Puede acceder al Examinador de objetos yendo a Ver> Examinador de objetos o simplemente presionando Mayús + Comando + B. A continuación, puede examinar todas las clases, métodos y propiedades disponibles. Fue muy útil para construir el código en la siguiente sección.
Ejemplo 2: Total de ventas diarias y promedio por hora con código
Antes de comenzar a codificar su macro, comencemos agregando un botón a la plantilla. Este paso hace que sea mucho más fácil para un usuario novato acceder a su macro. Pueden hacer clic en un botón para llamar a la macro en lugar de profundizar en las pestañas y menús.
Vuelva a la hoja de plantilla en blanco que creó en el último paso. Haga clic en Desarrollador para volver a la pestaña. Una vez que esté en la pestaña, haga clic en el botón . A continuación, haga clic en algún lugar de la hoja en la plantilla para colocar el botón. Aparecerá el menú de macros, nombre su macro y haga clic en Nuevo .
La ventana de Visual Basic se abrirá; lo verá listado como Module2 en el navegador del proyecto. El panel de códigos tendrá Sub Average ySumButton () en la parte superior y algunas líneas abajo End Sub . Tu código debe ir entre estos dos, ya que es el principio y el final de tu macro.
Paso 1: declarar variables
Para comenzar, deberá declarar todas sus variables. Los fundamentos de la programación de computadoras 101 - Variables y tipos de datos Lo básico de la programación de computadoras 101 - Variables y tipos de datos Habiendo presentado y hablado un poco acerca de la Programación orientada a objetos antes y de dónde proviene su homónimo, Pensé que era hora de que estudiemos los principios básicos absolutos de la programación de una manera que no sea específica del idioma. Esto ... Leer más. Estos están en el bloque de código a continuación, pero una nota acerca de cómo se construyen. Debe declarar todas las variables usando Dim antes del nombre, y luego como con el tipo de datos.
Sub AverageandSumButton() Dim RowPlaceHolder As Integer Dim ColumnPlaceHolder As Integer Dim StringHolder As String Dim AllCells As Range Dim TargetCells As Range Dim AverageTarget As Range Dim SumTarget As Range
Ahora que tiene todas sus variables, necesita usar algunas de las variables de rango de inmediato. Los rangos son objetos que tienen secciones de la hoja de trabajo como direcciones. La variable Todas las celdas se establecerá en todas las celdas activas de la hoja, que incluye las etiquetas de columna y fila. Usted obtiene esto llamando al objeto ActiveSheet y luego es la propiedad UsedRange .
El problema es que no quiere que las etiquetas estén incluidas en los datos de promedio y suma. En cambio, usará un subconjunto del rango AllCells. Este será el rango de TargetCells. Usted declara manualmente su rango. Su dirección de inicio será la celda en la segunda fila en la segunda columna del rango.
Usted llama a esto llamando a su rango AllCells, usando su clase Cells para obtener esa celda específica usando (2, 2) . Para obtener la celda final en el rango, aún llamarás a AllCells . Esta vez usando el método SpecialCells para obtener la propiedad xlCellTypeLastCell . Puede ver ambos en el bloque de código a continuación.
Set AllCells = ActiveSheet.UsedRange Set TargetCells = Range(AllCells.Cells(2, 2), AllCells.SpecialCells(xlCellTypeLastCell))
Paso 2: para cada bucle
Las siguientes dos secciones de código son For Each The Absolute Basics Of Programming For Beginners (Parte 2) Lo básico absoluto de la programación para principiantes (Parte 2) En la parte 2 de nuestra guía para principiantes, voy a cubrir los aspectos básicos de funciones, valores de retorno, bucles y condicionales. Asegúrate de haber leído la parte 1 antes de abordar esto, donde expliqué el ... Leer más loops. Estos bucles pasan por un objeto para actuar en cada subconjunto de ese objeto. En este caso, está haciendo dos de ellos, uno para cada fila y uno para cada columna. Como son casi exactamente iguales, solo uno de ellos está aquí; pero ambos están en el bloque de código. Los detalles son virtualmente idénticos.
Antes de comenzar el ciclo para cada fila, debe establecer la columna de destino donde el ciclo escribe el promedio de cada fila. Utiliza la variable ColumnPlaceHolder para establecer este objetivo. Lo configura igual a la variable Count de la clase Cells de AllCells . Agregue uno para moverlo a la derecha de sus datos agregando +1 .
A continuación, comenzará el ciclo utilizando For Each . Luego, desea crear una variable para el subconjunto, en este caso, subRow . Después de In, establecemos el objeto principal que estamos analizando TargetCells . Agregue .Rows al final para limitar el bucle a solo cada fila, en lugar de cada celda del rango.
Dentro del ciclo, usa el método ActiveSheet.Cells para establecer un objetivo específico en la hoja. Las coordenadas se establecen utilizando subRow.Row para obtener la fila en la que se encuentra actualmente el bucle. Luego, usa ColumnPlaceHolder para la otra coordenada.
Usas esto para los tres pasos. El primero que agregue .value después de los paréntesis y establecer igual a WorksheetFunction.Average (subRow) . Esto escribe la fórmula para el promedio de la fila en su celda objetivo. La siguiente línea anexará. Estilo y configure eso igual a "Moneda" . Este paso coincide con el resto de tu hoja. En la última línea, anexa .Font.Bold y lo establece igual a True . (Tenga en cuenta que no hay comillas alrededor de este, ya que es el valor booleano). Esta línea muestra la fuente para resaltar la información del resumen del resto de la hoja.
Ambos pasos están en el siguiente ejemplo de código. El segundo ciclo intercambia filas por columnas y cambia la fórmula a Suma . El uso de este método relaciona sus cálculos con el formato de la hoja actual. De lo contrario, está vinculado al tamaño en el momento en que registra la macro. Entonces, cuando trabajas más días u horas, la función crece con tus datos.
ColumnPlaceHolder = AllCells.Columns.Count + 1 For Each subRow In TargetCells.Rows ActiveSheet.Cells(subRow.Row, ColumnPlaceHolder).Value = WorksheetFunction.Average(subRow) ActiveSheet.Cells(subRow.Row, ColumnPlaceHolder).Style = "Currency" ActiveSheet.Cells(subRow.Row, ColumnPlaceHolder).Font.Bold = True Next subRow RowPlaceHolder = AllCells.Rows.Count + 1 For Each subColumn In TargetCells.Columns ActiveSheet.Cells(RowPlaceHolder, subColumn.Column).Value = WorksheetFunction.Sum(subColumn) ActiveSheet.Cells(RowPlaceHolder, subColumn.Column).Style = "Currency" ActiveSheet.Cells(RowPlaceHolder, subColumn.Column).Font.Bold = "True" Next subColumn
Paso 3: etiqueta tus resúmenes
A continuación, etiquete la nueva fila y columna, establezca RowPlaceHolder y ColumnPlaceHolder de nuevo. Primero, use AllCells.Row para obtener la primera fila en el rango, y luego AllCells.Column + 1 para obtener la última columna. Luego, usará el mismo método que el bucle para establecer el valor en "Ventas promedio" . También usará la misma propiedad .Font.Bold para poner en negrita su nueva etiqueta.
A continuación, inviértalo, establezca sus marcadores de posición en la primera columna y en la última fila para agregar "Ventas totales" . Usted quiere audaz esto también.
Ambos pasos están en el bloque de código a continuación. Este es el final de la macro señalada por End Sub . Ahora debería tener toda la macro 5 Recursos para macros de Excel para automatizar sus hojas de cálculo 5 Recursos para macros de Excel para automatizar sus hojas de cálculo ¿Buscar macros de Excel? Aquí hay cinco sitios que tienen lo que está buscando. Lea más y haga clic en el botón para ejecutarlo. Puede pegar todos estos bloques de código en su hoja de Excel si quiere hacer trampa, pero ¿dónde está la diversión en eso?
ColumnPlaceHolder = AllCells.Columns.Count + 1 RowPlaceHolder = AllCells.Row ActiveSheet.Cells(RowPlaceHolder, ColumnPlaceHolder).Value = "Average Sales" ActiveSheet.Cells(RowPlaceHolder, ColumnPlaceHolder).Font.Bold = True ColumnPlaceHolder = AllCells.Column RowPlaceHolder = AllCells.Rows.Count + 1 ActiveSheet.Cells(RowPlaceHolder, ColumnPlaceHolder).Value = "Total Sales" ActiveSheet.Cells(RowPlaceHolder, ColumnPlaceHolder).Font.Bold = True End Sub
¿Qué sigue para Macros en Excel en Mac?
Las macros grabadas son geniales para usar para la repetición predecible. Incluso si se trata de algo tan simple como redimensionar todas las celdas y los encabezados, esto puede ahorrarle tiempo.
Visual Basic abre la puerta a los usuarios de Mac Excel para profundizar en la automatización de Office. Visual Basic tradicionalmente solo estaba disponible en Windows. Permite que sus macros se adapten dinámicamente a los datos, haciéndolos más versátiles. Si tiene paciencia, esta puede ser la puerta de entrada a una programación más avanzada.