¿Simplificar con Bucle...?

Buenos días, necesito utilizar un poco de su conocimiento para una "barrera" que me ha aparecido en un proyecto nuevo que realizo. El problema es el siguiente. Necesito que una "rutina" que se tiene que repetir 38 VECES, ver si mediante un bucle se simplifica ya que me veo obligado a hacer varias macros y llamar de una a otra por no caber en un solo procedimiento. Ahora viene el "texto":
Range("C3").Select 'PRIMERO 
    ActiveCell.FormulaR1C1 = "=VLOOKUP(R3C2,CREAHORARIO!R5C2:R60C40,2)" 
    ActiveCell.FormulaR1C1 = _ 
        "=IF(R3C2="""","""",VLOOKUP(R3C2,CREAHORARIO!R5C2:R60C40,2))"   
En el RANGE "C3" tendrá que pasar a RANGE "D3"
El número 2 que aparece al final de las lineas, pasará al número 3. Y así sucesivamente.
Termina con la siguiente:
Range("AN3").Select 'ULTIMO 
    ActiveCell.FormulaR1C1 = "=VLOOKUP(R3C2,CREAHORARIO!R5C2:R60C40,39)" 
    ActiveCell.FormulaR1C1 = _ 
        "=IF(R3C2="""","""",VLOOKUP(R3C2,CREAHORARIO!R5C2:R60C40,39))" 
Agradeciendo de antemano vuestra ayuda. Reciban un cordial y cariñoso saludo desde las ISLAS CANARIAS.

1 respuesta

Respuesta
1
Puedes usar la instrucción de VLookUp de la propiedad WorkSheetsFunction
Empieza a escribir los valores que encuentre buscando el criterio de la celda c3, y cambia de columna al terminar el ciclo...
Sub BuscaVerticalExampleCode()
On Error Resume Next
For i = 3 To 40
Cells(3, i) = Application.WorksheetFunction.VLookup(Cells(3, 2), Sheets("CreaHorario").Range("B5:N45"), i - 1, 0)
Next
End Sub
Saludos y espero esto sea lo que buscas!
??????C:\Users\ALVARO\Pictures\PRUEBA.pngC:\Users\ALVARO\Pictures\PRUEBA.pngMuchas gracias por contestar, pero algo hago mal. Y no me funciona, te aclaro:
En la hoja CREAHORARIO, en al celda B5, tengo la letra A: la celda C5 vacía, la D5 un 1, la celda E5 otro 1, la celda F5 vacía la celda G5 un 1,... etc. hasta la celda AN5.
En la celda B6 la letra tengo la leta B: la celda C6 un 1, la celda D6 otro 1, en la celda E6 vacía, en la celda F6 un 1... etc. hasta la celda AN6
Llegando a la columna.B60, correspondiendo el rango B5:AN60
En otra hoja llamada H.SEMANAL. estan los nombres de los operarios a los cuales yo le asigno una "letra"  ejemplo la A. Al  ejecutar la macro justo en la columna siguiente a la letra A deberá pegar  SI($A$1="";"";BUSCARV($B$3;CREAHORARIO!$B$5:$AN$60;2))
en la celda siguiente a estapegara:
SI($A$1="";"";BUSCARV($B$3;CREAHORARIO!$B$5:$AN$60;3))
Lo que hace es pegar las fórmulas SI Y BUSCAR V y devolverme el valor que yo haya puesto en la hoja CREARHORARIO. Ya sea un 1 ó vacía u otro número.
Si lo que me has mandado realiza lo que te comento. Pues que no lo he puesto bien, o no te facilite toda la información.
Esperando noticias. Te reitero mi agradecimiento. Saludos desde las Islas Canarias.
Ok la instrucción que te envié precisamente cumple esa función.
SI($A$1="";"";BUSCARV($B$3;CREAHORARIO!$B$5:$AN$60;   2  ))
Esta función si no encuentra valor no coloca nada, si encuentra te poone lo que tengas en la columna 2, en el siguiente rango coloca lo que tengas en la columna 3
Si no te funciona mandame el archivo de referencia y con gusto lo reviso y te lo reenvío con la solución...
[email protected]

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas