Función para devolver fechas especificas

Hola, haber si me puedes ayudar:
Necesito hacer una función que me devuelva la fecha de todos los martes que tenga cada mes y me ponga una fecha por fila; por ejemplo:
04/11/08
11/11/08
18/11/08
25/11/08
Que son todos los martes del mes de noviembre. Y que cuando sea diciembre me devuelva la fecha de todos los martes que tenga diciembre y así sucesivamente.
Hay alguna manera de hacer esto. ¿Cómo?
De antemano te agradezco y espero puedas ayudarme

1 respuesta

Respuesta
1
Con esta pequeña rutina, si pones en la celda b1 el primer día del año y en la celda b2 el día que buscas, por ejemplo "martes", te sale un listado de todos los martes del año que tienes en la celda b1...
Sub CalculaDiaSemana()
Dim dia As Date
Dim f As Integer
Dim n As Integer
On Error GoTo salir
f = 10
n = 0
Range("a5:a100") = ""
Do While Format(Range("b1") + n, "Dddd") <> Range("b2")
n = n + 1
Loop
Do
Cells(f, 1) = Range("b1") + n
n = n + 7
f = f + 1
Loop While n < 367
salir:
End Sub
De todas formas te cuelgo el fichero que te he preparado en la siguiente dirección
http://cid-3d609d87423f2eeb.skydrive.live.com/browse.aspx/P%c3%bablico
El fichero se llama DÍA DEL SEMANA
Perdón, cuando leí tu pregunta, no me di cuenta que lo que tú quieres es una función, ahí te va
NOTA.- 1º hay que poiner el día osea 1=Martes, 2=Miecoles, etc.. hay que poner el nº en tu caso el 1 y una como seguido del mes en nº)
Ejemplo: quiero saber los miércoles de octubre =DiaSemanaMes(2,10)
Después, e la celda inferior, suma 7, y así sucesivamente en las celdas inferiores
Function DiaSemanaMes(dia As String, mes As Byte) As Date
Dim diatotal As Date
diatotal = 1 & "-" & mes
diatotal = diatotal - 1
d = Format(diatotal, "d")
n = 0
Do While d <> dia
n = n + 1
d = Format(((diatotal) + n), "d")
Loop
DiaSemanaMes = (n) & "-" & mes
End Function
Gracias por tus respuestas... creo que la que me sirve es la 2da, la función... Pero soy principiante en excel y la verdad no se donde debo poner eso de 1=martes, 2=miércoles, ¿etc... Deben de ir en celdas? Y como le hago para decirle que son la referencia
¿Para llamar a la función se hace a través de una macro o como se hace?
Disculpa las molestias, pero como te digo no tengo mucho conocimiento de esto... intente ponerlo como yo creí pero no funciona.
Espero puedas ayudarme.
Esta función la tienes que guardar en el libro PERSONAL.xls, para crear este libro, vas al menu de excel, seleccionas HERRAMIENTAS - MACRO - GRABAR NUEVA MACRO y en apartado grabar macros en: selecciona LIBRO DE MACROS PERSONAL y así se te crea el libro en cuestión. Ahora, en menu HERRAMIENTAS - MACRO - DETENER GRABACIÓN.
Ahora teclea a la vez ALT + F11 y pincha en VBAProyect (PERSONAL.XLS) y abre el modulo 1 de ese proyecto. En el espacio en blanco que hay a la derecha, tienes que pegar el codigó que te envío.
Function DiaSemanaMes(dia As String, mes As Byte) As Date
Dim diatotal As Date
diatotal = 1 & "-" & mes
d = Format(diatotal, "dddd")
Select Case dia
Case "1"
diaSemana = "lunes"
Case "2"
diaSemana = "martes"
Case "3"
diaSemana = "miércoles"
Case "4"
diaSemana = "jueves"
Case "5"
diaSemana = "viernes"
Case "6"
diaSemana = "sábado"
Case "7"
diaSemana = "domingo"
End Select
n = 0
Do While d <> diaSemana
n = n + 1
d = Format(((diatotal) + n), "dddd")
Loop
DiaSemanaMes = (n) & "-" & mes
End Function
Y con esto funcionar. Ahora viene lo de las fórmulas de excel, ponte en la celda que quieras ver el primer martes de mes e inseta una función, cuando te salga el cuadro de funciones, el el apartado CATEGORÍAS, busca DEFINIDAS POR EL USUARIO y de ahí selecciona la que ponga Diasemanmes y te ira ayudando como todas las funciones.
Ahora he puesto que el nº 1 es Domingo, 2, lunes, 3 martes, etc...
Ya me comentaras como te va...
Hola de nuevo... ya me da pena, pero hice lo que me dijiste y en la celda donde pongo la fórmula me aparece #¡Valor!, ¿No se que estoy poniendo mal?...
Disculpa las molestias
Que no te de pena la cosa hay heces que es así. Entra en esta página y descárgate el fichero que se llama DÍA DE LA SEMANA, y habilita las macro si es necesario. En la celda A2, tines un ejemplo de aplicación de la fórmula, y la tabla amarila es para que tengas presente el nº que hay que poner para que te devuelva lo deseado, el formato de la celda le he puesto que nos enseñe el día de la semana, para que a su vez lo verifiques.
Con respecto a grabarlo en el fichero de persona.xls ¿Has podido acceder al fichero? Si la pregunta es NO, prueba a localizarlo en C:\User\Pedro\AppData\Roaming\Microsoft\Excel\XLSTART (esto es en mi caso, yo utilizo Excel 2003 y Vista) y si no tienes nada en ese directorio, graba este fichero pero con el nombre de PERSONAL.xls
Ya me comentaras y no dudes si no te sale a la primera...
Hola de nuevo, gracias por tu respuesta...
Descargue el archivo y lo probé con más fechas y no me devuelve lo que yo quiero.
Es decir si yo le digo =DiaSemanaMes(1,11); que seria un Martes de Noviembre en Lugar de devolverme Martes 04 de Noviembre que es el primer martes del mes de noviembre me regresa Sábado 01 de noviembre.
¿Por qué razón sucede esto?
Gracias
Vuelve a descargarte el fichero y ejecuta la función, pero ahora ten en cuanta que el primer día de la semana es Domingo, osea tu necesitas poner en nº 3.
Te recuerdo la dirección
Ya me comentaras...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas