Tirando todos los viernes (Microsoft Excel)
Al desarrollar una hoja de trabajo para realizar un seguimiento de la información comercial, es posible que necesite determinar todos los viernes en un rango de fechas. La mejor manera de hacer esto depende de los datos en su hoja de trabajo y la forma en que desea que se muestren los resultados.
Si tiene una lista de fechas en una columna, puede usar varias funciones de hoja de trabajo diferentes para determinar si esas fechas son viernes o no.
La función DÍA DE LA SEMANA devuelve un número, del 1 al 7, según el día de la semana de la fecha utilizada como argumento:
=WEEKDAY(A2)
Este uso devuelve el número 6 si la fecha en A2 es un viernes. Si esta fórmula se copia junto a una columna de fechas, puede usar la función Autofiltro de Excel para mostrar solo aquellas fechas donde el día de la semana es 6 (viernes).
También puede usar la función de formato condicional de Excel para simplemente resaltar todos los viernes en una lista de fechas. Siga estos pasos:
-
Seleccione la lista de fechas.
-
Elija Formato condicional en el menú Formato. Excel muestra el cuadro de diálogo Formato condicional.
-
Utilice el menú desplegable Condición para elegir La fórmula es. (Ver figura 1)
-
En el área de fórmulas, a la derecha de la lista desplegable utilizada en el paso 3, ingrese la siguiente fórmula, reemplazando A2 con la dirección de la celda activa seleccionada en el paso 1:
-
Haga clic en Formato para mostrar el cuadro de diálogo Formato de celdas.
-
Configure las opciones de formato para resaltar los viernes como desee.
-
Haga clic en Aceptar para cerrar el cuadro de diálogo Formato de celdas. El formato que especificó en el paso 6 ahora debería aparecer en el área de vista previa para la condición.
-
Haga clic en Aceptar.
Si desea determinar una serie de viernes en función de una fecha de inicio y finalización, puede configurar una serie de fórmulas para resolverlos.
Suponiendo que la fecha de inicio está en A2 y la fecha de finalización en A3, puede usar la siguiente fórmula para calcular la fecha del primer viernes:
=IF(A2+IF(WEEKDAY(A2)<=6,6-WEEKDAY(A2),6)>A3, "",A2+IF(WEEKDAY(A2)<=6,6-WEEKDAY(A2),6))
Si coloca esta fórmula en la celda C2 y luego la formatea como una fecha, puede usar la siguiente fórmula para determinar el próximo viernes en el rango:
=IF(C2="","",IF(C2+7>$A$3,"",C2+7))
Si copia esta fórmula para un grupo de celdas, terminará con una lista de viernes entre cualquier rango de fechas especificado por A2 y A3.
Si realmente desea «tirar» de los viernes en un intervalo de fechas específico, deberá utilizar una macro. Hay varias formas de hacerlo. Esta simple macro examinará todas las fechas en el rango A2: A24.
Si son viernes, la fecha se copia en la columna C, comenzando en C2. El resultado, por supuesto, es que la lista que comienza en C2 solo contendrá fechas que sean viernes.
Sub PullFridays1() Dim dat As Range Dim c As Range Dim rw As Integer Set dat = ActiveSheet.Range("A2:A24") rw = 2 For Each c In dat If Weekday(c) = vbFriday Then Cells(rw, 3).Value = Format(c) rw = rw + 1 End If Next End Sub
Si lo desea, puede cambiar el rango examinado por la macro simplemente cambiando la referencia A2: A24, y puede cambiar dónde se escriben las fechas cambiando el valor de rw (la fila) y el valor 3 (la columna) en el Función de las células.
Si prefiere trabajar con una fecha de inicio y una fecha de finalización, puede modificar la macro para que pase por las fechas. La siguiente macro asume que la fecha de inicio está en la celda A2 y la fecha de finalización está en la celda A3.
Sub PullFridays2() Dim dStart As Date Dim dEnd As Date Dim rw As Integer dStart = Range("A2").Value dEnd = Range("A3").Value rw = 2 While dStart < dEnd If Weekday(dStart) = vbFriday Then Cells(rw, 3).Value = dStart Cells(rw, 3).NumberFormat = "m/d/yyyy" rw = rw + 1 End If dStart = dStart + 1 Wend End Sub
La macro aún extrae los viernes del rango y los coloca en una lista que comienza en C2.
Otro enfoque macro es crear una función definida por el usuario que devuelva viernes específicos dentro de un rango. Lo siguiente hace precisamente eso:
Function PullFridays3(dStartDate As Date, _ dEndDate As Date, _ iIndex As Integer) Dim iMaxDays As Integer Dim dFirstday As Date Application.Volatile If dStartDate > dEndDate Then PullFridays3 = CVErr(xlErrNum) Exit Function End If dFirstday = vbFriday - Weekday(dStartDate) + dStartDate If dFirstday < dStartDate Then dFirstday = dFirstday + 7 iMaxDays = Int((dEndDate - dFirstday) / 7) + 1 PullFridays3 = "" If iIndex = 0 Then PullFridays3 = iMaxDays ElseIf iIndex <= iMaxDays Then PullFridays3 = dFirstday + (iIndex - 1) * 7 End If End Function
Utiliza esta función en una celda de su hoja de trabajo de la siguiente manera:
=PULLFRIDAYS3(A2,A3,1)
El primer argumento de la función es la fecha de inicio y el segundo es la fecha de finalización. El tercer argumento indica desde qué viernes desea que regrese dentro del rango especificado. Si usa 1, obtiene el primer viernes, 2 devuelve el segundo viernes, etc. Si usa un 0 para el tercer argumento, la función devuelve el número de viernes en el rango especificado. Si la fecha de inicio especificada es mayor que la fecha de finalización, la función devuelve un error #NUM.
_Nota: _
Si desea saber cómo usar las macros descritas en esta página (o en cualquier otra página de los sitios ExcelTips), he preparado una página especial que incluye información útil.
link: / excelribbon-ExcelTipsMacros [Haga clic aquí para abrir esa página especial en una nueva pestaña del navegador]
.
ExcelTips es su fuente de formación rentable en Microsoft Excel.
Este consejo (2930) se aplica a Microsoft Excel 97, 2000, 2002 y 2003. Puede encontrar una versión de este consejo para la interfaz de cinta de Excel (Excel 2007 y posterior) aquí:
enlace: / excelribbon-Pulling_All_Fridays [Pulling All Fridays]
.