> Como puedo hacer una macro para imprimir, pero que me discrimine celdas ocupadas o vacias y asi determinar el rango a imprimir.
> Por ejemplo, si C52="" (o si C10<>""), imprimir el rango A1:G41; si ademas esta ocupada la celda c52
> entonces el rango a imprimir sera A1:G83, etc.
> En resumen, que imprima solo las hojas en que existan datos en la columna C y dentro de los rangos especificados.
> Ademas, esta macro, me gustaria que fuera "dentro y antes" que otra de forma que junto con ordenar la impresion
> se ejecute esta segunda macro, la que se asignaria a un boton de control que podria denominarse "Imprimir y Guardar"...
a) cuando estableces un rango como el area de impresion (cualquiera)...
excel genera un nombre (p.e. �rea_de_impresion o... Print_area -si en ingles-)
b) dicho nombre (que en realidad es una referencia al rango que se imprime) es tambien factible de personalizar
(p.e. podrias definir un rango dinamico)
c) ve a (menu) insertar / nombre / definir...
selecciona el nombre apropiado y... CAMBIA sus referencias a la siguiente formula...
bueno... aqui solo falta saber cuales son (TODAS) las condiciones/caracteristicas/o similares...
(que de momento solo conoces tu...) para poder decirle cual seria el area de impresion automatica
si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.
"Héctor Miguel" escribió:
> hola, Jorge !
>
> > Como puedo hacer una macro para imprimir, pero que me discrimine celdas ocupadas o vacias y asi determinar el rango a imprimir.
> > Por ejemplo, si C52="" (o si C10<>""), imprimir el rango A1:G41; si ademas esta ocupada la celda c52
> > entonces el rango a imprimir sera A1:G83, etc.
> > En resumen, que imprima solo las hojas en que existan datos en la columna C y dentro de los rangos especificados.
> > Ademas, esta macro, me gustaria que fuera "dentro y antes" que otra de forma que junto con ordenar la impresion
> > se ejecute esta segunda macro, la que se asignaria a un boton de control que podria denominarse "Imprimir y Guardar"...
>
> a) cuando estableces un rango como el area de impresion (cualquiera)...
> excel genera un nombre (p.e. Área_de_impresion o... Print_area -si en ingles-)
> ... no encuentro en (menu) Insertar, ...Nombre
> ya que solo aparece Tablas, Ilustraciones, Graficos, Vinculos y Texto (Excel 2007).
> O es en el cuadro de nombres, antes de la linea de formulas? ...
xl-2007, desde la cinta de opciones: (ficha) formulas / (grupo) nombres definidos / (boton) asignar nombre a un rango
saludos,
hector.
__ OP __
"Héctor Miguel" escribió:
> hola, Jorge !
>
> > ... no encuentro en (menu) Insertar, ...Nombre
> > ya que solo aparece Tablas, Ilustraciones, Graficos, Vinculos y Texto (Excel 2007).
> > O es en el cuadro de nombres, antes de la linea de formulas? ...
>
> xl-2007, desde la cinta de opciones: (ficha) formulas / (grupo) nombres definidos / (boton) asignar nombre a un rango
>
> saludos,
> hector.
>
> __ OP __
> >>> Como puedo hacer una macro para imprimir, pero que me discrimine celdas ocupadas o vacias y asi determinar el rango a imprimir.
> >>> Por ejemplo, si C52="" (o si C10<>""), imprimir el rango A1:G41; si ademas esta ocupada la celda c52
> >>> entonces el rango a imprimir sera A1:G83, etc.
> >>> En resumen, que imprima solo las hojas en que existan datos en la columna C y dentro de los rangos especificados.
> >>> Ademas, esta macro, me gustaria que fuera "dentro y antes" que otra de forma que junto con ordenar la impresion
> >>> se ejecute esta segunda macro, la que se asignaria a un boton de control que podria denominarse "Imprimir y Guardar"...
> >>
> >> a) cuando estableces un rango como el area de impresion (cualquiera)...
> >> excel genera un nombre (p.e. Ã rea_de_impresion o... Print_area -si en ingles-)
__ 1 __
> Defini los siguientes nombres Hoja_1 hasta Hoja_8, con los siguientes rangos:
> a1:g42;a43:g84;a85:g126;a127:g168;a169:g210:a211:g252;a253:g294 y a295:g336 (cada 42 filas).
> La(s) condicion(es) serian
> si c10<>"", entonces imprimir Hoja_1
> si c10 y c52<>"", entonces imprimir Hoja_1 y Hoja_2
> si c10, c52 y c94 <>"", entonces imprimir Hoja_1, Hoja_2 y Hoja_3, etc
> (es decir, c+42, a partir de c10, es la que determina el rango aimprimir).-
1) que una celda sea <>"" podria significar muchas cosas (p.e.)
- es una celda vacia ? <= efectivamente vacia ???
- tiene alguna formula del tipo: =si(a=b,c,"") ???
- si <>"" que contiene (numeros, textos, ...) ???
- hay algun "patron" en el contenido (si <>"") de esas celdas (p.e. capitulo x, ...) ???
=> podrias dar respuesta a las (re)preguntas anteriores ?
__ 2 __
> Me gustaria saber algo mas de los rangos dinamicos, que supongo son los que se modifican o varian.
> La ayuda de Excel se refiere a tablas y graficos dinamicos,
> algun lugar en la red donde aprender lo basico de ese tema?...
2) prueba consultando las siguientes conversaciones: -> http://tinyurl.com/klatwb
y/o visitando la siguiente pagina: -> http://www.contextures.com/xlPivot01.html#Dynamic
luego consulta la ayuda en linea {F1} por funciones como: desref(..., indice(..., coincidir(..., etc.
saludos,
hector.
"Héctor Miguel" escribió:
> ... las celdas no estan <>, ya que contienen reglas de validacion del tipo =Y(C10<>"";E11<>"#N/A")
> y en ellas el formato esta definido como numero, porque ingresare, en su momento, numeros.
1) una cosa es el formato condicional, y otra (muy distinta) es EL CONTENIDO de las celdas
2) en cuanto al contenido de las celdas (C10 + cada 42 filas mas...)
a) estaran EFECTIVAMENTE vacias ? (hasta que ingreses algun numero ?)
b) o tienen formulas del tipo =si(a=b;c;"") ?????
saludos,
hector.
__ previos __
"Héctor Miguel" escribió:
> Las celdas estaran efectivamente vacias hasta que ingrese un texto
> (ya que lo ingreso sin separador de miles, pero siempre seran digitos y no letras) ...
prueba con el siguiente procedimiento:
OJO: estoy asumiendo que puedes utilizar las celdas del rango [A1:A10]
si no es asi, utiliza otro rango y la ultima celda sera la referencia para (re)definir el area de impresion
1) utiliza las siguientes formulas en las celdas indicadas:
[A1] =desref(c$10,(fila()-1)*42,)
=> copiar hasta [A9]
[A10] =(coincidir(0,a1:a9,0)-1)*42
2) crea/define/... un area de impresion (cualquiera, no importa en este momento)
3) (re)define ese nombre (�rea_de_impresion o como quede)
aplicando la siguiente formula en el cuadro de edicion: "se refiere a:"
=desref($a$1:$g$1,,,$a$10,)
solo cambia el separador de argumentos (mi sistema usa a la coma ',' NO al punto y coma ';' :D)
saludos,
hector.
"Héctor Miguel" escribió:
> hola, Jorge !
>
> > Las celdas estaran efectivamente vacias hasta que ingrese un texto
> > (ya que lo ingreso sin separador de miles, pero siempre seran digitos y no letras) ...
>
> prueba con el siguiente procedimiento:
> OJO: estoy asumiendo que puedes utilizar las celdas del rango [A1:A10]
> si no es asi, utiliza otro rango y la ultima celda sera la referencia para (re)definir el area de impresion
>
> 1) utiliza las siguientes formulas en las celdas indicadas:
> [A1] =desref(c$10,(fila()-1)*42,)
> => copiar hasta [A9]
> [A10] =(coincidir(0,a1:a9,0)-1)*42
>
> 2) crea/define/... un area de impresion (cualquiera, no importa en este momento)
>
> 3) (re)define ese nombre (Área_de_impresion o como quede)
> ... Redefini el nombre Area_de_Impresion copiando =desref($a$1:$g$1;;;$a$10;)
> modifique las tres comas (,) por puntos y comas (;) y la ultima coma idem.
> Cambio el nombre a esnumero (lo que imagino no tiene ninguna importancia, ya que le puedo dar otro)
> pero el problema es que me arroja una referencia circular. Como lo soluciono? ...
- como esta eso de "cambio el nombre a es numero"... (???)
a) te refieres a que "agregaste" el nombre (nuevo) "esnumero" a los nombre existentes en el libro ?
b) o realmente REdefiniste el nombre "area_de_impresion" (???)
la referencia circuar es cuando aplicas formulas/funciones/... con referencias circulares EN las celdas de la hojo
(no cuando se trata de nombres, al menos, no que me haya tocado "sufrir")
saludos,
hector.
__ OP __
"Héctor Miguel" escribió:
> hola, Jorge !
>
> > ... Redefini el nombre Area_de_Impresion copiando =desref($a$1:$g$1;;;$a$10;)
> > modifique las tres comas (,) por puntos y comas (;) y la ultima coma idem.
> > Cambio el nombre a esnumero (lo que imagino no tiene ninguna importancia, ya que le puedo dar otro)
> > pero el problema es que me arroja una referencia circular. Como lo soluciono? ...
>
> - como esta eso de "cambio el nombre a es numero"... (???)
> a) te refieres a que "agregaste" el nombre (nuevo) "esnumero" a los nombre existentes en el libro ?
> b) o realmente REdefiniste el nombre "area_de_impresion" (???)
>
> la referencia circuar es cuando aplicas formulas/funciones/... con referencias circulares EN las celdas de la hojo
> (no cuando se trata de nombres, al menos, no que me haya tocado "sufrir")
>
> saludos,
> hector.
>
> __ OP __
> >>> Las celdas estaran efectivamente vacias hasta que ingrese un texto
> >>> (ya que lo ingreso sin separador de miles, pero siempre seran digitos y no letras) ...
> >>
> >> prueba con el siguiente procedimiento:
> >> OJO: estoy asumiendo que puedes utilizar las celdas del rango [A1:A10]
> >> si no es asi, utiliza otro rango y la ultima celda sera la referencia para (re)definir el area de impresion
> >>
> >> 1) utiliza las siguientes formulas en las celdas indicadas:
> >> [A1] =desref(c$10,(fila()-1)*42,)
> >> => copiar hasta [A9]
> >> [A10] =(coincidir(0,a1:a9,0)-1)*42
> >>
> >> 2) crea/define/... un area de impresion (cualquiera, no importa en este momento)
> >>
> >> 3) (re)define ese nombre (Ã rea_de_impresion o como quede)
> Lo que hice fue lo siguiente: en A1 DESREF(C$10;(FILA()-1)*42;), la que copie exactamente igual hasta A9
> en A10 puse =(COINCIDIR(0;A1:A9;0)-1*42) (Excel corrigio el parentesis de cierre)
=> esta formula no esta bien, compara con la formula de la propuesta original:
=> la que corrigio: =(COINCIDIR(0;A1:A9;0)-1*42)
=> la que funciona: =(COINCIDIR(0;A1:A9;0)-1)*42
nota: excel "corrigio" el parentesis de cierre (probablemente) por que NO lo pusiste tu (?) y no podia adivinar con exactitud (?)
> luego cree un bloque o rango cualquiera (a1:g42)
> luego fui a Diseno de Pagina, Area de Impresion, Establecer Area de Impresion
> y en el cuadro de Nombre aparece Area_de_Impresion y a la derecha de dicho cuadro
> barra de formulas (fx) copie =DESREF($A$1:$G$1;$A$10;).
=> este procedimiento tampoco es el sugerido (re-definir el nombre) en la propuesta original...
=> donde debes "entrar" la formula, NO es en la "barra de formulas" si no...
=> en el cuadro de referencias desde (menu:) insertar / nombre / definir...
-> seleccionas el nombre (area_de_impresion)
-> la formula es en: "se refiere a:"
si cualquier duda... comentas ?
saludos,
hector.
>> __ OP __
>>>>> Las celdas estaran efectivamente vacias hasta que ingrese un texto
>>>>> (ya que lo ingreso sin separador de miles, pero siempre seran digitos y no letras) ...
>>>>
>>>> prueba con el siguiente procedimiento:
>>>> OJO: estoy asumiendo que puedes utilizar las celdas del rango [A1:A10]
>>>> si no es asi, utiliza otro rango y la ultima celda sera la referencia para (re)definir el area de impresion
>>>>
>>>> 1) utiliza las siguientes formulas en las celdas indicadas:
>>>> [A1] =desref(c$10,(fila()-1)*42,)
>>>> => copiar hasta [A9]
>>>> [A10] =(coincidir(0,a1:a9,0)-1)*42
>>>>
>>>> 2) crea/define/... un area de impresion (cualquiera, no importa en este momento)
>>>>
>>>> 3) (re)define ese nombre (�rea_de_impresion o como quede)