lunes, enero 29, 2007

Usos de Autofiltro – Copiar a rangos no continuos

Hace unos días atrás, Rob van Gelder plantea el siguiente problema en Daily Dose of Excel:

tenemos una tabla con líneas en blanco que separan distintos grupos de datos. Queremos agregar una columna que contiene una fórmula, pero al copiar la fórmula a todo el rango se producen resultado "error". Esta imagen ejemplifica el problema:



La solución más inmediata es seleccionar las celdas con resultados erróneos y borrar el contenido.
Pero supongamos que se trata de una tabla con 1000 filas. Evidentemente la tarea llevaría muchísimo tiempo (1).
La misión es crear una selección lo continua de celdas en una columna dónde copiaríamos la fórmula.
Rob van Gelder propone una macro como solución. Nosotros mostraremo como hacer esto con Autofiltro.

Partimos de la tabla original, sin fórmulas en la columna E. Si aplicamos Autofiltro sin más trámite, Excel mostrará solamente los valores hasta la primer fila en blanco.
Para "obligar" a Excel a considerar toda la tabla, empezamos por seleccionar todo el rango de las columnas A hasta E y luego aplicamos Autofiltro



Ahora filtramos la tabla de acuerdo a la columna B, "no vacías"



Excel oculta las filas vacías



Seleccionamos el rango relevante en la columna E y aplicamos la fórmula



Todo lo que nos queda por hacer es anular el autofiltro



Obtenemos el mismo resultado, sin aplicar macros.

(1) En realidad podríamos seleccionar de una vez todas las celdas con resultado #DIV/0! usando Ir A --Especial, como ya hemos mostrado, y borrar el contenido en una sola operación. Si usamos alguna fórmula que no divida por una celda vacía no recibiremos resultado #DIV/0 y el método mostrado en esta nota sería el ideal.


Technorati Tags:

5 comentarios:

  1. También seria muy fácil si dentro de la misma formula se usara una condicionante que adelante la división entre cero y que no evalué (Función SI, en ingles IF)

    Luis Luna

    ResponderBorrar
  2. Este comentario ha sido eliminado por el autor.

    ResponderBorrar
  3. No, supongo que no hay celdas vacías en la columna. Ten en cuenta que una celda que contiene una fórmula que da un resultado que parece vacía (como =SI(A1=1;10;" ")) o una celda cuyo contenido ha sido borrado con la barra de espacios, no está vacía.

    ResponderBorrar
  4. Buen dia Don Jorge,
    Ante todo me gustaria felicitarlo por su versatil blog, me parece util y fascinante.
    Le escribo para hacerle una consulta relacionada con Autofiltro.
    Actualmente tengo un archivo con dos tablas en dos hojas distintas (llamemoslas tabla A y tabla B). La cuestion es que de la tabla B deseo copiar una serie de valores para pegarlos en la Tabla A (a la cual se le aplico un autofiltro)pero me es totalmente imposible. He tomado la precaucion de que el numero de filas y columnas copiadas de la tabla B es igual igual al numero de filas y columnas filtradas donde deseo realizar esta copia (tabla A), sin embargo no me es posible realizar esta operacion. EL mismo problema se me presenta cuando deseo copiar unas serie de valores de una tabla filtrada a otra tabla donde estan otros valores filtrados (es decir copiar una serie de valores de una tabla con autofiltro para pegarlos en otra tabla con autofiltro). Le agradeceria mucho su recomendacion en este aspecto, en caso de necesitar una explicacion mas detallada del problema o el archivo por favor indiqueme su direccion de correo electronica para poder enviarselo.

    Muchas gracias por su atencion

    Saludos

    ResponderBorrar
  5. Joaquín
    cuando una lista está filtrada, los rango no son continuos y esa es la cause de tu problema. Una solución, si es que entiendo tu planteo, es transferir los valores a las eldas correspondientes usando alguna función de búsqueda como BUSCARV.

    ResponderBorrar

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