viernes, octubre 22, 2010

Definir el rango a imprimir según valor en celda

El lector Boris me consulta:

En una celda con datos tipo lista tengo 2 opciones: Factura, Boleta. ¿Es posible hacer una formula con la función SI, para definir el área de impresión, dependiendo de esas dos opciones?

Una vez más aclaremos que las funciones sólo saben hacer cálculos; no podemos hacer cambios estructurales en la hoja o el cuaderno con funciones.

Sin embargo sí podemos definir el rango del área de impresión basándonos en el valor de una celda. Lo haremos usando la técnica que mostré en la nota sobre área de impresión dinámica en Excel sin macros.

El truco consiste en usar nombres. Supongamos que definimos dos rango a imprimir: Area_1 y Area_2



Lo que hemos llamado Area_1 o Area_2 en el ejemplo puede ser factura y recibo o escenario 1 y escenario 2, etc.

Definimos cada uno de los rangos con nombres



El próximo paso es definir una lista desplegable sencilla con validación de datos y ponerla en una celda donde el usuario pueda elegir el rango a imprimir



El último paso es modificar la definición del nombre Area_de_impresion . Esto lo haremos con el asistente de nombres. En la definición del nombre predefinido "Area_de_impresión" ponemos la fórmula

=INDIRECTO(Hoja1!$C$2)



Si al abrir el Administrador de nombres "Área _de_impresión" no aparece, podemos crearlo definiendo un rango arbitrario en "Área de impresión" del menú Configurar página.

La fórmula =INDIRECTO(Hoja1!$C$2) traduce el texto que aparece en la celda C2, donde hemos puesto la lista desplegable, por el rango definido por el nombre que coincide con el valor de la celda.

Este video muestra el funcionamiento

8 comentarios:

  1. Hola Jorge,
    Dos preguntas:
    1- Al leer este post estuve ojeando los enlaces que pusiste a los otros similares; en uno de ellos ponías la función INDIRECTO(CONCATENAR(A1;":";C5), o algo similar; ¿no es posible hacer esa función sin meter anidada concatenar, es decir, INDIRECTO(A1;":";C5)??
    2- Al meter en en Administrador de nombres la nueva definición del área de impresión con la función INDIRECTO, hay que pulsar Ctrl Shitf Enter, lo digo por que va a hacer referencia aun rango.???

    Un Saludo Jorge.

    ResponderBorrar
  2. Hola,
    1 - no, no es posible. INDIRECTO funciona con texto no con rangos. Por eso tenemos que usar CONCATENAR, que da como resultado un texto.
    2 - No, no todo rango implica una fórmula matricial.

    ResponderBorrar
  3. En el Excel 2010? puede ser que no deje cambiar los valores de la variable "Área de Impresión" como hacer en Excel 2010?

    ResponderBorrar
  4. Ricardo,

    funciona de la misma manera. Al definir un área de impresión, Excel crea el nombre que puede luego ser modificado manualmente.

    ResponderBorrar
  5. Es posible imprimir distintas columnas como areas de impresion, por ejemplo columnas a b d e como area 1 y columnas c f h como area 2? con excel 2010 ? no me funciona?

    ResponderBorrar
  6. Supongo que te refieres a imprimir áreas no contiguas en la misma hoja. Si es el caso, no se puede. Se puede definir un área de impresión no ocntigua, pero cada parte se imprimirá en una hoja distinta.

    ResponderBorrar
  7. No se porque, pero el excel me modifica el nombre del Área de Impresión. Al usar la función INDIRECTO sobre una celda que contiene el texto del area que quiero imprimir (ej: A5:B7), funciona bien, ocurre que a veces lo abro y me pide actualizar el libro de excel (Porque uso celdas de otros archivos de Excel) y a veces cuando hace eso, deja de aplicar la formula INDIRECTO, y me imprime una hoja. Alguna idea?

    P.D.: El archivo lo leo de un servidor.

    ResponderBorrar
  8. Cuando uisás referencias de cuadernos remotos, como parece ser tu caso, la función INDIRECTO necesita que el cuaderno de referencia está abieto. Fijate en esta nota.

    ResponderBorrar

Nota: sólo los miembros de este blog pueden publicar comentarios.