Crear una base de datos

23/03/2009 - 18:29 por José Rafael | Informe spam
Necesito crear una base de datos en la hoja "Base" de un libro excel llamado
"Carpinterias", cuya hoja1 contiene en la columna A:A la lista de nombres de
pueblos que corresponde exactamente a las hojas o pestañas restantes del
libro.
Al abrir cada hoja o pestaña (que corresponde al nombre del pueblo), el dato
de la carpinteria o carpinterias se encuentran en las cuatro primeras filas
de cada columna, es decir: A1=Nombre; A2=Dirección; A3=Población; A4=
teléfono.
Si hubiera mas de una carpinteria en ese pueblo (hoja) la siguiente
carpinteria estaría en la columna B y así sucesivamente, la tercera en la
columna C, etc...
Sería de agradecer un código que vaya recorriendo todas las hojas y
escribiendo en la hoja "Base" (x filas en horizontal) los 4 datos que
figuran en las cuatro primeras filas de cada columna empezando por la
columna A y "recorriera" la siguiente columna B por si hubiera mas datos y
asi sucesivamente hasta que no encontrara mas datos y entonces pasara a la
siguiente hoja.
El objetivo es tener los datos agrupados en una sola hoja llamada "Base".
Ideal es tener un botón asociado al código VBA, en la hoja "Base" que ponga
en marcha la macro.
Tengo 5 libros distintos por provincias y de ellos, hay libros que pueden
tener 100 o mas hojas y en cada una de ellas al menos una carpinteria
(columna A, cuatro primeras filas).
Saludos
José Rafael de Valencia (España)

Preguntas similare

Leer las respuestas

#1 pepe
23/03/2009 - 19:16 | Informe spam
Creo que te complicas. el planteamiento de la solución es incorrecta (o eso
creo). Lee la respuesta que le he dado a la consulta 'todas las hojas de un
libro'.


"José Rafael" escribió en el mensaje de noticias
news:
Mostrar la cita
#2 Héctor Miguel
24/03/2009 - 03:24 | Informe spam
hola, José Rafael !

asegurate que la hoja ("base" ?) para tu resumen sea la primera en el orden/indice de hojas en ese libro
y prueba con una macro +/- como la siguiente (ya decidiras si la asignas a algun objeto/atajo/...)

Sub Carpinterias()
Dim n As Byte, Col As Byte, Carp As Byte
Application.ScreenUpdating = False
For n = 2 To Worksheets.Count
With Worksheets(n)
For Col = 1 To .Range("iv1").End(xlToLeft).Column
Carp = Carp + 1
Cells(1, Carp).Resize(4).Value = .Cells(1, Col).Resize(4).Value
Next
End With
Next
End Sub

saludos,
hector.

__ OP __
Mostrar la cita
#3 José Rafael
24/03/2009 - 13:23 | Informe spam
Hola Héctor:
He probado la macro y funciona pero me coloca los datos en la hoja "base"
columna a columna, en las cuatro filas como están en cada hoja sucesiva del
libro y lo que yo quiero es que me coloque los cuatro datos en columnas
sucesivas de la hoja "base", es decir "transpuestos" y que cada fila
corresponda a una carpinteria. Así:
Ramirez Perez, A. C/ Maisonave, 42 46000 - Alacuas (VALENCIA)
Telefono: 909999099

Espero me haya podido explicar...
Saludos
José Rafael




"Héctor Miguel" escribió en el mensaje
news:
Mostrar la cita
#4 Héctor Miguel
25/03/2009 - 02:38 | Informe spam
ola, José Rafael !

Mostrar la cita
solo cambia del codigo anteiror
esta parte:

Carp = Carp + 1
Cells(1, Carp).Resize(4).Value = .Cells(1, Col).Resize(4).Value

por esta otra:

Carp = Carp + 1
Cells(Carp, 1).Resize(, 4).Value = .Cells(1, Col).Resize(4).Value

saludos,
hector.
#5 José Rafael
25/03/2009 - 11:57 | Informe spam
Hola Héctor:
Los datos de cada hoja del libro son por columnas: Fila 1 = Nombre, filas 2=
Dirección, Fila 3 = Población, Fila 4= Teléfono.
Con el cambio propuesto me escribe en sucesivas filas horizontales el primer
dato de cada carpinteria (Fila 1) en las cuatro columnas. A,B,C y D
Lo que necesito es que el segundo dato (Fila 2) me lo ponga en la columna B,
el tercero (Fila 3) en la C y el cuarto (Fila 4) en la D. > (Todos en la
misma fila del la hoja "base") y así sucesivamente por filas ...
Sé que debe ser muy fácil, pero no sé hacerlo. Disculpas y gracias por tu
ayuda.

Jose Rafael


"Héctor Miguel" escribió en el mensaje
news:
Mostrar la cita
Ads by Google
Search Busqueda sugerida