jueves, septiembre 07, 2006

La función DESREF (OFFSET) de Excel – Una explicación

La función DESREF de Excel (OFFSET en la versión inglesa) es una de esas funciones que causan cierta confusión a los usuarios novicios. Tal vez esta confusión esté relacionada al hecho que DESREF puede referirse tanto a una celda específica como a un rango de celdas. La sintaxis de la función difiere en cada uno de los casos.

En mis notas sobre
actualización automática de datos y sobre manejo de pequeñas bases de datos con Excel, mostraba como usar DESREF para construir rangos dinámicos.

En la más reciente nota sobre
bases de datos de imágenes en Excel mostraba también el otro uso de DESREF, crear una referencia a una única celda.

Tres hechos hay que tener en cuenta cuando queremos usar DESREF:


1 – DESREF puede crear una referencia tanto a una celda única como a un rango de celdas;

2 – La sintaxis en cada caso es distinta;

3 – Como definir el primer argumento de la función, al que llamaremos el "ancla"

La sintaxis de DESREF es




El "ancla" es la celda que es nuestro punto de partida. Por ejemplo, si escribimos esta fórmula: DESREF(A1,2,1), estamos estableciendo una referencia a la celda B3, como pueden ver en este ejemplo



Puesto en palabras, la fórmula dice: empezamos en A1 (el "ancla"), nos movemos 2 filas hacia abajo y una columna a la derecha y así llegamos a B3.

Con la ayuda de la función COINCIDIR y Validación de Datos, podemos construir un modelo dinámico a partir de nuestro ejemplo.
Definimos esta validación de datos en la celda A9




En la celda B9 sustituimos el segundo argumento (Filas) con la función COINCIDIR
=DESREF(A1,COINCIDIR(A9,A2:A6,0),1), para definir el número de filas en función del número de catalogo elegido. De esta manera DESREF nos dará el nombre del producto en forma dinámica.




Como pueden ver, cuando usamos DESREF para referirnos a una celda, omitimos los argumentos "alto" y "ancho".

Cuando usamos DESREF para referirnos a un rango, usamos cero como valor para los argumentos "filas" y "columnas". Por ejemplo, si queremos establecer una referencia a la tabla de productos en el ejemplo (el rango A1:B6) usamos la fórmula: =DESREF(A1,0,0,6,2).

En la nota manejo de pequeñas bases de datos con Excel hay un ejemplo de rango dinámico usando DESREF.


Categorías: Funciones&Formulas_

Technorati Tags: ,

martes, septiembre 05, 2006

Excel cumple 21 años

Excel cumple hoy 21 años, de acuerdo Daily Dose of Excel:

According to Bill Kammermeier’s Today in Computer History desk calendar, Excel was released on this date in 1985 for the Apple Macintosh.


La nota trae algunos enlaces, de los cuales me han resultado interesantes A brief History of Spreadsheets y la página de los creadores de VisiCalc.

No he logrado encontrar artículos en español de un nivel semejante. Así que habrá que leer en inglés.



Categorías: Varios_

Technorati Tags:

Limitar el área de trabajo en Excel – Actualización

El método de limitar el área de trabajo en Excel que proponía en mi entrada del mes de mayo, adolece de un serio defecto. Al guardar el archivo, Excel no conserva los cambios introducidos en el cuadro de propiedades. De manera que al volver a abrir el archivo después de haberlo guardado, el área restringida no existe.

La manera de sobreponerse a este problema es con una pequeña macro. De hecho se trata de un evento. Estas macros, como su nombre sugiere, son activadas cuando algún evento en particular sucede.

En nuestro caso queremos que cada vez que abramos el archivo, Excel establezca el área restringida. Suponiendo que el área sea el rango B3:E10 de la Hoja1, procedemos así:

1 – Abrimos el editor de Visual Basic (Alt+F11 o Herramientas--Macros--Editor Visual Basic)

2 – El la ventanilla VBAProject del archivo, seleccionamos con un clic el objeto ThisWorkbook




3 – Elegimos la opción Workbook. Inmediatamente debajo de Private Sub Workbook_Open(), escribimos Sheets(1).ScrollArea = "B3:E10"



4 - Volvemos al cuaderno Excel y lo guardamos.

A partir de este momento, cada vez que abrimos el cuaderno (Workbook_Open) Excel define el área de trabajo de la Hoja1 con el rango B3:E10.


Categorías: Varios_

Technorati Tags: ,