lunes, noviembre 27, 2006

Crear varias hojas en un cuaderno de Excel en una operacion

Si tenemos un cuaderno Excel con varias hojas y queremos borrar algunas de ellas, podemos hacerlo en una sola operación. Sencillamente, elegimos las hojas a ser borradas (clic mientras apretamos la tecla Ctrl) y luego en el menú contextual elegimos Eliminar.

En cambio, Excel no tiene ningún método para crear varias hojas en una sola operación. Por ejemplo, si queremos crear un cuaderno con 12 hojas, una para cada mes del año; o peor aún, uno con 52 hojas, una para cada semana.

Una solución bastante exótica sería definir el número de hojas en un nuevo libro (Opciones—General—Número de hojas en un nuevo libro) a 100, o algo así. Luego podríamos borrar de una vez las hojas excedentes.

Una solución más razonable es crear una macro que automatice la tarea de agregar hojas al cuaderno.

En un módulo del editor de Vba ponemos este código


Sub add_sheets()
Dim nbrSh As Integer, Counter As Integer

nbrSh = Application.InputBox(prompt:="Cuantas hojas agregar?", _
Title:="Agregar Hojas", Type:=1)

Counter = 0

While Counter < nbrSh
Sheets.Add After:=Sheets(Sheets.Count)
Counter = Counter + 1
Wend

End Sub


O esta otra, mas sintetica

Dim NrSh As Integer

On Error Resume Next

NrSh = Application.InputBox(prompt:="Cuantas hojas agregar", Title:="Agregar Hojas", Type:=1)

Sheets.Add after:=Sheets(Sheets.Count), Count:=NrSh


Esta macro la podemos guardar en el Personal.xls, de manera que esté disponible cada vez que trabajemos con Excel. También podemos asociarle una combinación de teclas (método abreviado) como Ctrl+Mayúsculas+A, para facilitar su uso.




Categorías: Varios_

Technorati Tags:

sábado, noviembre 25, 2006

Excel – Comentarios ocultos en celdas.

Excel permite incluir comentarios en las celdas. Esta utilidad es muy práctica, en especial cuando queremos dejar indicaciones o explicaciones relacionadas con el contenido de la celda (o de un rango que contiene a la celda).

En ciertas situaciones Excel hace difícil ver el comentario.

Por ejemplo en esta tabla





El pequeño triángulo rojo en el ángulo superior derecho de la celda nos indica que incluye un comentario. Este comentario se hace visible en el momento que apuntamos a la celda con el mouse o la seleccionamos



No todo el contenido del comentario es visible (ver más adelante el cuadro de texto completo).

Una de las formas de solucionar este problema es volver el comentario visible con el menú Mostrar Comentario




y luego cambiar el tamaño del cuadro de texto que contiene el comentario



Luego volvemos a ocultar el comentario y más tarde, cuando seleccionemos la celda, veremos el comentario en un su totalidad.

Sin embargo existe otro problema. Supongamos que queremos que los encabezamientos de las columnas queden fijos. Para eso seleccionamos la fila 2 y aplicamos Inmovilizar Paneles del menú Ventana.
Ahora supongamos que nos movemos a la fila 50 y seleccionamos la celda A1 para ver que dice el comentario. Lo que veremos es esto



El comentario queda oculto!!

Para solucionar este problema usaremos una macro sencilla. En un modulo de macro del editor de Vba ponemos


Sub show_comm()

On Error Resume Next
MsgBox ActiveCell.Comment.Text
On Error GoTo 0

End Sub


Para facilitar el uso de esta macro le hemos asociado la combinación de teclas Shift+Ctrl+M



Ahora podemos seleccionar la celda con el comentario, apretar la combinación de teclas lo que producirá un mensaje en el centro de la pantalla con el contenido del comentario








Categorías: Varios_

Technorati Tags:

domingo, noviembre 19, 2006

Operadores de Excel – Interseccion (Espacio)

Operadores son las herramientas que le permiten a Excel saber que tipo de operación queremos realizar. Por ejemplo, el operador "+" indica la operación suma.

Excel define cuatro tipos de operadores: aritméticos, de comparación, texto y referencia.

Los dos primeros son los más conocidos, como el ya mencionado suma (+) o multiplicación (*) entre los aritméticos y mayor que (>) o menor que (<) entre los de comparación. Existe un único operador de texto, el "&", que nos permite unir cadenas de texto. Los operadores de referencia son los menos conocidos. Incluyen - los dos puntos (":"), el operador de rango que crea una referencia a todas las celdas incluidas entre dos referencias (por ejemplo SUMA(A1:A10) suma todos los valores entre las celdas de referencia, ellas incluidas). - La coma (","), o punto y coma (";") dependiendo de las definiciones del sistema, que es el operador de unión. Este operador combina referencias múltiples en una referencia (por ejemplo SUMA(A1,C1,D1). - El espacio que es el operador de intersección y genera una referencia a celdas comunes a dos rangos. Este último es el menos conocido, y utilizado, de los operadores de Excel. Supongamos esta tabla



La fórmula en la celda A5 es "=B1:B3 A2:C2". La intersección entre ambos rangos, es decir la celda común a ambos, es B2 cuyo valor aparece en la celda A5.

Veamos ahora una aplicación más o menos práctica. Supongamos esta tasas.xlstabla de cotizaciones del peso argentino



Con las funciones INDICE y COINCIDIR podemos construir una tabla de cotizaciones cruzadas



En la celda B9 ponemos la fórmula

=INDICE(cambio,COINCIDIR($A9,monedas,0))/INDICE(cambio,COINCIDIR(B$8,monedas,0))

Que luego copiamos al resto de la tabla. Como pueden ver hemos definidos los distintos rangos como nombres:

cambio =Hoja1!$B$2:$B$5
monedas =Hoja1!$A$2:$A$5

Como se puede ver en la tabla, la relación entre el euro y la libra esterlina aparece en la intersección de los rangos C9:C12 y B11:E11. Es decir, la fórmula

=(C9:C12 B11:E11)

da como resultado 1.4759, la cotización del euro respecto a la libra. El operador de esta fórmula es el espacio entre los dos rangos.

Ahora podemos crear un modelo dinámico que nos ayude a calcular las tasas de cambio entre las distintas monedas. Para ello definimos nombres que contengan los rangos "verticales" y los rangos "horizontales" de cada moneda

Dolar_H =Hoja1!$B$9:$E$9
Dolar_V =Hoja1!$B$9:$B$12
Euro_H =Hoja1!$B$10:$E$10
Euro_V =Hoja1!$C$9:$C$12
Libra_Esterlina_H =Hoja1!$B$11:$E$11
Libra_Esterlina_V =Hoja1!$D$9:$D$12
Real_H =Hoja1!$B$12:$E$12
Real_V =Hoja1!$E$9:$E$12

Creamos esta tabla, donde en las celdas B16 y B17 ponemos una lista desplegable usando Validación de Datos—Lista—monedas






En la celda B18 escribimos esta fórmula:

=INDIRECTO(B16&"_V") INDIRECTO(B17&"_H")

INDIRECTO toma la cadena de texto formada por la moneda escogida a la que le agregamos _V y _H para generar el nombre del rango. Ambas funciones INDIRECTO están separadas por un espacio que funciona como operador de intersección. El resultado es la celda común a los dos rangos definidos por las funciones INDIRECTO.

Ahora podemos agregar una funcionalidad más a nuestro modelo, usando macros de tipo eventos, tal como hicimos en la nota de ayer sobre como ingresar fechas con separadores

.
En este caso queremos que cuando seleccionamos una tasa de cambio en la tabla, esta reciba un fondo de color celeste y los nombres de las monedas (los encabezamientos de la columna y la fila) un fondo de color gris.



Para esto usamos un evento Worksheet_SelectionChange. Abrimos el editor de Vba (Alt+F11). Seleccionamos la Hoja1 (Sheet1) y en el área de código escribimos esta rutina:


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim rngTabCurr As Range


Set rngTabCurr = Range("A8:E12")

If Union(Target, rngTabCurr).Address = rngTabCurr.Address Then
Application.EnableEvents = False

rngTabCurr.Interior.ColorIndex = xlNone

Range(Target.Address).Interior.ColorIndex = 20
Cells(Target.Row, 1).Interior.ColorIndex = 15
Cells(8, Target.Column).Interior.ColorIndex = 15

Application.EnableEvents = True
End If


End Sub


Esta técnica puede ser muy útil en tablas de cierto tamaño.





Categorías: Funciones&Formulas_, Varios_

Technorati Tags: