Macro con funcion dias.lab funcionando con rangos variables

Sobre una hoja que siempre tendrá la misma estructura pero filas diferentes. Deseo realizar varias operaciones sobre los datos de cada línea en función de si un valor concreto supera cierto limite. Si es así debo saber si la fecha en cuestión es laborable, uso la función días.lab pero al meter la función en macro no se como hacer que lo siguiente funcione:

NetworkDays(FECHA, FECHA, VACIONES_ANO)

Donde fecha seria una variable que se define automáticamente con formato fecha y VACACIONES_ANO es un rango fijo en otra hoja con las fiestas nacionales que se define en función del año detectado.

He probado a escribir la fórmula con un:

ActiveCell.FormulaR1C1 = _
        "=+NETWORKDAYS(RC[-7],RC[-7],Periodos!R[28]C[1]:R[35]C[1])"

pero soy incapaz de sustituir los valores relativos por variables.

Hasta ahora tengo esto funcionando:

Sub EXCESO_POTENCIA()
Sheets("hoja inicio").Select
'SE DETECTA EL VALOR MINIMO DE POTENCIA CONTRATADA
Range("B4") = WorksheetFunction.Min(Range("B2:G2"))
Range("b4").Select
'SE GUARDA EL VALOR DE POTENCIA MINIMA
pmin = ActiveCell.Value
'SE DEFINE EL RANGO DE TRABAJO
Sheets("HOJA DATOS").Select
Range("h2").Select
Range(Selection, Selection.End(xlDown)).Select
'SE DETECTA SI HAY QUE TRABAJAR CON CADA FILA DE LA SELECCION
For Each celda In Selection
        If celda.Value > pmin Then
        celda.Select
        ActiveCell.Offset(0, -3).Select
        'se detecta el año de la fecha y se define el rango de vacaciones escrito en un rango fijo de otra hoja
        If ActiveCell.Value = 2015 Then
        Sheets("Periodos").Select
        Range("I33:I40").Select
        VACANO = Selection.Address
        End If
        If ActiveCell.Value = 2016 Then
        Sheets("Periodos").Select
        Range("j33:j40").Select

'NO ESTOY SEGURO DE ESTA DEFINICION DE VARIABLE
        VACANO = "PERIODOS!" & Selection.Address
        'COMIENZA LA DETECCION DE LA FECHA COMO LABORABLE
        Sheets("HOJA DATOS").Select
        celda.Select
            ActiveCell.Offset(0, -6).Select
            FECHA = ActiveCell.Value
            'seleccionar la casilla donde se va a meter la formula

            ActiveCell.Offset(0, 7).Select
            ActiveCell.FormulaR1C1 = _
        "=+NETWORKDAYS(RC[-7],RC[-7],VACANO)"
        ActiveCell.Selection = WorksheetFunction.NetworkDays(FECHA, FECHA, VACANO)
        If ActiveCell.Value = 0 Then
        End If
        End If
        If ActiveCell.Value = 2017 Then
        Sheets("Periodos").Select
        Range("k33:k41").Select
        VACANO = Selection.Address
        End If
        End If
    Next celda
End Sub

1 Respuesta

Respuesta
1

Parece que no se puede introducir variables en esta fórmula pero si que se pueden bloquear el rango de fechas de vacaciones y dado que la hoja de datos sobre la que trabajo es siempre la misma, trabajando con el offset he conseguido realizar la función que necesitaba.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas