|
22/10/2009
Experto
|
Tu requerimiento habla de la columa "AE" número de columna 31, esa columna contienen una fecha que deseas evaluar que este en un rango ejemplo: 01/09/2009 al 30/09/2009 y hablas de 40 columnas desde la columna "A" hasta la columna "AN".
Para hacer esto es necesario crear una macro en vba. Si no estas familiarizado con el editor de vba te indicare los pasos que debes seguir:
Te vas a ir a la barra principal de excel y vas a darle el botón derecho del ratón sobre la barra justo despues de donde esta la opción "Ayuda" (Help) puede ser en cualquier espacio de la barra despues de la opción "Ayuda".
Te va a aparecer un menu contextual y debes seleccionar de alli la opcion que dice "visual basic", se va a ctivar la barra de visual basic en el excel.
Luego le vas a dar clic al icono de esa barra que esta despues de la opción "Seguridad..." (Security...), la etiqueta de ayuda que se muestra cuando pasas el cursor del ratón sobre el icono dice "Visual Basic Editor"
Una vez que le des clic va a aparecer el editor de vba, del lado izquierdo debes hacer clic sobre el primer objeto que aparace en el arbol de objetos el que dice "VBAProject("nombre de tu archivo excel".xls)", le das botón derecho del ratón y te aparecera un menu contextual de donde debes seleccionar la opción "Insert" y despues seleccionar "Module".
Seguidamente va a aparecer al final del arbol un icono con figura de "carpeta" que dice "Modules" debajo va a aparcer otro icono con el nombre de "Module1" sobre ese icono vas a hacer doble clic y del lado derecho va a aparecer el editor de codigo de vba que tiene un fondo blanco y arriba tiene 2 combo box que dicen (General) y (Declarations) en ese espacio en blanco debes colocar el codigo:
Type registros
columna1 As String
columna2 As String
columna3 As String
columna4 As String
columna5 As String
columna6 As String
columna7 As String
columna8 As String
columna9 As String
columna10 As String
columna11 As String
columna12 As String
columna13 As String
columna14 As String
columna15 As String
columna16 As String
columna17 As String
columna18 As String
columna19 As String
columna20 As String
columna21 As String
columna22 As String
columna23 As String
columna24 As String
columna25 As String
columna26 As String
columna27 As String
columna28 As String
columna29 As String
columna30 As String
columna31 As String
columna32 As String
columna33 As String
columna34 As String
columna35 As String
columna36 As String
columna37 As String
columna38 As String
columna39 As String
columna40 As String
End Type
Public Sub pasar_registros(ByVal hojaorigen As String, hojadestino As String, desde As Date, hasta As Date, numcolumna As Long)
Dim ultima_fila As Long
Dim ultima_fila2 As Long
Dim ultima_columna As Long
Dim fila As Long
Dim columna As Long
Dim I As Long
Dim J As Long
Dim fecha As Date
Dim fecana As Long
Dim fecdes As Long
Dim fechas As Long
Dim dia As String
Dim mes As String
Dim valores() As registros
If Month(desde) >= 1 And Month(desde) <= 9 Then
mes = "0" & Month(desde)
Else
mes = Month(desde)
End If
If Day(desde) >= 1 And Day(desde) <= 9 Then
dia = "0" & Day(desde)
Else
dia = Day(desde)
End If
fecdes = CLng(Year(desde) & mes & dia)
If Month(hasta) >= 1 And Month(hasta) <= 9 Then
mes = "0" & Month(hasta)
Else
mes = Month(hasta)
End If
If Day(hasta) >= 1 And Day(hasta) <= 9 Then
dia = "0" & Day(hasta)
Else
dia = Day(hasta)
End If
fechas = CLng(Year(hasta) & mes & dia)
ultima_fila = Worksheets(hojaorigen).Cells.Find(What:="*", After:=[A1], SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
ultima_columna = Worksheets(hojaorigen).Cells.Find(What:="*", After:=[A1], SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Column
I = 1
ReDim valores(I)
For fila = 2 To ultima_fila
If I = 1 Then
If IsDate(Worksheets(hojaorigen).Cells(fila, numcolumna)) Then
fecha = CDate(Worksheets(hojaorigen).Cells(fila, numcolumna))
If Month(fecha) >= 1 And Month(fecha) <= 9 Then
mes = "0" & Month(fecha)
Else
mes = Month(fecha)
End If
If Day(fecha) >= 1 And Day(fecha) <= 9 Then
dia = "0" & Day(fecha)
Else
dia = Day(fecha)
End If
fecana = CLng(Year(fecha) & mes & dia)
If fecana >= fecdes And fecana <= fechas Then
valores(I).columna1 = CStr(Worksheets(hojaorigen).Cells(fila, 1))
valores(I).columna2 = CStr(Worksheets(hojaorigen).Cells(fila, 2))
valores(I).columna3 = CStr(Worksheets(hojaorigen).Cells(fila, 3))
valores(I).columna4 = CStr(Worksheets(hojaorigen).Cells(fila, 4))
valores(I).columna5 = CStr(Worksheets(hojaorigen).Cells(fila, 5))
valores(I).columna6 = CStr(Worksheets(hojaorigen).Cells(fila, 6))
valores(I).columna7 = CStr(Worksheets(hojaorigen).Cells(fila, 7))
valores(I).columna8 = CStr(Worksheets(hojaorigen).Cells(fila, 8))
valores(I).columna9 = CStr(Worksheets(hojaorigen).Cells(fila, 9))
valores(I).columna10 = CStr(Worksheets(hojaorigen).Cells(fila, 10))
valores(I).columna11 = CStr(Worksheets(hojaorigen).Cells(fila, 11))
valores(I).columna12 = CStr(Worksheets(hojaorigen).Cells(fila, 12))
valores(I).columna13 = CStr(Worksheets(hojaorigen).Cells(fila, 13))
valores(I).columna14 = CStr(Worksheets(hojaorigen).Cells(fila, 14))
valores(I).columna15 = CStr(Worksheets(hojaorigen).Cells(fila, 15))
valores(I).columna16 = CStr(Worksheets(hojaorigen).Cells(fila, 16))
valores(I).columna17 = CStr(Worksheets(hojaorigen).Cells(fila, 17))
valores(I).columna18 = CStr(Worksheets(hojaorigen).Cells(fila, 18))
valores(I).columna19 = CStr(Worksheets(hojaorigen).Cells(fila, 19))
valores(I).columna20 = CStr(Worksheets(hojaorigen).Cells(fila, 20))
valores(I).columna21 = CStr(Worksheets(hojaorigen).Cells(fila, 21))
valores(I).columna22 = CStr(Worksheets(hojaorigen).Cells(fila, 22))
valores(I).columna23 = CStr(Worksheets(hojaorigen).Cells(fila, 23))
valores(I).columna24 = CStr(Worksheets(hojaorigen).Cells(fila, 24))
valores(I).columna25 = CStr(Worksheets(hojaorigen).Cells(fila, 25))
valores(I).columna26 = CStr(Worksheets(hojaorigen).Cells(fila, 26))
valores(I).columna27 = CStr(Worksheets(hojaorigen).Cells(fila, 27))
valores(I).columna28 = CStr(Worksheets(hojaorigen).Cells(fila, 28))
valores(I).columna29 = CStr(Worksheets(hojaorigen).Cells(fila, 29))
valores(I).columna30 = CStr(Worksheets(hojaorigen).Cells(fila, 30))
valores(I).columna31 = CStr(Worksheets(hojaorigen).Cells(fila, 31))
valores(I).columna32 = CStr(Worksheets(hojaorigen).Cells(fila, 32))
valores(I).columna33 = CStr(Worksheets(hojaorigen).Cells(fila, 33))
valores(I).columna34 = CStr(Worksheets(hojaorigen).Cells(fila, 34))
valores(I).columna35 = CStr(Worksheets(hojaorigen).Cells(fila, 35))
valores(I).columna36 = CStr(Worksheets(hojaorigen).Cells(fila, 36))
valores(I).columna37 = CStr(Worksheets(hojaorigen).Cells(fila, 37))
valores(I).columna38 = CStr(Worksheets(hojaorigen).Cells(fila, 38))
valores(I).columna39 = CStr(Worksheets(hojaorigen).Cells(fila, 39))
valores(I).columna40 = CStr(Worksheets(hojaorigen).Cells(fila, 40))
I = I + 1
End If
End If
Else
If IsDate(Worksheets(hojaorigen).Cells(fila, numcolumna)) Then
fecha = CDate(Worksheets(hojaorigen).Cells(fila, numcolumna))
If Month(fecha) >= 1 And Month(fecha) <= 9 Then
mes = "0" & Month(fecha)
Else
mes = Month(fecha)
End If
If Day(fecha) >= 1 And Day(fecha) <= 9 Then
dia = "0" & Day(fecha)
Else
dia = Day(fecha)
End If
fecana = CLng(Year(fecha) & mes & dia)
If fecana >= fecdes And fecana <= fechas Then
ReDim Preserve valores(I)
valores(I).columna1 = CStr(Worksheets(hojaorigen).Cells(fila, 1))
valores(I).columna2 = CStr(Worksheets(hojaorigen).Cells(fila, 2))
valores(I).columna3 = CStr(Worksheets(hojaorigen).Cells(fila, 3))
valores(I).columna4 = CStr(Worksheets(hojaorigen).Cells(fila, 4))
valores(I).columna5 = CStr(Worksheets(hojaorigen).Cells(fila, 5))
valores(I).columna6 = CStr(Worksheets(hojaorigen).Cells(fila, 6))
valores(I).columna7 = CStr(Worksheets(hojaorigen).Cells(fila, 7))
valores(I).columna8 = CStr(Worksheets(hojaorigen).Cells(fila, 8))
valores(I).columna9 = CStr(Worksheets(hojaorigen).Cells(fila, 9))
valores(I).columna10 = CStr(Worksheets(hojaorigen).Cells(fila, 10))
valores(I).columna11 = CStr(Worksheets(hojaorigen).Cells(fila, 11))
valores(I).columna12 = CStr(Worksheets(hojaorigen).Cells(fila, 12))
valores(I).columna13 = CStr(Worksheets(hojaorigen).Cells(fila, 13))
valores(I).columna14 = CStr(Worksheets(hojaorigen).Cells(fila, 14))
valores(I).columna15 = CStr(Worksheets(hojaorigen).Cells(fila, 15))
valores(I).columna16 = CStr(Worksheets(hojaorigen).Cells(fila, 16))
valores(I).columna17 = CStr(Worksheets(hojaorigen).Cells(fila, 17))
valores(I).columna18 = CStr(Worksheets(hojaorigen).Cells(fila, 18))
valores(I).columna19 = CStr(Worksheets(hojaorigen).Cells(fila, 19))
valores(I).columna20 = CStr(Worksheets(hojaorigen).Cells(fila, 20))
valores(I).columna21 = CStr(Worksheets(hojaorigen).Cells(fila, 21))
valores(I).columna22 = CStr(Worksheets(hojaorigen).Cells(fila, 22))
valores(I).columna23 = CStr(Worksheets(hojaorigen).Cells(fila, 23))
valores(I).columna24 = CStr(Worksheets(hojaorigen).Cells(fila, 24))
valores(I).columna25 = CStr(Worksheets(hojaorigen).Cells(fila, 25))
valores(I).columna26 = CStr(Worksheets(hojaorigen).Cells(fila, 26))
valores(I).columna27 = CStr(Worksheets(hojaorigen).Cells(fila, 27))
valores(I).columna28 = CStr(Worksheets(hojaorigen).Cells(fila, 28))
valores(I).columna29 = CStr(Worksheets(hojaorigen).Cells(fila, 29))
valores(I).columna30 = CStr(Worksheets(hojaorigen).Cells(fila, 30))
valores(I).columna31 = CStr(Worksheets(hojaorigen).Cells(fila, 31))
valores(I).columna32 = CStr(Worksheets(hojaorigen).Cells(fila, 32))
valores(I).columna33 = CStr(Worksheets(hojaorigen).Cells(fila, 33))
valores(I).columna34 = CStr(Worksheets(hojaorigen).Cells(fila, 34))
valores(I).columna35 = CStr(Worksheets(hojaorigen).Cells(fila, 35))
valores(I).columna36 = CStr(Worksheets(hojaorigen).Cells(fila, 36))
valores(I).columna37 = CStr(Worksheets(hojaorigen).Cells(fila, 37))
valores(I).columna38 = CStr(Worksheets(hojaorigen).Cells(fila, 38))
valores(I).columna39 = CStr(Worksheets(hojaorigen).Cells(fila, 39))
valores(I).columna40 = CStr(Worksheets(hojaorigen).Cells(fila, 40))
I = I + 1
End If
End If
End If
Next fila
Worksheets(hojadestino).Cells(1, 1) = " "
ultima_fila2 = Worksheets(hojadestino).Cells.Find(What:="*", After:=[A1], SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
For fila = 1 To ultima_fila2
Worksheets(hojadestino).Rows(fila).EntireRow.Delete
Next fila
For J = 1 To I - 1
Worksheets(hojadestino).Cells(J, 1) = valores(J).columna1
Worksheets(hojadestino).Cells(J, 2) = valores(J).columna2
Worksheets(hojadestino).Cells(J, 3) = valores(J).columna3
Worksheets(hojadestino).Cells(J, 4) = valores(J).columna4
Worksheets(hojadestino).Cells(J, 5) = valores(J).columna5
Worksheets(hojadestino).Cells(J, 6) = valores(J).columna6
Worksheets(hojadestino).Cells(J, 7) = valores(J).columna7
Worksheets(hojadestino).Cells(J, 8) = valores(J).columna8
Worksheets(hojadestino).Cells(J, 9) = valores(J).columna9
Worksheets(hojadestino).Cells(J, 10) = valores(J).columna10
Worksheets(hojadestino).Cells(J, 11) = valores(J).columna11
Worksheets(hojadestino).Cells(J, 12) = valores(J).columna12
Worksheets(hojadestino).Cells(J, 13) = valores(J).columna13
Worksheets(hojadestino).Cells(J, 14) = valores(J).columna14
Worksheets(hojadestino).Cells(J, 15) = valores(J).columna15
Worksheets(hojadestino).Cells(J, 16) = valores(J).columna16
Worksheets(hojadestino).Cells(J, 17) = valores(J).columna17
Worksheets(hojadestino).Cells(J, 18) = valores(J).columna18
Worksheets(hojadestino).Cells(J, 19) = valores(J).columna19
Worksheets(hojadestino).Cells(J, 20) = valores(J).columna20
Worksheets(hojadestino).Cells(J, 21) = valores(J).columna21
Worksheets(hojadestino).Cells(J, 22) = valores(J).columna22
Worksheets(hojadestino).Cells(J, 23) = valores(J).columna23
Worksheets(hojadestino).Cells(J, 24) = valores(J).columna24
Worksheets(hojadestino).Cells(J, 25) = valores(J).columna25
Worksheets(hojadestino).Cells(J, 26) = valores(J).columna26
Worksheets(hojadestino).Cells(J, 27) = valores(J).columna27
Worksheets(hojadestino).Cells(J, 28) = valores(J).columna28
Worksheets(hojadestino).Cells(J, 29) = valores(J).columna29
Worksheets(hojadestino).Cells(J, 30) = valores(J).columna30
Worksheets(hojadestino).Cells(J, 31) = valores(J).columna31
Worksheets(hojadestino).Cells(J, 32) = valores(J).columna32
Worksheets(hojadestino).Cells(J, 33) = valores(J).columna33
Worksheets(hojadestino).Cells(J, 34) = valores(J).columna34
Worksheets(hojadestino).Cells(J, 35) = valores(J).columna35
Worksheets(hojadestino).Cells(J, 36) = valores(J).columna36
Worksheets(hojadestino).Cells(J, 37) = valores(J).columna37
Worksheets(hojadestino).Cells(J, 38) = valores(J).columna38
Worksheets(hojadestino).Cells(J, 39) = valores(J).columna39
Worksheets(hojadestino).Cells(J, 40) = valores(J).columna40
Next J
End Sub
Una vez que este listo debes "Salvar" cierra la hoja de excel y vuelve a abrirla. En la barra de "visual basic" que agregaste justo despues del icono que ya usaste "Visual basic Editor" aparece otro icono con la etiqueta de ayuda que se muestra cuando pasas el cursor del ratón que dice "Caja de Herramientas" (Control Toolbox) has clic sobre ese icono y paraceran las "opciones de la caja de herramientas".
Debes buscar alli un cuadro pequeño de color gris que cuando pasas el cursor del raton la etiqueta de ayuda que aparece dice "Botón de Comando" (Command Button) has clic una vez sobre ese icono.
El cursor cambiara a un signo de suma (+) colocalo sobre la columna "AO" y has clic con el raton aparecera el boton insertado en la hoja, seguidamente has clic con el botón derecho del ratón y aparecera un menu contextual selecciona la opción "View Code" y te mostrara de nuevo el editor de vba, el cursor aparecera dentro del evento "CommandButton1_Click()":
Private Sub CommandButton1_Click()
El cursor aparece aqui..
End Sub
En ese lugar coloca este codigo:
Call pasar_registros("Hoja1", "Hoja2", #01/09/2009#, #30/09/2009#, 31)
Asumo que tienes en la Hoja1 los datos que quieres pasar y es en la Hoja2 donde quieres que pasen; el rango de fechas lo puedes cambiar yo use, 01/09/2009 a 30/09/2009 y la columna es la "AE" que es la número 31 "Salva" cierra el excel y vuelve a abrirlo, cuando le des clic al botón se aplicara el metodo.
Es muy importante que tengas en la fila uno de la Hoja1 los titulos de las columnas la función comienza a evaluar solo a partir de la fila 2. Una vez que le des clic pasaran las filas, revisa la hoja destino despues de hacer el clic.
Recuerda que se borraran todas las filas en la hoja destino y pasaran las que esten en el rango de fechas que determinaste (columna "AE" número: 31)
Espero que te sea util esta guia....
|