Macro para separar fecha por mes día y año

Estoy buscando una macro que mes separe por ejemplo (martes 25 de Octubre del 2016) en otra hoja por día mes y año. Consiste en lo siguiente:

Tengo un libro de excel con 32 hojas en la primera hoja, en la celda B3:B33 tiene las fechas del sábado 01 de Octubre del 2016 al lunes 31 de Octubre del 2016 como se muestra en la imagen y en la siguiente hoja hay un formato como en la imagen siguiente, lo que quiero hacer es que en la hoja 2 me aparezca la fecha como se muestra en las celdas C8, F8, H8 de la imagen. No se si es posible con macros o alguna fórmula. Hago una aclaración de que cada una de las fechas correspondería a una hoja, como en este caso serian 31 hojas más, después de la primera. Utilice unas fórmula para el día pero no me dio el resultado como yo quería, estas son las fórmulas

=TEXTO(Hoja1! B3,"mmmm") el resultado me da "Octubre " esta si me serviría

  =AÑO(Hoja1! B3) para el año como resultado me da "2016" esta si me serviría también

=TEXTO(Hoja1! B3,"dddd") utilizando esa fórmula me aparece como sábado y yo quiero que aparezca como sábado -1 que podría hacer o le faltaría algo a la fórmula.?

Atentamente.

Luis Enrique

2 respuestas

Respuesta
2

Partiendo de la solución de Aneudys Martinez, copia y pega esta fórmula en F8

=TEXTO(Hoja1!B3;"dddd")&" - "&TEXTO(Hoja1!B3;"dd")

Gracias Gustavo por tu ayuda si me funciono perfecto esta fórmula, esta mejor simplificada, no si si se pudiera agregarle que en el caso de que en la celda B3 no tuviera datos en F8 quedara en blanco. Y que la primera letra fuera Mayúscula.

Yo utilice esta fórmula para cambiar F8 la primera letra en mayúscula =nompropio(F8) pero me gustaría que estuviera en la misma fórmula que me hiciste favor de enviarme, ya que con esa fórmula tengo que utilizar otra celda para hacer la conversión.

Atentamente.

Luis Enrique

No se si se pudiera hacer directamente desde esta macro que te anexo a continuación poner el resultado en MAYÚSCULAS, 

Private Sub Worksheet_Change(ByVal Target As Range)
'
If Target.Count > 1 Then Exit Sub
If Target.Address(False, False) <> "B2" Then Exit Sub
Range("B3:B" & Range("B" & Rows.Count).End(xlUp).Row + 3).ClearContents
elmes = 0
mes = LCase(Target.Value)
If Target.Value = "" Then Exit Sub
For i = 1 To 12
m = LCase(Format(DateSerial(Year(Date), i, 1), "mmmm"))
If m = mes Then
elmes = i
Exit For
End If
Next
'
If elmes = 0 Then
MsgBox "El nombre del mes no es correcto"
Exit Sub
End If
'
k = 3
For d = 1 To Day(DateSerial(Year(Date), elmes + 1, 1) - 1)
dia = Weekday(DateSerial(Year(Date), elmes, d))
Select Case dia
Case 2, 3, 4, 5, 6
Cells(k, "B") = DateSerial(Year(Date), elmes, d)
Cells(k, "B").NumberFormat = "[$-F800]dddd, mmmm dd, yyyy"
k = k + 1
End Select
Next
End Sub

Para lo primero podría valerte esto:

=SI(Hoja1!B3="";"";TEXTO(Hoja1!B3;"dddd")&" - "&TEXTO(Hoja1!B3;"dd"))

Para lo segundo, entiendo que es en la macro donde tendría que estar la instrucción, y aquí si que no te puedo ayudar, aunque sigo "trasteando".

Creo que esto lo resuelve con fórmulas:

=SI(Hoja1!B3="";"";NOMPROPIO(TEXTO(Hoja1!B3;"dddd"))&" - "&TEXTO(Hoja1!B3;"dd"))

Aunque creo que sería más elegante hacerlo desde la macro.

Buen día Gustavo Monilla, Te agradezco tu ayuda quedo perfecta la fórmula que me creaste, nada más te pido otro favor, si me podrías corregir esta fórmula.

=SI('DIRECTOR  JEFES  ENLACE'!B33="","","dd/mm/aaaa"))

Es que en la hoja DIRECTOR JEFES ENLACE celda B33, si no tengo fecha me deje en blanco la celda destino y es que me aparece como sábado, 00 de Enero de 1900

Si lo que quieres es que te devuelva el contenido de b33, entiendo que tiene que ser así:

=SI('DIRECTOR JEFES ENLACE'!B33="";"";'DIRECTOR JEFES ENLACE'!B33)

Muchísimas ¡Gracias! Gustavo todo salio perfecto, te agradezco bastante tu apoyo con las fórmulas. Saludos..

Atentamente.

Luis Enrique

Respuesta
1

Usa la funcionó concatenar y funciona la fecha día de semana con día de calendario

Sería en una celda =texto (hoja1! C3,"dddd")

El la otra sería =texto (hoja1! D3,"dd")

Y aquí en f3 la de concatenar que seria 

=concatenar (c3,"-", d3)

El resultado será sábado -1

Recuerda valorar si te silve para cerrar la pregunta

Buen día Aneudys

¡Gracias ! Por tu ayuda si me sirvió de mucho las fórmulas que me enviaste.

Saludos

Atentamente.

Luis Enrique

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas