Macros

Estoy haciendo un calendario para varias personas, tengo todas las fechas en una base de datos quiero que me busque en la base de datos las fecha que celebra una persona.
Mi base de datos tiene como columnas fecha, eventos oficiales, cumpleaños, fechas a conmemorar, nombre del calendario en las filas aparece solo el día y un dato que se coloca según en la columna que corresponde y el nombre dela persona a la que corresponde en la columna "nombre del calendario".
Quisiera que me buscara en esa base y colocara en otra tabla donde pongo el día del mes y las mismas columnas, lo que quiero es que en la tabla me ponga solo lo que se festeja para un calendario, en la base de datos hay muchas filas con el mismo día, lo que me dificulta hacerlo con buscarV y quisiera hacerlo con una macro.
{"lat":40.9798980696201,"lng":-5.625}
1

1 Respuesta

87.350 pts. Aficionado Execel y Macros etc
Alguna vez he echo algo similar, así que te puedo ayudar.
Si te parece oportuno, y para no andarnos por las ramas, si se posteas tu dirección de e-mail, yo te envío un correo para que me devuelvas unos ficheros de muestra que contengan los encabezados de todas las columnas y por ejemplo tres filas. Si te parece los nombres personales los cambias.
Nota.- Si decides enviarme los ficheros tal y como lo tienes, gozas de mi absoluta confidencialidad.
Je je que es postear no se pero es (xxxxxx)
Ya te he enviado el fichero con una prueba para el mes de enero, si es del todo satisfactorio, me lo comentas y lo hacemos para todos los meses.
Si das por terminada la ayuda, por favor cierra la pregunta y puntúa la ayuda. Gracias:
-------------------------------------------------------------------------------------------------
Para el resto de foreros, la solución ha podido ser la siguiente:
Sub cadipas()
    Dim MYHOJA As Object
    Dim HOJADATO As Object
    Dim ultimodia As Date
    Dim mydia As Date
    Set MYHOJA = Sheets(ActiveSheet.Name)
    Set HOJADATO = Sheets("FECHAS")
    MYHOJA.Range("d53:o83") = ""
    mes = Month(Range("d2"))
    ultimodia = 1 & "-" & (mes + 1) & "-" & year(Range("d2"))
    ultimodia = ultimodia - 1
    For R = 1 To Day(ultimodia)
        mydia = R & "-" & mes & "-" & year(Range("d2"))
        With HOJADATO.Range("a:a")
        Set c = .Find(mydia, LookIn:=xlValues, lookat:=xlWhole)
            If Not c Is Nothing Then
                firstAddress = c.Address
                Do
                    Select Case UCase(c.Offset(0, 13))
                        Case "TODOS"
                            ActoCultural = c.Offset(0, 1)
                            EventoCultural = c.Offset(0, 4)
                            EventoSocial = c.Offset(0, 7)
                            Cumpleaños = c.Offset(0, 11)
                            If ActoCultural = "" Or ActoCultural = " " Then
                            Else
                                If MYHOJA.Cells(52 + R, 4) = "" Then
                                    MYHOJA.Cells(52 + R, 4) = ActoCultural
                                Else
        MYHOJA.Cells(52 + R, 4) = MYHOJA.Cells(52 + R, 4) & " + " & ActoCultural
                                End If
                            End If
                            ' -------------
                            If EventoCultural = "" Or EventoCultural = " " Then
                            Else
                                If MYHOJA.Cells(52 + R, 7) = "" Then
                                    MYHOJA.Cells(52 + R, 7) = EventoCultural
                                Else
          MYHOJA.Cells(52 + R, 7) = MYHOJA.Cells(52 + R, 7) & " + " & EventoCultural
                                End If
                            End If
                            ' -------------
                            If EventoSocial = "" Or EventoSocial = " " Then
                            Else
                                If MYHOJA.Cells(52 + R, 10) = "" Then
                                    MYHOJA.Cells(52 + R, 10) = EventoSocial
                                Else
          MYHOJA.Cells(52 + R, 10) = MYHOJA.Cells(52 + R, 10) & " + " & EventoSocial
                                End If
                            End If
                            ' -------------
                            If Cumpleaños = "" Or Cumpleaños = " " Then
                            Else
                                If MYHOJA.Cells(52 + R, 14) = "" Then
                                    MYHOJA.Cells(52 + R, 14) = Cumpleaños
                                Else
        MYHOJA.Cells(52 + R, 14) = MYHOJA.Cells(52 + R, 14) & " + " & Cumpleaños
                                End If
                            End If
                            ' -------------
                            MYHOJA.Cells(52 + R, 14).Select
                        Case UCase(Range("r3"))
                            ActoCultural = c.Offset(0, 1)
                            EventoCultural = c.Offset(0, 4)
                            EventoSocial = c.Offset(0, 7)
                            Cumpleaños = c.Offset(0, 11)
                            If ActoCultural = "" Or ActoCultural = " " Then
                            Else
                                If MYHOJA.Cells(52 + R, 4) = "" Then
                                    MYHOJA.Cells(52 + R, 4) = ActoCultural
                                Else
           MYHOJA.Cells(52 + R, 4) = MYHOJA.Cells(52 + R, 4) & " + " & ActoCultural
                                End If
                            End If
                            ' -------------
                            If EventoCultural = "" Or EventoCultural = " " Then
                            Else
                                If MYHOJA.Cells(52 + R, 7) = "" Then
                                    MYHOJA.Cells(52 + R, 7) = EventoCultural
                                Else
         MYHOJA.Cells(52 + R, 7) = MYHOJA.Cells(52 + R, 7) & " + " & EventoCultural
                                End If
                            End If
                            ' -------------
                            If EventoSocial = "" Or EventoSocial = " " Then
                            Else
                                If MYHOJA.Cells(52 + R, 10) = "" Then
                                    MYHOJA.Cells(52 + R, 10) = EventoSocial
                                Else
                MYHOJA.Cells(52 + R, 10) = MYHOJA.Cells(52 + R, 10) & " + " & EventoSocial
                                End If
                            End If
                            ' -------------
                            If Cumpleaños = "" Or Cumpleaños = " " Then
                            Else
                                If MYHOJA.Cells(52 + R, 14) = "" Then
                                    MYHOJA.Cells(52 + R, 14) = Cumpleaños
                                Else
                     MYHOJA.Cells(52 + R, 14) = MYHOJA.Cells(52 + R, 14) & " + " & cumplepleaños
                                End If
                            End If
                    End Select
                    Set c = .FindNext(c)
                Loop While Not c Is Nothing And c.Address <> firstAddress
            End If
        End With
    Next R
End Sub
Muchísimas gracias, no sabes el ahorro de tiempo que obtendré. Claro que tendré que ponerme a estudiar la macro para aprender, por lo pronto la usare tal cual jejejeje.
De nuevo mil gracias.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas