Anónimo
Como pasar datos entre hojas condicionando fecha
Buenos días, a ver si me podéis ayudar.. Intentare explicarme lo mejor posible.
Tengo un excel, en el cual hay 2 hojas en un cargo unos datos que contienen en columnas texto, números y fechas.
El fichero en si debe tener unas 20 columnas y 400 filas más o menos.
Necesitaría poder seleccionar los datos de esa hoja "base" según criterio de fechas o sea necesito acumulado anual de 01.01.09 a la fecha de el cierre del mes que corresponda en este caso 30.09.09. (si se que se puede hacer con la opción de filtrar) pero lo que yo necesito es que todos los datos que se encuentren dentro de ese rango 01.01.09 a 30.09.09 ambos incluidos se me graven en una segunda hoja(hoja flitro acuml)
Lo que iría perfecto es que cuando cada mes yo cargase los nuevos datos en la hoja " base" se me actualizase la "hoja filtro acuml" automáticamente.
Lo he probado con fórmulas pero no me aclaro.
Si alguien me puede ayudar se lo agradecería mucho.
Atentamente
(xxxxxx)
Tengo un excel, en el cual hay 2 hojas en un cargo unos datos que contienen en columnas texto, números y fechas.
El fichero en si debe tener unas 20 columnas y 400 filas más o menos.
Necesitaría poder seleccionar los datos de esa hoja "base" según criterio de fechas o sea necesito acumulado anual de 01.01.09 a la fecha de el cierre del mes que corresponda en este caso 30.09.09. (si se que se puede hacer con la opción de filtrar) pero lo que yo necesito es que todos los datos que se encuentren dentro de ese rango 01.01.09 a 30.09.09 ambos incluidos se me graven en una segunda hoja(hoja flitro acuml)
Lo que iría perfecto es que cuando cada mes yo cargase los nuevos datos en la hoja " base" se me actualizase la "hoja filtro acuml" automáticamente.
Lo he probado con fórmulas pero no me aclaro.
Si alguien me puede ayudar se lo agradecería mucho.
Atentamente
(xxxxxx)
Respuesta de desenex41
1
1
desenex41, Programador eventual
Para poder ayudarte necesito que me indiques el número de la columna donde esta la fecha de cierre del mes es decir si esta en la columna A = 1, B = 2, etc. Para poder crear una función que pasa las filas que estén en el rango de fechas que necesites
La columna donde se encuentran las fechas es la AE nº de columna 31. Pero hay datos hasta la AN.
Muchas gracias,
(xxxxxx)
Muchas gracias,
(xxxxxx)
Tu requerimiento habla de 2 columnas la "A" y la "E", esas columnas contienen una fecha que deseas evaluar que este en un rango ejemplo: 01/09/2009 al 30/09/2009
en esta macro solo puedes evaluar una sola de las fechas cualquiera de las dos la que este en la columna A o E pero solo una; la fecha que este contenida en una de esas columnas es la que debe estar en el rango que tu determines.
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 va a ir a la barra principal de excel y vas a darle el botón derecho del ratón sobre la barra justo después de donde esta la opción "Ayuda" (Help) puede ser en cualquier espacio de la barra después de la opción "Ayuda".
Te va a aparecer un menu contextual y debes seleccionar de allí la opción 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 después 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 aparece en el árbol de objetos el que dice "VBAProject("nombre de tu archivo excel".xls)", le das botón derecho del ratón y te aparecerá un menu contextual de donde debes seleccionar la opción "Insert" y después seleccionar "Module".
Seguidamente va a aparecer al final del árbol un icono con figura de "carpeta" que dice "Modules" debajo va a aparecer 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 código 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 código:
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
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))
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))
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
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 después 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 allí un cuadro pequeño de color gris que cuando pasas el cursor del ratón 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 "AF" y has clic con el ratón aparecerá el botón insertado en la hoja, seguidamente has clic con el botón derecho del ratón y aparecerá un menu contextual selecciona la opción "View Code" y te mostrara de nuevo el editor de vba, el cursor aparecerá dentro del evento "CommandButton1_Click()":
Private Sub CommandButton1_Click()
El cursor aparece aqui..
End Sub
En ese lugar coloca este código:
Call pasar_registros("Hoja1", "Hoja2", #01/09/2009#, #30/09/2009#, 1)
Asumo que tienes en la Hoja1 los datos que quieres pasar y en la Hoja2 la hoja donde quieres que pasen el rango de fechas lo puedes cambiar use, 01/09/2009 a 30/09/2009 y la columna es la A que la numero 1 si quieres puedes usar la E que es la numero 5 "Salva" cierra el excel y vuelve a abrirlo, cuando le des clic al botón se aplicara el método.
Es muy importante que tengas en la fila uno de la Hoja1 los títulos 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 después de hacer clic.
Recuerda que se borraran las filas que tengan en la hoja destino y pasaran las que estén en el rango de fechas columna A o E números 1 o 5
en esta macro solo puedes evaluar una sola de las fechas cualquiera de las dos la que este en la columna A o E pero solo una; la fecha que este contenida en una de esas columnas es la que debe estar en el rango que tu determines.
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 va a ir a la barra principal de excel y vas a darle el botón derecho del ratón sobre la barra justo después de donde esta la opción "Ayuda" (Help) puede ser en cualquier espacio de la barra después de la opción "Ayuda".
Te va a aparecer un menu contextual y debes seleccionar de allí la opción 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 después 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 aparece en el árbol de objetos el que dice "VBAProject("nombre de tu archivo excel".xls)", le das botón derecho del ratón y te aparecerá un menu contextual de donde debes seleccionar la opción "Insert" y después seleccionar "Module".
Seguidamente va a aparecer al final del árbol un icono con figura de "carpeta" que dice "Modules" debajo va a aparecer 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 código 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 código:
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
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))
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))
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
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 después 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 allí un cuadro pequeño de color gris que cuando pasas el cursor del ratón 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 "AF" y has clic con el ratón aparecerá el botón insertado en la hoja, seguidamente has clic con el botón derecho del ratón y aparecerá un menu contextual selecciona la opción "View Code" y te mostrara de nuevo el editor de vba, el cursor aparecerá dentro del evento "CommandButton1_Click()":
Private Sub CommandButton1_Click()
El cursor aparece aqui..
End Sub
En ese lugar coloca este código:
Call pasar_registros("Hoja1", "Hoja2", #01/09/2009#, #30/09/2009#, 1)
Asumo que tienes en la Hoja1 los datos que quieres pasar y en la Hoja2 la hoja donde quieres que pasen el rango de fechas lo puedes cambiar use, 01/09/2009 a 30/09/2009 y la columna es la A que la numero 1 si quieres puedes usar la E que es la numero 5 "Salva" cierra el excel y vuelve a abrirlo, cuando le des clic al botón se aplicara el método.
Es muy importante que tengas en la fila uno de la Hoja1 los títulos 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 después de hacer clic.
Recuerda que se borraran las filas que tengan en la hoja destino y pasaran las que estén en el rango de fechas columna A o E números 1 o 5
Hola (xxxxxx)
Quiero disculparme contigo por que me equivoque la columna que tiene la fecha es la columna AE = numero 31.
Tienes un total de 40 columnas que quieres pasar dependiendo del rango de fecha que determines columnas (A -AN)
Te enviare los pasos a seguir con las parámetros correctos
Disculpa mi error
Tu requerimiento habla de la columna "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 después de donde esta la opción "Ayuda" (Help) puede ser en cualquier espacio de la barra después de la opción "Ayuda".
Te va a aparecer un menu contextual y debes seleccionar de allí la opción 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 después 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 aparece en el árbol de objetos el que dice "VBAProject("nombre de tu archivo excel".xls)", le das botón derecho del ratón y te aparecerá un menu contextual de donde debes seleccionar la opción "Insert" y después seleccionar "Module".
Seguidamente va a aparecer al final del árbol un icono con figura de "carpeta" que dice "Modules" debajo va a aparecer 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 código 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 código:
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 después 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 allí un cuadro pequeño de color gris que cuando pasas el cursor del ratón 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 ratón aparecerá el botón insertado en la hoja, seguidamente has clic con el botón derecho del ratón y aparecerá un menu contextual selecciona la opción "View Code" y te mostrara de nuevo el editor de vba, el cursor aparecerá dentro del evento "CommandButton1_Click()":
Private Sub CommandButton1_Click()
El cursor aparece aqui..
End Sub
En ese lugar coloca este código:
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 método.
Es muy importante que tengas en la fila uno de la Hoja1 los títulos 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 después de hacer el clic.
Recuerda que se borraran todas las filas en la hoja destino y pasaran las que estén en el rango de fechas que determinaste (columna "AE" número: 31)
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 después de donde esta la opción "Ayuda" (Help) puede ser en cualquier espacio de la barra después de la opción "Ayuda".
Te va a aparecer un menu contextual y debes seleccionar de allí la opción 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 después 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 aparece en el árbol de objetos el que dice "VBAProject("nombre de tu archivo excel".xls)", le das botón derecho del ratón y te aparecerá un menu contextual de donde debes seleccionar la opción "Insert" y después seleccionar "Module".
Seguidamente va a aparecer al final del árbol un icono con figura de "carpeta" que dice "Modules" debajo va a aparecer 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 código 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 código:
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 después 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 allí un cuadro pequeño de color gris que cuando pasas el cursor del ratón 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 ratón aparecerá el botón insertado en la hoja, seguidamente has clic con el botón derecho del ratón y aparecerá un menu contextual selecciona la opción "View Code" y te mostrara de nuevo el editor de vba, el cursor aparecerá dentro del evento "CommandButton1_Click()":
Private Sub CommandButton1_Click()
El cursor aparece aqui..
End Sub
En ese lugar coloca este código:
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 método.
Es muy importante que tengas en la fila uno de la Hoja1 los títulos 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 después de hacer el clic.
Recuerda que se borraran todas las filas en la hoja destino y pasaran las que estén en el rango de fechas que determinaste (columna "AE" número: 31)
Hola desenex41, muchas gracias por tu guía, me ha ido genial porque yo de VB nada.
Pero sigo con un problemilla, la verdad es que si me hace el filtro de los datos, pero es queme cambia las fechas en la hoja destino. A ver si me se expliacar
en el texto de VB donde pongo:
Call pasar_registros("Hoja1", "Hoja2", #01/09/2009#, #30/09/2009#, 31)
Al grabar se me convierte es:
Call pasar_registros("Hoja1", "Hoja2", #1/9/2009#, #9/30/2009#, 31)
Por lo que me cambia la fecha de los datos que flitra y no me salen los correctos.
¿Te agradecería me dijeras que debo hacer para que me saque los datos bien?
Muchas gracias,
(xxxxxx)
Pero sigo con un problemilla, la verdad es que si me hace el filtro de los datos, pero es queme cambia las fechas en la hoja destino. A ver si me se expliacar
en el texto de VB donde pongo:
Call pasar_registros("Hoja1", "Hoja2", #01/09/2009#, #30/09/2009#, 31)
Al grabar se me convierte es:
Call pasar_registros("Hoja1", "Hoja2", #1/9/2009#, #9/30/2009#, 31)
Por lo que me cambia la fecha de los datos que flitra y no me salen los correctos.
¿Te agradecería me dijeras que debo hacer para que me saque los datos bien?
Muchas gracias,
(xxxxxx)
Perdona nuevamente, he estado mirando lo de la macros, y no había caído que como los rangos de fechas para traspasar los datos se tienen que ir cambiando mensualmente, deberemos entrar cada mes dentro del VB para modificarlo.
Mi pregunta es se puede hacer que la macros filtre dentro de los parámetros de fechas que se le indica, pero que este parámetro de fecha se pueda introducir desde fuera del VB directamente en la Hoja Excel... no se mucho del tema por no decir casi casi nada, pero he estado mirando y he encontrado que si en una felda pones algo como fecha ini y en la de lado la fecha que quieres y en la de abajo pones Fecha fin y la fecha... o sea en la hoja excel quedaría algo así
Fecha ini 01/01/2009
Fecha fin 30/09/2009
y luego detro del VB introducies la funcion
MsgBox (Format(Range("AZ1").value, "dd/mm/yyyy")) o algo parecido, la fecha la podran poner desde fuera y no me pasara lo de que al ejecutarlo me cambia el sentido o formato de las fechas......
La verdad es que si puedo evitar que nadie entre dentro del VB me evito que lo desconfigure... pero como te he dicho he estado mirando, y no estoy segura de si se puede hacer, ni de como se hace exactamente...
Te agradecería tu ayuda nuevamente
Atentamente
(xxxxxx)
Mi pregunta es se puede hacer que la macros filtre dentro de los parámetros de fechas que se le indica, pero que este parámetro de fecha se pueda introducir desde fuera del VB directamente en la Hoja Excel... no se mucho del tema por no decir casi casi nada, pero he estado mirando y he encontrado que si en una felda pones algo como fecha ini y en la de lado la fecha que quieres y en la de abajo pones Fecha fin y la fecha... o sea en la hoja excel quedaría algo así
Fecha ini 01/01/2009
Fecha fin 30/09/2009
y luego detro del VB introducies la funcion
MsgBox (Format(Range("AZ1").value, "dd/mm/yyyy")) o algo parecido, la fecha la podran poner desde fuera y no me pasara lo de que al ejecutarlo me cambia el sentido o formato de las fechas......
La verdad es que si puedo evitar que nadie entre dentro del VB me evito que lo desconfigure... pero como te he dicho he estado mirando, y no estoy segura de si se puede hacer, ni de como se hace exactamente...
Te agradecería tu ayuda nuevamente
Atentamente
(xxxxxx)
El problema con la primera pregunta que me hiciste es simple, cuando escribes las fechas en la función entre el carácter "#" el vba internamente te esta cambiando el formato que usamos la mayoría de dd/mm/aaaa al formato americano mm/dd/aaaa, es decir si colocas en la fecha desde: #01/09/2009# se va cambiar a formato americano primero el mes, después el día y por ultimo el año es decir: #9/1/2009# igual ocurre con la fecha hasta: #30/09/2009# cambia a #9/30/2009#.
En realidad debería de aplicarse el filtro sin problema, ahora si quieres que se pueda cargar las fecha a través de una instrucción llamada "INPUTBOX", voy a ser las pruebas y cuando lo tenga listo te lo envío
En realidad debería de aplicarse el filtro sin problema, ahora si quieres que se pueda cargar las fecha a través de una instrucción llamada "INPUTBOX", voy a ser las pruebas y cuando lo tenga listo te lo envío
Referente a que me pruebes lo del INPUTBOX, muchas gracias.
Y referente a lo de la fecha, ya entiendo porque pasa, pero debería a ver alguna manera para que eso no pase, ya que si me saca las fechas cambiadas, sí yo lo se pero como de los datos filtrados saco tablas dinámicas y otros datos, es un lio... si hubiera la forma de que me no me trasformase el formato de fecha seria perfecto.
Muchas gracias,
(xxxxxx)
Y referente a lo de la fecha, ya entiendo porque pasa, pero debería a ver alguna manera para que eso no pase, ya que si me saca las fechas cambiadas, sí yo lo se pero como de los datos filtrados saco tablas dinámicas y otros datos, es un lio... si hubiera la forma de que me no me trasformase el formato de fecha seria perfecto.
Muchas gracias,
(xxxxxx)
Ya tengo una solución al problema dedes seguir estos pasos:
Primero espero que no hayas quitado la barra de vba que al principio activaste para poder colocar las funciones, si la quitaste vuelve a seguir los pasos que te indique para que aparezca.
Una vez que tengas la barra de vba visible en la hoja donde insertaste el botón en la celda "AO", busca en la barra de vba el icono que tiene unas regla y un lápiz que cuando pasas el cursor del ratón aparece la etiqueta de ayuda "Modo de Diseño" (Design Mode), le das clic una vez y luego le das clic al botón insertado en la celda "AO", luego le das botón derecho del ratón y seleccionas la opción "Ver Código" (View Code).
Borra la linea de código:
Call pasar_registros("Sheet1", "Sheet2", #9/1/2009#, #9/30/2009#, 31)
Y coloca este código:
Dim msg, titulo, inicio, final, valor1, valor2
Dim desde As Date
Dim hasta As Date
inicio = DateSerial(Year(Now), Month(Now) + 0, 1)
final = DateSerial(Year(Now), Month(Now) + 1, 0)
titulo = "Rango de Fechas"
msg = "Coloque la fecha desde en formato dd/mm/aaaa: "
valor1 = InputBox(msg, titulo, inicio)
msg = "Coloque la fecha hasta en formato dd/mm/aaaa: "
valor2 = InputBox(msg, titulo, final)
If IsDate(valor1) And IsDate(valor2) Then
desde = CDate(valor1)
hasta = CDate(valor2)
Call pasar_registros("Sheet1", "Sheet2", desde, hasta, 31)
Else
MsgBox "Error en las fechas desde y hasta por favor vuelva a intentarlo...", vbCritical, "Mensaje de Error"
End If
Este rutina te permite tener 2 inputbox para cargar las fechas desde y hasta que tendrán como valores iniciales el primer día y el ultimo día del mes correspondiente a la fecha activa que tengas en tu windows, cuando cambien el mes cambiaran los valores iniciales automáticamente.
Prueba la rutina espero que te sea útil...
Primero espero que no hayas quitado la barra de vba que al principio activaste para poder colocar las funciones, si la quitaste vuelve a seguir los pasos que te indique para que aparezca.
Una vez que tengas la barra de vba visible en la hoja donde insertaste el botón en la celda "AO", busca en la barra de vba el icono que tiene unas regla y un lápiz que cuando pasas el cursor del ratón aparece la etiqueta de ayuda "Modo de Diseño" (Design Mode), le das clic una vez y luego le das clic al botón insertado en la celda "AO", luego le das botón derecho del ratón y seleccionas la opción "Ver Código" (View Code).
Borra la linea de código:
Call pasar_registros("Sheet1", "Sheet2", #9/1/2009#, #9/30/2009#, 31)
Y coloca este código:
Dim msg, titulo, inicio, final, valor1, valor2
Dim desde As Date
Dim hasta As Date
inicio = DateSerial(Year(Now), Month(Now) + 0, 1)
final = DateSerial(Year(Now), Month(Now) + 1, 0)
titulo = "Rango de Fechas"
msg = "Coloque la fecha desde en formato dd/mm/aaaa: "
valor1 = InputBox(msg, titulo, inicio)
msg = "Coloque la fecha hasta en formato dd/mm/aaaa: "
valor2 = InputBox(msg, titulo, final)
If IsDate(valor1) And IsDate(valor2) Then
desde = CDate(valor1)
hasta = CDate(valor2)
Call pasar_registros("Sheet1", "Sheet2", desde, hasta, 31)
Else
MsgBox "Error en las fechas desde y hasta por favor vuelva a intentarlo...", vbCritical, "Mensaje de Error"
End If
Este rutina te permite tener 2 inputbox para cargar las fechas desde y hasta que tendrán como valores iniciales el primer día y el ultimo día del mes correspondiente a la fecha activa que tengas en tu windows, cuando cambien el mes cambiaran los valores iniciales automáticamente.
Prueba la rutina espero que te sea útil...
Disculpa olvide algo muy importante en el código que debes colocar el botón deje los nombres de las hojas origen y destino en ingles "Sheet1" y "Sheet2" debes cambiarlas a los nombre que tu utilizasa imagino que son "Hoja1" y "Hoja2", debe quedar así:
Dim msg, titulo, inicio, final, valor1, valor2
Dim desde As Date
Dim hasta As Date
inicio = DateSerial(Year(Now), Month(Now) + 0, 1)
final = DateSerial(Year(Now), Month(Now) + 1, 0)
titulo = "Rango de Fechas"
msg = "Coloque la fecha desde en formato dd/mm/aaaa: "
valor1 = InputBox(msg, titulo, inicio)
msg = "Coloque la fecha hasta en formato dd/mm/aaaa: "
valor2 = InputBox(msg, titulo, final)
If IsDate(valor1) And IsDate(valor2) Then
desde = CDate(valor1)
hasta = CDate(valor2)
Call pasar_registros("Hoja1", "Hoja2", desde, hasta, 31)
Else
MsgBox "Error en las fechas desde y hasta por favor vuelva a intentarlo...", vbCritical, "Mensaje de Error"
End If
Dim msg, titulo, inicio, final, valor1, valor2
Dim desde As Date
Dim hasta As Date
inicio = DateSerial(Year(Now), Month(Now) + 0, 1)
final = DateSerial(Year(Now), Month(Now) + 1, 0)
titulo = "Rango de Fechas"
msg = "Coloque la fecha desde en formato dd/mm/aaaa: "
valor1 = InputBox(msg, titulo, inicio)
msg = "Coloque la fecha hasta en formato dd/mm/aaaa: "
valor2 = InputBox(msg, titulo, final)
If IsDate(valor1) And IsDate(valor2) Then
desde = CDate(valor1)
hasta = CDate(valor2)
Call pasar_registros("Hoja1", "Hoja2", desde, hasta, 31)
Else
MsgBox "Error en las fechas desde y hasta por favor vuelva a intentarlo...", vbCritical, "Mensaje de Error"
End If
Disculpalme por olvidar el detalle de las fechas utiliza este código que tiene el Format para las fechas desde y hasta:
Dim msg, titulo, inicio, final, valor1, valor2
Dim desde As Date
Dim hasta As Date
inicio = DateSerial(Year(Now), Month(Now) + 0, 1)
final = DateSerial(Year(Now), Month(Now) + 1, 0)
titulo = "Rango de Fechas"
msg = "Coloque la fecha desde en formato dd/mm/aaaa: "
valor1 = InputBox(msg, titulo, Format(inicio, "dd/mm/yyyy"))
msg = "Coloque la fecha hasta en formato dd/mm/aaaa: "
valor2 = InputBox(msg, titulo, Format(final, "dd/mm/yyyy"))
If IsDate(valor1) And IsDate(valor2) Then
desde = CDate(valor1)
hasta = CDate(valor2)
Call pasar_registros("Hoja1", "Hoja2", desde, hasta, 31)
Else
MsgBox "Error en las fechas desde y hasta por favor vuelva a intentarlo...", vbCritical, "Mensaje de Error"
End If
Dim msg, titulo, inicio, final, valor1, valor2
Dim desde As Date
Dim hasta As Date
inicio = DateSerial(Year(Now), Month(Now) + 0, 1)
final = DateSerial(Year(Now), Month(Now) + 1, 0)
titulo = "Rango de Fechas"
msg = "Coloque la fecha desde en formato dd/mm/aaaa: "
valor1 = InputBox(msg, titulo, Format(inicio, "dd/mm/yyyy"))
msg = "Coloque la fecha hasta en formato dd/mm/aaaa: "
valor2 = InputBox(msg, titulo, Format(final, "dd/mm/yyyy"))
If IsDate(valor1) And IsDate(valor2) Then
desde = CDate(valor1)
hasta = CDate(valor2)
Call pasar_registros("Hoja1", "Hoja2", desde, hasta, 31)
Else
MsgBox "Error en las fechas desde y hasta por favor vuelva a intentarlo...", vbCritical, "Mensaje de Error"
End If
- Compartir respuesta
- Anónimo
ahora mismo
1 respuesta más de otro experto
Respuesta de Programar Excel
0
0
http://www.programarexcel.com/2013/03/informe-busca-entre-fecha-y-fecha.html
Hola mira este ejemplo quizás se adapte a lo que necesitas.
- Compartir respuesta
- Anónimo
ahora mismo