Macros para una table de números y fechas

Desearía saber si puedo usar macros para una tabla de datos donde hay fechas, es decir un mes y año y cada mes y año un dato numérico con cinco decimales, de tal manera que al aplicar macro para poder ubicar el número de algún mes y año solo tenga que introducir el mes y año para que el dato numérico de cinco decimales surja. ¿Se podrá hacer? Uso excel 2003 y nunca he usado las macros. La quisiera usar desde el año 1950 enero hasta diciembre 2008.
Gracias por la atención

1 Respuesta

Respuesta
1
Explicame como tienes los datos ingresados( columnas ) y tipo de dato
                                    A                          B                               C
Fila 1 ENERO 1989 123,12345
Aclarame si es así o tu lo corriges. Como se llama la hoja donde están (la hoja no el Libro) y a que lugar quieres llevar los datos. Si tienes datos en blanco en las fechas me tienes que decir cuantas filas tenemos que comprobar si no existen datos en blanco no es necesario.
>Un saludo
>Julio
Excelente amigo te explico=
en una pèstaña quisiera tener el siguiente cuadro;
                  A B C D E F G
Fila 1 año ene feb marz abrl may .hasta dic.
FILA 2 1950 NUM NUM NUM NUM NUM NUM
FILA 3 1951
FILA 4 1952
FILA 58 2008
Así sucesivamente hasta el año 2008. En cada celda incluiré un numero con 5 decimales
una vez hecha esta tabla en otra pestaña de excel incluiré la fecha que deseo
tomar de este cuadro, por ejemplo si escribo 01-1996 quisiera que automáticamente
surgiera el numero que incoporo en esta tabla.
La tabla con estos datos la llamaría IPNC y la pestaña donde llevaría estos datos se llamaría EDOFIN. En EDOFIN al escribir la fecha debería surigr automáticamente el numero aquí guardado.
Claro no se si en la misma pestaña de excle puedo tenr tanto la tabla como los cuadros
numéricos que deseo fabricar con la misma.
Alguna otra explicación con mucho gusto.
Muy agradecido
10-07-09
De acuerdo, mira abres tu Libro de Excel pulsas Alt+F11 y en la ventana de VBA pulsas en el icono Hoja2 de la columna de la izquierda doble click y en la ventana en blanco que se abre en la derecha copias y pegas esta macro:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then
If Target.Address <> "$A$1" Then
mes0 = Target.Text
mes2 = Mid(mes0, 2, 1)
mes1 = Left(mes0, 1)
mes = Left(mes0, 2)
año = Right(mes0, 4)
Sheets("Hoja1").Select
ActiveSheet.Range("A1").Select
ActiveCell.End(xlDown).Select
ActiveSheet.Range(ActiveCell, "A1").Select
On Error Resume Next
 Selection.Find(What:=año, After:=ActiveCell, LookIn:=xlFormulas, _
        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False).Activate
If mes1 = 0 Then
ActiveCell.Offset(0, mes2).Copy
Sheets("Hoja2").Select
ActiveCell.Offset(-1, 1).PasteSpecial
Else
ActiveCell.Offset(0, mes1).Copy
Sheets("Hoja2").Select
ActiveCell.Offset(-1, 1).PasteSpecial
End If
If mes1 <> 0 Then
ActiveCell.Offset(0, mes2).Copy
Sheets("Hoja2").Select
ActiveCell.Offset(-1, 1).PasteSpecial
End If
End If
End If
ActiveCell.Offset(1, -1).Select
End Sub
Ahora después de tener llena tu hoja1 con los datos según los has puesto, vas a la Hoja2 y en la Col A a partir de la celda A2 escribes una fecha en el formato que has puesto ejemplo: 08-1998, 11-2005 etc
En la celda contigua Col B te escribirá el dato que corresponda con el mes de las 2 primeras cifras 08 (Agosto) 11(Noviembre)... que corresponda con el año introducido en los 4 últimos caracteres 1998, 2005 etc...
Si te ha servido puntúa y finaliza la consulta, un comentario siempre es bienvenido. Gracias.
>Un saludo
>Julio
PD: No hace distinción del dato a mostrar da igual lo que pongas en valores de los meses pero lo único que tienes que hacer es en la hoja2 en la Col A dar formato a todas las celdas como formato Texto.
Seleccionas un rango de la Col A y con el derecho eliges formato de celdas y en la pestaña Numero elige Texto y aceptas.
Hola amigo,
Me tranque,,, no me funciono, te narrare lo que hice para que evalúes en donde tengo la falla y te indicare las dudas que me han surgido:
1-Leí tu honorable respuesta
2-Abri   Excel 2003 y   tengo abiertouna hoja de calculo llamada libro 1  con tres pestañas hoja1  hoja2 hoja3.
3-pulse ALT F11  Y surgio una ventana intitulada microsoft visual basic
4-A la izquierda de la pantalla una columna intitulada proyecto VBAProject
y debajo unas filas con los títulos Hoja1(hoja1) Hoja2(hoja2) Hoja3(hoja3) y thisworkbook
5-Pulse doble click en la hoja2, salio una ventana en blanco
6-sombree y copie la macro indicada desde donde dice private sub  hasta donde dice
end sub. la pegue  en la hoja2.
7-Aquí tengo una confusión,,, Cual hoja1 usa para llenar los datos de las 58 filas ( años desde 2007 hasta1950) y por doce columnas, ¿meses de enero hasta diciembre la señalada en VBA o la que esta en l ahoja de calculo libro 1?
Use dos opciones, llene los datos en la hoja1(hoja1) de VBA y se desordenaron mucho así que los ordene de tal forma que las unidades de mil y décimas estén bien ubicadasverticalmente, imaginate 58*12 =696 datos numéricos, el nombre de los meses lo escribí completo, osea enero,, febrero marzo,,, etc hasta diciembre, no se si debo abreviarlos o escribirlos como numero,, 01, 02,03,,, ¿12? Ne este caso no se cual es la columna A celda A2 porque en este recuadro en blanco no tiene filas ni columnas.
En la segunda opción, use la hoja1 de la hoja de calculo libro1 y ali si tengo filas y columnas al escribir la fecha, ejemplo diciembre 2007 así mismo o 12-2007, aparecía la fecha pero en la columna contigua nada se oberva. Le puse formato texto en la columna de la fecha y aun así nada.
Puedo asignarle un nombre a esta hoja de trabajo libro 1 o a la VBA, ¿cómo le hago para asignarle un nombre o no debo asignarle nombre alguno? Y cual hoja1 debo usar la de VBA que no tiene nombre de filas y columnas o la hoja de calculo que se abre cuando inicio excel version 2003.?
Si te parece te envío la tabla que tengo para que la visualices mejor no se,,,
lamento molestarte amigo.
Su pudieras ayudarme
Saludos
Ya me temía los errores, al conjunto de Hojas (pestañas) en Excel se le denomina Libro y a las pestañas Hoja, por lo tanto cuando definimos Hoja1 de Excel se entiende que hablamos de un Libro (nombre indiferente) Hoja1 de ese Libro, porque Hoja de Calculo de Excel es una de las pestañas de cada Libro. De hecho cuando elegimos del menú insertar aparece Hoja de Calculo y crea una nueva pestaña.
Bueno pues en esto ha radicado el error, yo la macro te la he creado para el mismo Libro de Excel, tu tendrás una Hoja que habrás denominado (el nombre que sea) y yo en la Hoja2 de ese mismo Libro es donde he colocado la macro.
Pero tú tienes tu base de datos en un Libro llamado Libro1 y has pretendido que desde otro Libro (Libro2, Hoja2) funcionase la macro y por lo tanto no funciona.
1º Abre tu libro donde tienes la Base de Datos, en ese Libro tienes que tener la Hoja2 vacía
2º Pulsas Alt+F11 y se abre el editor de VBA
3º Doble click en el icono de la columna de izquierda Hoja2
4º En la ventana en blanco copias y pegas la macro
5º Guardas y cierras el editor de VBA, situándote en la Hoja 2 de ese Libro
6º En la col A a partir de la celda A2 seleccionas un rango hacia abajo por ejemplo de 50 filas(si vas a necesistar más pues más seleccionas)
7º Pulsas botón derecho y eleiges formato de celdas y en la pestaña Numero eliges Texto y aceptas.
8º Ahora en la Col A celda A2 ya pues escribir por ejemplo 10-1995 y en la celda contigua de la Col B te pondrá el valor que tiene la Base de Datos de la Hoja1 (OJO la Base de Datos la pestaña sebe de ser de nombre Hoja1) en el mes de Octubre del año 1995.
En lo referente a modificar tu base los nombres de los meses es indiferente Si lo tienes en nombre completo pues bien, te explico como funciona la macro para que te enteres de lo que estas haciendo:
Cuando tu escribes 10-1995 en una celda en la Hoja2 Col A la macro recoge en una variable lo que tu has escrito, lo descompone en 4 datos:
Mes0= se corresponde con el texto escrito 10-1995
mes1=se corresponde con el primer dígito en este caso 1
mes2= se corresponde con los 2 primeros dígitos en este caso 10
mes3= se corresponde con el 2º dígito en este caso 0
año=se corresponde con los 4 últimos dígitos en este caso 1995
Con la variable año (1995) se va a la Hoja1 se sitúa en la Col A y busca el año situándose en él.
Ahora comienza el análisis, si mes1=0 es un mes entre el 1 y el 9 por lo tanto necesito utilizar el 2º dígito porque el primero es 0 y entonces utilizo la variable mes3
Como en este caso mes1 no es 0 utilizo la variable mes2 que contiene dos dígitos sin que el primero sea 0 en este caso 10 y lo que hago es desplazarme 10 columnas a la derecha para tomar el valor que coincide con 1995 y Octubre, lo copio me voy a la hoja2 y en la celda Activa te pongo a la derecha el valor que traigo de Octubre 1995.
Por eso me da igual como tengas los nombres de los meses yo me voy a mover en función de los números(celdas a la derecha) según las introduzcas en la Hoja2.
Espero haberme explicado y que no te haya hecho un lio mayor. Si necesitas algo más de esta consulta me lo dices.
>Un saludo
>Julio
Hola amigo julio, usted vale oro
¿Podría enviarte la hoja de calculo que deseo automatizar para que la visualices mejor? En la Hoja2 escribí =01-2007 y suazz surgió el numero deseado, y así sucesivamente hasta 05-2007 la celda en columna B quedo en blanco, y estuve probando varios años para evaluar el efecto y note que al escribir 10-11 y 12 nada sale en la celda contigua.
Desde el año 2006 hacia abajo osea hasta 1950 no se aprecian los números sino el nombre del mes en la celda contigua osea en la columna B.
AL libro le deje el titulo Libro2 para evitar más confusiones y temor en que no me funcionase el trabajo.
Espero tu s.o.s. saludos amigo julio
12-07-09
Un pequeño error con tantas variables efectivamente para el caso de que el 1º valor del mes no fuese 0 puse otra variable como referencia, quedaría así:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim mes0 As String
Dim  mes, mes1, mes2, año As Integer
On Error Resumen Next
If Target.Column = 1 Then
If Target.Address <> "$A$1" Then
mes0 = Target.Text
mes2 = Mid(mes0, 2, 1)
mes1 = Left(mes0, 1)
mes = Left(mes0, 2)
año = Right(mes0, 4)
Sheets("Hoja1").Select
ActiveSheet.Range("A1").Select
ActiveCell.End(xlDown).Select
ActiveSheet.Range(ActiveCell, "A1").Select
On Error Resume Next
 Selection.Find(What:=año, After:=ActiveCell, LookIn:=xlFormulas, _
        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False).Activate
If mes1 = 0 Then
ActiveCell.Offset(0, mes2).Copy
Sheets("Hoja2").Select
ActiveCell.Offset(-1, 1).PasteSpecial
Else
ActiveCell.Offset(0, mes).Copy
Sheets("Hoja2").Select
ActiveCell.Offset(-1, 1).PasteSpecial
End If
End If
End If
ActiveCell.Offset(1, -1).Select
End Sub
Ya está cambia la otra macro por esta y pruebas, si ya funciona pues finaliza, puntúa y comenta la consulta. Gracias.
>Un saludo
>Julio
Hola amigo
Hoy fue cunado pude hacer la prueba con la nueva fórmula
funciono hasta el mes 09-2007, el resto de los años,, solo sale el mes en la columna contigua.
Esta seria la tabla hasta diciembre y hasta el año 1950, con la posibilidad de incluir los años 2008 y 2009 así sucesivamente.
A B C D E F G...
           Enero Febrero Marzo Abril Mayo Junio...
2007 627,12843 635,72636 631,02834 639,92584 651,02215 662,51920
2006 529,74374 527,84196 532,64004 535,94241 544,64076 554,73840
2005 468,44844 469,24949 474,95087 481,25347 493,45325 496,25113
2004 395,36114 401,56040 410,15781 415,55549 420,45489 428,25433
2003 312,26704 329,46671 331,96736 337,46806 345,26695 350,06616
2002 233,37562 237,57405 247,57354 252,17258 255,70000 260,87225
Gracias amigo
Espero tu ayuda
13-07-2009
La macro funciona correctamente independiente del año que utilices ya te lo explique si encuentra el año se desplaza a la derecha en función de del mes que haya puesto, si has puesto 09-2007, buscara en tu hoja1 el año 2007 se desplazará hasta la Col 9 a la derecha y copiará el valor y te lo llevará a la Hoja2 el valor que tenga el mes de Septiembre.
Analiza tu hoja porque algo tienes mal si funciona todos los años y todos los meses no tiene sentido que si los valores en las celdas están bien no funcione.
Compreba y me cuentas.
>Un saludo
>Julio
PD: También esta consulta debes de puntuarla y finalizarla.
Hola amigo
En esta fecha incorpore la macro de fecha 12-07-09. Y sale un mensaje en VBA que dice_Error de compilación Error de sintaxis y sombre la rutina " On Error Resumen Next " Al introducir la fecha Enero 2007 así, 01-2007, suaz sale ese mensaje, probé con otras fechas e igualmente sale el mismo error.
Aprecio tu ayuda.
25-07-2009
Ponme un correo y te solicitaré el archivo, me temo que hay algo en tu archivo que no me estas aclarando.
>Un saludo
>Julio

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas