Macro para buscar datos y completar otra hoja según condiciones

Estoy necesitando ayuda para encontrar la manera de realizar lo siguiente:

- En base a una columna de nombres (actualizable) que estará en C7:C50 de la hoja "Actualizacion", primero necesito encontrar alguna manera de seleccionar los nombres de ese rango.

-Luego, una macro que, junto con los nombres seleccionados del rango anterior y un dato que aparece en la celda C4 de la misma hoja, busque estas dos condiciones en las filas del rango A1:F10000 de la hoja "Hoja1" (el nombre en la columna A y el otro dato en la columna D).

- Si encuentra una fila donde se cumplan las condiciones, debe escribir "Si" en la columna E de la misma fila y una fecha en la columna F (la misma estará en la celda E4 de la hoja "Actualizacion").

Vale aclarar que la macro debe buscar cada nombre por separado, es decir, si se seleccionan 10 nombres, debe repetirse el proceso 10 veces para encontrar las coincidencias.

1 respuesta

Respuesta
1

Creo que utilizando fórmulas matriciales ya podrías resolver tu problema. ¿Puedes poner unas imágenes para poder ver mejor que necesitas?

Hola Victor Rodriguez, gracias por tu respuesta.

He intentado con fórmulas matriciales, el problema es que debo encontrar alguna manera de elegir qué datos completar o no. La finalidad del archivo es administrar capacitaciones y la macro que estaría necesitando es para, con un click, marcar como completas ciertas capacitaciones para varias personas. He intentado con checkboxes (para seleccionar los nombres de quienes han hecho la capacitación) pero no dio resultado. Estoy evaluando distintas alternativas pero ninguna pareciera funcionar.

La idea es que, en base a los nombres que aparezcan en la columna C, seleccionar algunos y con solo apretar un botón, marcar como completa (y en otra hoja) la capacitación que figure en la celda C4 junto con la fecha de la celda E4.

Gracias!

"Si encuentra una fila donde se cumplan las condiciones, debe escribir "Si" en la columna E de la misma fila y una fecha en la columna F (la misma estará en la celda E4 de la hoja "Actualizacion")."

¿Y si no encuentra la fila?

El tema es que siempre encontrará la fila, dado que los nombres que figuren en el rango C7:C50 de la hoja "Actualizacion" provienen de la hoja "Hoja1", por lo que siempre encontrará datos.

De vuelta, agradezco tu predisposición para ayudarme

Tratándose de un rango de 10000 celda, esto es lo mejor que se me ocurre:

En E1 de Hoja1 pones la siguiente fórmula y arrastras

=SI.ERROR(SI(D1<>Actualizacion!$C$4;"";SI(BUSCARV(A1;Actualizacion!$C$7:$C$50;1;FALSO)=A1;"SI";""));"")

Esta fórmula lo que hará es poner "SI" en la celda E en el caso de que los dos valores coincidan con los de la hoja Actualización

Cuando quieras fijar los datos (antes de actualizar la lista de la hoja Actualización) ejecutas la macro

Sub condiciones()
Dim rango As Range
Set rango = Sheets("Hoja1").Range("E1:E10000")
fecha = Sheets("Actualizacion").[E4]
For Each celda In rango
If celda.Value = "SI" Then
celda.Value = "SI"
celda.Offset(0, 1).Value = fecha
End If
Next
End Sub

Que lo que hará será cambiar el resultado "SI" de la fórmula por texto "SI" y poner la fecha al lado

Lo que no has dicho es si se puede repetir los dos mismos resultados en listas diferentes (espero que no) porque ya no existirá fórmula en la línea

Te dejo el libro que he usado de prueba en dropbox

https://www.dropbox.com/s/s9ftt8yyrl15bwa/condiciones.xlsm?dl=0 

¡Gracias! Funciona a la perfección!!! 

Buenas!

He descubierto que necesito agregarle otra condicion a la macro que me has facilitado. El problema que le he encontrado es que modifica todas las fechas dado que la única condición es que la celda diga "Si". Cómo podría agregarle una condición adicional para que copie y pegue la fecha no solamente cuando diga "Si" la columna E sino que en la columna F no haya ningún valor? La idea sería mantener las fechas ya copiadas anteriormente.

Gracias!

Pon tus nuevas cuestiones en un nuevo hilo para que cualquier experto pueda ayudarte, haciendo referencia a este post

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas