Condicionales.

Hola,
Quiero hacer lo siguiente.
Introducir datos en una hoja de calculo. Estos datos quiero que se vuelquen en otra pestaña de la misma hoja de calculo en función de si son de tipo A o de tipo B.
Es decir, tendría 3 pestañas, una donde introduzco los datos de tipo a y b, la segunda pestaña donde se deberían copiar solo los de tipo A, y la tercera hoja, donde se deberían pegar los de tipo B.
El problema es que si lo hago con condicionales, en la segunda y tercera hojas, me quedan filas en blanco y quiero que éstas no queden.
¿Sabes si hay alguna fórmula o macro que me elimine las filas enteras, (no borrar datos, sino eliminar filas)?
He utilizado una fórmulas tipo
=SUMAR.SI(A!$K100;"=B";A!A100)
=SUMAR.SI(A!$K100;"=C";A!A100)
Gracias

1 Respuesta

Respuesta
1
Estuviste terriblemente cerca de una solución.
Acabo de diseñar una solución basada fundmentalmente en las fórmulas CONTAR. SI (en la hoja de carga) y BUSCARV combinada con COLUMNA (en las hojas de destino)
Probablemente, sería necesario desarrollar una rutina en Visual Basic for Applications dentro del entorno del programa.
Pero me inclino más por una serie de fórmulas que lo hagan automáticamente apoyándose en una simple columna auxiliar.
Vamos por partes:
En la hoja nº1 inserta una columna a la izquierda de la tabla cuyos conceptos quieres clasificar. Ahora, tu columna "A" pasará a ser la "B" y en "A" deberás introducir una fórmula de este tipo:
=CONTAR.SI(B$4:B4;B4)&B4
[Considera si sueles usar comas o punto y coma para separar argumentos de las funciones. Yo usé ";"]
Asígnale el formato deseado y, luego, copia esta celda y pégala en las restantes de esta misma columna, una por cada una de las referencias a clasificar en las otras hojas.
Esta fórmula asume que tal rango comienza en la celda B4.
Nota que dejo *fija* la fila cuatro, utilizando el signo $ de forma tal que la función CONTAR. SI() considere un rango desde la fila inicial hasta la fila donde está la fórmula.
Además la fórmula agrega al final la referencia de la fila donde está copiada.
Deberías obtener algo parecido a esto:
1A
2A
1B
3A
4A
3B
5A
2B
4B
5B
Es importante que esta sea la primera columna a la izquierdda del rango, pues la función BUSCARV() la utilizará para encontrar los datos que necesitas.
En la hoja 2, elije una celda libre para ingresar la referencia que deseas que se traiga a esa hoja (en tu ejemplo, aquellas filas que tengan una "A"), por ejemplo en la celda "B2".
En la columna A, coloca una serie de números del 1 en adelante, teniendo en cuenta la cantidad máxima de lineas que pueden ingresar por cada referencia en la hoja 1.
Bien, en la celda "B4", ingresa una fórmula como esta:
BUSCARV($A4&$B$2;Hoja1!$A$4:$H$25;COLUMNA()+1;0)
El primer argumento de la fórmula arma una combinación del número de orden según la fila (A4) y la referencia a buscar ($B$2). Este es el dato a buscar.
El segundo argumento es el rango de búsqueda, es decir la tabla de referencias de la hoja1.
El tercer argumenteo es el número de columna que deberá mostrar en esta casilla.
Aquí uso la función COLUMNA() que me indica cual es el número de columna actual y me servirá de referencia para indicar la columna de la base que quiero mostrar en cada celda de la hoja 2.
Finalmente el cuarto argumento fuerza a que la coincidencia sea exacta.
Si no lo fuera -porque el número de orden o la referencia no existen- ésta fórmula devolverá #N/A!.
En caso de que no quieras ver este mensaje, puedes usar este condicional que primero evalúa si el resultado será #N/A, en cuyo caso no mostrará nada, o el valor correspondiente.
La ventaja de una fórmula diseñada dee esta manera es que sólo bastará que copies la celda donde está y la pegues tantas celdas a la derecha como campos tengas en la base original y tantas filas hacia abajo como números de orden hayas colocado en la hoja de clasificación.
Aún más, bastará que hagas una copia de la hoja -una vez colocadas las fórmulas en su lugar-y cambiando la referencia en la celda B2 buscará los datos correspondientes para esa nueva referencia.
Una utilidad adicional de esta solución es que, cualquier cambio o agregado en la base original, se verá reflejado automáticamente en la hoja que le correesponde.
---
Fiuuu!, he tratado de ser lo más claro posible en esta explicación pero entenderás que lo que solicitas no es sencillo.
El procedimiento parece complicado, pero no lo es tanto. Sin embargo dispongo de un archivo de ejemplo que te mandaré con gusto. Si lo quieres, simplemente escríbeme a:
Fejoal(eenn)hotmail.com
Para enviarlo, reemplaza "(eenn)" con @ en la dirección que te dí. Es para evitar a los programas que recolectan direcciones de e-mail (ya no saben qué inventar...)
Un abrazo!
Fernando
pd: Disculpa la demora pero habrás notado que no fue una pregunta fácil... ;)
aclarando qué entendí mal o qué faltó.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas