Documentos de Académico
Documentos de Profesional
Documentos de Cultura
PCW 250
r-j- _, _ . : ^
1
Programación d e macros y funciones e n Excel
PCW 2 5 1
TUTOR
Master Mind
¿Conoce usted este juego?, con-
siste en adivinar un número pen-
sado por el adversario. El nos pero en distinta posición (el 7 y el adivinar y evaluar nuestros inten-
guiará hacia ese objetivo dicién- 4). Y que otro (el 8) se encuentra tos de adivinarlo en términos de
donos cuánto nos aproximamos en la misma posición. Pero no nos “bien” y “regular”, de acuerdo con
al número que él ha pensado. dice cuáles son esos dígitos. Sola- las reglas del juego. Veamos
Por ejemplo, supongamos que el mente evalúa nuestro intento en entonces cada problema.
piensa en el número 4587 (cosa términos de “bien” y “regular”.
que, por supuesto, no nos dice). Con esta información, y usando la Generando el número
Nosotros arriesgamos: “¿Es el lógica, podemos llegar a determi- Excel incluye un par de funciones
7482?” Entonces él nos dirá: nar cuál es el número. para generar números aleatorios
“Dos regular y uno bien”. Con esto Una hoja de cálculo capaz de de determinadas características.
nos quiere decir que dos dígitos jugar al Master Mind debe hacer Pero ninguna de ellas nos ase-
de nuestro número se encuentran dos cosas: generar el número de gura que el número generado
también en el que él ha pensado, cuatro cifras que tendremos que tenga todos sus dígitos diferen-
tes, condición necesaria en el
Master Mind. Entonces recurri-
Cómo se ejecuta una macro mos a la hoja de cálculo de la
En el texto se indica la forma más incómoda de ejecutar una macro: a través de las Figura 1.
opciones Herramientas∑Macro∑Macros. Hay muchas otras formas, pero las más simples y ele El rango E3:E12 contiene copias
gantes son las siguientes:
de la función =ALEATORIO(). E s t a
Asignando una combinación de teclas a la macro función devuelve u n n ú m e r o
Tomamos las opciones Herramientas∑Macro∑Macros. Aparecerá un cuadro con la lista de aleatorio cualquiera compren-
macros disponibles, en la cual seleccionamos (con un clic) la macro a la cual le que dido e n t r e 0 y 1 . El n ú m e r o
ramos asignar la combinación de teclas. Hacemos un clic en el botón Opciones y apare
cerá el cuadro de la Figura 6. Donde dice Tecla de método abreviado escribimos una M
devuelto cambia cada vez que se
mayúscula y hacemos un clic en Aceptar. Cerramos el cuadro donde aparece la macro. recalcula la hoja, tanto porque
De acuerdo con la combinación de teclas usada, ahora podemos ejecutar la macro hacemos algún cambio en ella,
(generando el número a adivinar) mediante la combinación Control+Shift+M. Es conve como porque apretamos la tecla
niente elegir combinaciones de este tipo porque las combinaciones más sencillas
(de la forma Control+Letra) suelen tener alguna otra función asignada por el programa. F9.
El rango F3:F12 contiene simple-
Insertando un botón en la hoja de cálculo mente los números del cero al
Los que son más aficionados al ratón que al teclado, preferirán ejecutar la macro nueve. Si ordenamos esta tabla
haciendo clic en un botón insertado a tal efecto. Los botones de macros se obtienen
en la barra de herramientas Formularios (Figura 7). s e g ú n el c o n t e n i d o de la
Hacemos un clic en el botón Botón, dentro de la barra de herramientas Formularios y defi columna E , el resultado s e r á ,
nimos, arrastrando el ratón, un rectángulo del tamaño que tendrá el botón. Al soltar realmente, desordenar los dígi-
el botón del ratón aparecerá el cuadro de la Figura 8, con la lista de macros defini
das en la hoja de cálculo. Hacemos un clic en la macro a la cual le queremos asignar
tos de la columna F. Leyendo de
el botón y hacemos un clic en Aceptar. De ahora en adelante, la macro puede ejecu arriba hacia abajo las cuatro
tarse con un clic en el botón creado. p r i m e r a s c e l d a s de e s t a
c o l u m n a , o b t e n d r e m o s el
PCW 252
TUTOR
Figura 3 : E n la s i g u i e n t e instrucción
la función (Range(“E3”).Select) e l o b j e t o e s la
BIEN. celda E3, y lo que se hace es selec-
cionarla. E n o t r a s p a l a b r a s , la
instrucción ubica el cursor e n la
celda E3. La estructura
Objeto.Acción e s típica del len-
guaje Visual Basic e n general y
d e VBA e n particular.
Figura 4 :
Luego sigue u n bucle: u n con-
la función junto de instrucciones q u e p u e -
REGULAR. d e n ejecutarse u n a o m á s veces.
Hay dos tipos de ciclos: aquellos
e n q u e las instrucciones s e eje-
cutan un número determinado
de veces y aquellos en que se
ejecutan s e g ú n s e c u m p l a o n o
cierta condición. El q u e aparece
e n el listado d e la Figura 2 perte-
n ú m e r o d e c u a t r o dígitos dife- nece a este segundo
r e n t e s q u e e s t a m o s necesitando. tipo.
Para construir este número Este ciclo comienza con
escribimos e n la celda E1 la fór- la p a l a b r a clave Do y s e
m u l a =F3*1000+F4*100+F5*10+F6 q u e cierra con Loop. E n esta
r e ú n e los c u a t r o primeros dígi- última instrucción se
tos en u n o solo n ú m e r o . E s t e i n d i c a q u e el c i c l o s e
s e r á el n ú m e r o a descubrir. repetirá hasta (en
inglés, until) q u e el valor
Automatizando el proceso d e la c e l d a F3 s e a d i s -
Figura 5 : la hoja de cálculo terminada. En la celda E1
E n r e s u m e n , p a r a o b t e n e r el está (oculto) el número a adivinar. A partir de la celda
tinta de cero. Aquí a p a -
n ú m e r o a adivinar, tenemos que A2 escribimos nuestros pronósticos y e n las columnas B r e c e u n a estructura
hacer lo siguiente: y C la hoja de cálculo nos mostrará la calificación obte similar a Objeto.Acción:
- Borrar el rango A2:A11, para eli- nida por cada intento. Objeto.Propiedad. E l o b j e t o e s
m i n a r los n ú m e r o s u s a d o s en la celda F3 y la propiedad
u n a partida anterior. e s s u valor.
- Colocar el cursor en la celda E3. Entendiendo el código La i n s t r u c c i ó n c o m p r e n d i d a
- Ordenar el rango E3:F12. Encabeza la macro la instrucción e n t r e e l Do y e l Loop e s Selection.Sort
- Asegurarnos q u e , al ordenar, Sub Ordenar(). T o d a m a c r o d e b e Key1:=Range(“E3”), Order1:=xlAscending.
se obtiene en E1 u n número cuatro comenzar con la palabra clave Sub, Aquí aparece de nuevo la e s t r u c -
cifras, es decir, que no comienza seguida del nombre elegido para t u r a objeto.acción: el objeto e s la
con cero. la macro. En principio, este nom- selección a c t u a l y la acción e s s u
- Colocar el cursor en la celda A2 bre puede ser cualquiera. Luego o r d e n a m i e n t o (en i n g l é s , sort).
para comenzar la tarea de deduc- s i g u e n d o s i n s t r u c c i o n e s d e la La i n s t r u c c i ó n i n d i c a t a m b i é n
ción. misma forma: Objeto.Acción. Es decir, q u e la c l a v e d e o r d e n a m i e n t o
Son demasiados pasos. Y, a u n - s e m e n c i o n a u n “objeto” ( q u e (Key1) e s la celda E3 y q u e el orden
que se tarde m á s en decirlos que p u e d e ser u n rango, u n gráfico, e s a s c e n d e n t e . Debido a la con-
en hacerlos, pueden simplificarse u n a línea, etc.) y u n a “acción” que dición e x p r e s a d a e n la i n s t r u c -
c o n u n a m a c r o . É s t a e s la q u e se efectuará sobre ese objeto. c i ó n Loop, el o r d e n a m i e n t o s e
a p a r e c e e n la F i g u r a 2 . Lo q u e La p r i m e r a i n s t r u c c i ó n e s h a r á t a n t a s veces como sea
vemos en la figura es el “código de Range(“A2:A11”).ClearContents. L a primera necesario h a s t a q u e el valor de
la macro”. E s la t r a d u c c i ó n al parte (el objeto) indica que se va a la celda F3 s e a distinto d e cero, lo
lenguaje VBA de la lista de cinco h a c e r u n a o p e r a c i ó n s o b r e el q u e a s e g u r a generar u n n ú m e r o
o p e r a c i o n e s q u e c o n d u c e n a la r a n g o A2:A11. La s e g u n d a p a r t e d e c u a t r o dígitos. U n a vez gene-
obtención del n ú m e r o . P a r a indica la acción que se hace sobre r a d o el n ú m e r o a a d i v i n a r , la
entender las instrucciones que ese objeto: borrar el contenido. Es i n s t r u c c i ó n Range(“A2”).Select u b i c a
aparecen en la macro de la Figura decir que esta instrucción borra el el c u r s o r e n l a c e l d a A2 p a r a
2 no se necesita u n gran conoci- contenido del r a n g o d o n d e se c o m e n z a r el j u e g o . F i n a l m e n t e
miento de VBA. Apenas si h a c e encontrarían los números escritos aparece la instrucción End Sub que
falta saber u n poco de inglés. en u n a partida anterior. señala el fin de la macro.
PCW 254
TUTOR
PCW 255
TUTOR
PCW 256
Usando las funciones
Habiendo creado las funciones en el editor de
VBA, ya las podemos usar. Considerando la
hoja de cálculo de la Figura 1, supondremos que
nuestros pronósticos serán escritos en la
columna A, debajo del número objetivo (que
permanecerá oculto al oscurecer su celda). En
las columnas B y C debemos obtener las respec-
tivas puntuaciones. En la celda B2 escribimos
=BIEN(E$1;A2), en la celda C2 escribimos
=REGULAR(E$1;A2). Estas dos fórmulas comparan el
objetivo que está en la
celda E1 con los pronósti-
cos que iremos escri- Excel incluye
biendo a partir de la celda
A2. Ambas deben exten-
un par de
derse hacia abajo para funciones para
poder conservar las pun-
tuaciones de todos nues-
generar
tros intentos. Diez inten- números
tos es una cantidad razo-
nable.
aleatorios de
La hoja de cálculo termi- determinadas
nada aparece en la Figura
5, con algunas opciones
características.
de formato para hacerla Pero ninguna de
más elegante. Del botón
que se ve a la derecha
ellas nos
hablamos en el apartado asegura que el
Cómo se ejecuta una
macro.
número
generado tenga
Comienza el juego
E s t á todo listo p a r a
todos sus
comenzar a jugar. Para dígitos
ello ejecutamos la macro,
escribimos nuestro pro-
diferentes,
nóstico en A2. Las celdas condición
B2 y C2 mostrarán la pun-
tuación de ese pronóstico.
necesaria en el
Con la información sumi- Master Mind
nistrada por estas pun-
tuaciones, escribimos otro
número en A3. Cuando la función escrita en la
columna B muestre el valor 4, es que hemos
acertado. Los cuatro dígitos de nuestro último
intento están “bien”.
Como dijimos antes, deberíamos adivinar el
número generado por la computadora en no
más de diez intentos.
Puede encontrar la hoja de cálculo terminada
y funcionando (con ligeras modificaciones
estéticas) en el área de descarga de listados de
nuestra páginas web: www.idg.es/pcworld PCW