Sobre fechas...

Estoy utilizando una hoja de Excel como base de datos y está distribuida de la siguiente forma:
En a1: primer día semana
b1: segundo día semana
C1:LUNES
D1:MARTES
e1:miércoles
F1:jueves
g1:viernes
h1:sábado
i1:domingo
Estos rangos mencionados son los nombres de las columnas de la base de datos, y tengo que rellenarlos con los siguientes datos y de la siguiente forma:
A2:MARTES (aquí pongo el día que comienza un hecho)
B2:VIERNES (aquí pongo el día que finaliza)
C2: (este rango corresponde al lunes) no añado datos porque ese día no ha sido utilizado
D2:1 (este al martes) como el martes ha comenzado pues le añado un 1
E2:1 (este al miércoles) este día también ha sido utilizado, pues añado otro 1
F2:1 (este al jueves) igualmente hasta el viernes.
G2:1 (este al viernes)
H2: (este al sábado)
I2: (este al domingo)
Como ves he añadido un número 1 en cada casilla desde el martes hasta el viernes, en otras ocasiones tengo que rellenar solo la casilla A2 con el día que corresponda (ejemplo sábado) porque solo ha sido utilizado ese día, entonces no es necesario rellenar la B2, y solo añadiría un 1 en la casilla H2 (que corresponde al sábado).
Así de simple el planteamiento pero así de complicado hacer el código ¿no?.
Con esto lo que conseguiría es estadísticamente calcular cuales son los días en los que ocurre un hecho entre dos fechas y así poder aumentar la plantilla los días en los que más sea necesario.
Los datos que te comento los introduzco a través de un formulario que he creado con VB, que alguna cosilla si que he realizado pero a tanto no llego..., y en la base de datos tengo muchas más columnas, entre las que se encuentran una para el día otra para el mes y otra para el año (pero estas son numéricas) y otras tres igual que sería para la segunda fecha, de las cuales tengo que extraer automáticamente el día de la semana que se colocaría en A2 y de la segunda fecha en B2.
Si me puedes explicar como realizar el mencionado código pues podré aplicarlo aquí y más tarde en otra base de datos que me funcionaría igual pero con horas pero en ese caso ya me las apañaría yo...
Espero haber sido claro en mi pregunta y espero no ser muy pesado... Gracias de antemano...

1 Respuesta

Respuesta
1
Tal vez por que ya quiero que se acabe el año peor como que no había entendí lo que quieres, pero creo que ya desperté...
Tal como me planteas tus datos, agrega un formulario que tenga los siguiente controles
Un ComboBox que se llame cboPrimero
Un ComboBox que se llame cboSegundo
Un CommandButton que se llame cmdInsertar
El código de este formulario es el siguiente...
Option Explicit
Private Sub cmdInsertar_Click()
Dim FilaLibre As Long
Dim DiaUno As Integer
Dim DiaDos As Integer
Dim co1 As Integer
If cboPrimero.ListIndex = -1 Or cboSegundo.ListIndex = -1 Then
MsgBox "Seleccione los dos dias"
Else
FilaLibre = Range("A1").End(xlDown).Row
If FilaLibre = 65536 Then
FilaLibre = 2
Else
FilaLibre = FilaLibre + 1
End If
DiaUno = cboPrimero.ListIndex + 3
DiaDos = cboSegundo.ListIndex + 3
Cells(FilaLibre, 1).Value = cboPrimero.Text
Cells(FilaLibre, 2).Value = cboSegundo.Text
If DiaUno = DiaDos Then
Cells(FilaLibre, DiaUno).Value = 1
ElseIf DiaDos > DiaUno Then
For co1 = DiaUno To DiaDos
Cells(FilaLibre, co1).Value = 1
Next co1
Else
co1 = DiaUno
Do
Cells(FilaLibre, co1).Value = 1
If co1 = 9 Then
co1 = 3
Else
co1 = co1 + 1
End If
Loop Until co1 = DiaDos + 1
End If
Unload Me
End If
End Sub
Private Sub UserForm_Initialize()
Dim Semana As Variant
Dim co1 As Integer
'Llenamos los dos combos con los dias de la semana
Semana = Array("Lunes", "Martes", "Miercoles", "Jueves", "Viernes", "Sabado", "Domingo")
For co1 = LBound(Semana) To UBound(Semana)
cboPrimero.AddItem Semana(co1)
cboSegundo.AddItem Semana(co1)
Next co1
End Sub
Se deben de seleccionar los dos días, tan el de inicio como el final
Los casos posibles son:
Que los días sean iguales
Que el primer día sea menor al segundo
Que el primer día se mayor al primero
Creo que hace lo que quieres, solo te resta adaptarlo a tus necesidades, puedes solicitar el ejemplo donde hice las pruebas a mi correo, saludos...
Mauricio Baeza
[email protected]
Todo lo que no es dado es perdido
*==========================================*
La presente respuesta ha demandado un tiempo de lectura,
análisis, elaboración y redacción. A cambio, simplemente,
pretendo que te tomes un minuto para FINALIZARLA, si
hubiera satisfecho -en alguna medida- tu requerimiento.
En caso contrario, puedes preguntarme nuevamente
aclarando qué entendí mal o qué faltó.
Justo lo que necesito, ahora lo intentaré acoplar a mi base de datos, tu trabajo ha sido perfecto, muchísimas gracias, ah! Posiblemente te haga alguna pregunta relacionada con este tema...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas