Rutina vba

Hola Fejoal, muy buena tu colaboración ayudándonos a resolver temillas en vba. Necesito hacer una macro que me extraiga ciertos valores de la cuarta columna de una tabla de cuatro columnas e indeterminadas filas, a partir de unas condiciones que se han de dar en varias celdas de cada fila, estos valores tienen que copiarse en otra tabla y añadiendo en su línea dos símbolos según las condiciones cumplidas. Puedes mandarme un boceto de cómo sería
Un saludo

1 respuesta

Respuesta
1
Así como lo planteas, resulta casi imposible imaginar qué estás buscando o intentar el diseño de una macro.
Para el desarrollo de una macro es fundamental entender qué condiciones se deben cumplir. Sería bueno, también, que menciones a qué símbolos te refieres
Más aún, hasta me pregunto si realmente necesitas una macro.
Por los datos proporcionados, diría que MS Excel cuenta con una herramienta interna que resuelve el problema sin necesidad de escribir una sola linea de VBA. Esta función se llama filtros avanzados.
La lógica de los filtros avanzados es similar a la de los automáticos.
La diferencia está en la utilización de celdas para ingresar Criterios (las condiciones que mencionas) y la posibilidad de generar una base nueva en otro sector de la misma hoja. Desde luego, tal base puede ser, simplemente los datos coincidentes de la cuarta columna.
Asegúrate de que tienes títulos para cada columna en la tabla, y estos deben ser distintos entre sí. (= no duplicar títulos).
En un rango libre ingresa los mismos títulos de las columnas que servirán de criterio para extraer los valores y a partir de la celda inmediata inferior los valores-criterio (condiciones) a extraer de la base. Estas celdas serán el campo de criterio. En la lógica de los filtros avanzados un rango de criterios de más de dos celdas funciona como un o lógico. Es decir que al momento de extraer, mostrará todos aquellos valores estén incluidos en este rango.
Si, En cambio el rango incluyera varias columnas y sólo dos líneas de criterio, funcionará como el Y lógico, es decir que extraerá sólo aquellos que cumplan *todas* las condiciones que el rango de criterios comprenda.
Donde quieres la nueva tabla, ingresa el encabezado de la columna que te interese extraer (pueden ser todos los de la base o sólo algunos o simplemente una columna). Estos deben estar EN LA MISMA HOJA donde está la base de datos. (Luego puedes copiarla y llevarla a otra hoja)
Ahora selecciona cualquier celda dentro de la base de datos. Escoge "Filtro" del menú de "Datos" y, luego, "Filtro Avanzado..." del submenú que aparece. En el cuadro de diálogo, el campo de rango de Lista debe rellenarse ya con el rango que contiene tus datos de la base. En el campo de rango de Criterio, indica el rango de n celdas de alto que creaste anteriormente.
Marca la opción "Copiar a otro lugar"
Luego, en el rango "Copiar a:" marca las celdas de títulos donde se generará la nueva tabla. Finalmente, como deseas sólo uno de cada uno, marca la opción "sólo registros únicos". Si la dejas en blanco para que extraiga todos los que haya en la base y estén incluidos en el rango de criterios.
Presiona "Aceptar" y tendrás la base solicitada.
Te sugiero que lo intentes, de todos modos, rafa, si esto no fuera lo que pedías, preguntame de nuevo, ampliando un poco más la explicción de tu situación.
Un abrazo!
Fernando

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas