Crear hojas con los datos de cada fila

21/08/2006 - 00:44 por martin | Informe spam
Hola a todos, estoy intentando hacer una hoja de cada fila de una hoja
"master" que tengo:


conductor km lts eur ruta dias

C1 13,5 0,9 14 9 3
C2 23,4 0,7 0.9 22 3
C3 33,5 4,4 12 12 3
C4 65,2 2,1 0.8 9 9
C5 21,5 0,7 9 7 14
.
.
.
.
.
.
.
.
Son 84 las filas hasta C84. La pregunta es:

¨Hay alguna forma de hacer de cada fila una hoja nueva en el mismo libro de
la "master", o en otro me da igual, de manera que tenga el nombre clave de
cada conductor?

Es decir el resultado serian 84 hojas de dos filas, una de encabezamiento y
una de datos. Es que hacer insertar hoja nueva, renombrar, copiar fila y
pegar me parece una labor de chinos sobre todo porque tendre que repetirla
cada semana. Una ayuda se agradecera mucho.

Salu2. Martin.

Preguntas similare

Leer las respuestas

#11 martin
22/08/2006 - 10:17 | Informe spam
Hola Francisco, la columna A de la hoja "master", la de conductores,
siempre es la misma (bueno se da de alta y de baja alguno de vez en cuando,
pero basicamente, es la misma). Lo que cambia cada dia son los
kilometrajes, costos y rutas de acuerdo a las formulas correspondientes.
Cada dia esos datos cambian y a fin de dia paso los datos de cada uno a su
hoja correspondiente (creadas con tu codigo) a continuacion de la fila del
dia anterior..

Tu macro hace dos cosas, crea con el nombre de cada celda de la columna A
una hoja independiente, y pasa los datos de la fila correspondiente a esa
hoja.

Lo que me gustaria es que se pudiera ejecutar de modo independiente esa
parte del codigo que copia la fila en la hoja correspondiente, para no
hacerlo a mano cada dia fila por fila. Se trata de que cada hoja de cada
conductor tenga sus datos dia por dia.
Se hace un poco dificil de explicar,

Gracias por tu atencion.

Salu2. Martin.

A que te refieres con esta linea "si cambio filas en la hoja master ",
pretendes seleccionar mas de una linea ?

Posiblemente de te un error por que no tienes iniciado la coleccion de
valors que son los datos seleccnados de la columna, podrias dar mas
detalles de lo que buscas.

Saludos



Respuesta Responder a este mensaje
#12 Francisco Parrilla
22/08/2006 - 23:21 | Informe spam
Prueba esta rutina:
Este codigo copia los datos desde la celda A2 hasta An en la ultima posicion
de la hoja en cuestion.
No se si sea lo que buscas :)

Sub nuevos_datos()
Dim can As Integer
can = Worksheets.Count
If can = 1 Then Exit Sub
Sheets(1).Select
Range(Cells(2, 1), Cells.End(xlDown)).Select
hoja = 1
For Each xcell In Selection
hoja = hoja + 1
Sheets(1).Select
Rows(xcell.Row).Select
Selection.Copy Sheets(hoja).Range("A65536").End(xlUp).Offset(1, 0)
Next xcell
End Sub


Sub hojas()
Dim valors As New Collection
Sheets(1).Select
Range("a2").Select
Range(Cells(2, 1), Cells.End(xlDown)).Select
For Each xcell In Selection
valors.Add xcell
Sheets.Add after:=Worksheets(Sheets.Count)
Worksheets(Sheets.Count).Name = xcell.Value
Next xcell
'Recorrer las hojas y pegar los valores
For i = 1 To valors.Count
Sheets(1).Select
Rows(1).Select
if sheets(i+1).range("a1") >< "" then Selection.Copy Sheets(i +
1).Range("A1")
Rows(i + 1).Select
Selection.Copy Sheets(i + 1).Range("A65536").End(xlUp).Offset(1, 0)
Next i
End Sub
Respuesta Responder a este mensaje
#13 MarianoB
22/08/2006 - 23:50 | Informe spam
Hola Francisco
probando tu código me surge un problema (no por el código sino porque
he modificado las condiciones iniciales a partir de las cuales se ha
creado)
Si tengo la siguiente tabla:
conductor kilometros kilos
a 1 3
b 2 4
c 3 5
d 4 6
e 5 7
f 6 8
e 7 9
cuando se va a renombrar por segunda vez una hoja como "e" indica que
no puede por que ya existe otra con el mismo nombre.¿como se puede
comprobar antes de: Worksheets(Sheets.Count).Name = xcell.Value
que ya existe una hoja con ese nombre para que no aparezca el
error?¿se revisa cada valor de la coleccion para que solo existan
valores unicos?

Muchas gracias





Francisco Parrilla ha escrito:

Prueba esta rutina:
Este codigo copia los datos desde la celda A2 hasta An en la ultima posicion
de la hoja en cuestion.
No se si sea lo que buscas :)

Sub nuevos_datos()
Dim can As Integer
can = Worksheets.Count
If can = 1 Then Exit Sub
Sheets(1).Select
Range(Cells(2, 1), Cells.End(xlDown)).Select
hoja = 1
For Each xcell In Selection
hoja = hoja + 1
Sheets(1).Select
Rows(xcell.Row).Select
Selection.Copy Sheets(hoja).Range("A65536").End(xlUp).Offset(1, 0)
Next xcell
End Sub


Sub hojas()
Dim valors As New Collection
Sheets(1).Select
Range("a2").Select
Range(Cells(2, 1), Cells.End(xlDown)).Select
For Each xcell In Selection
valors.Add xcell
Sheets.Add after:=Worksheets(Sheets.Count)
Worksheets(Sheets.Count).Name = xcell.Value
Next xcell
'Recorrer las hojas y pegar los valores
For i = 1 To valors.Count
Sheets(1).Select
Rows(1).Select
if sheets(i+1).range("a1") >< "" then Selection.Copy Sheets(i +
1).Range("A1")
Rows(i + 1).Select
Selection.Copy Sheets(i + 1).Range("A65536").End(xlUp).Offset(1, 0)
Next i
End Sub
Respuesta Responder a este mensaje
#14 martin
23/08/2006 - 00:34 | Informe spam
Muchas gracias por todo Francisco. No, no es lo que necesito, pero ya lo
he solucionado con 84 macros simples de este tipo:

Windows("master.xls").Activate
Range("B2:AU2").Select
Selection.Copy
Sheets("CD1").Select
Range("B" & Rows.Count).End(xlUp).Offset(1, 0).Select
ActiveSheet.Paste

Sheets("eval").Select
Range("B3:AU3").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("CD2").Select
Range("B" & Rows.Count).End(xlUp).Offset(1, 0).Select
ActiveSheet.Paste

Sheets("eval").Select
Range("B4:AU4").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("CD3").Select
Range("B" & Rows.Count).End(xlUp).Offset(1, 0).Select
ActiveSheet.Paste

Sheets("eval").Select
Range("B5:AU5").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("CD4").Select
Range("B" & Rows.Count).End(xlUp).Offset(1, 0).Select
ActiveSheet.Paste

y asi hasta CD84. Me ha llevado un buen rato, pero quien no sabe usar una
sierra electrica ha de usar un serrucho. Me hubiera gustado ver como se
hacia de una forma sencilla de esas de Next i, pero asi me arreglo.
Gracias por todo.



Salu2. Martin.


Prueba esta rutina:
Este codigo copia los datos desde la celda A2 hasta An en la ultima
posicion de la hoja en cuestion.
No se si sea lo que buscas :)

Sub nuevos_datos()
Dim can As Integer
can = Worksheets.Count
If can = 1 Then Exit Sub
Sheets(1).Select
Range(Cells(2, 1), Cells.End(xlDown)).Select
hoja = 1
For Each xcell In Selection
hoja = hoja + 1
Sheets(1).Select
Rows(xcell.Row).Select
Selection.Copy Sheets(hoja).Range("A65536").End(xlUp).Offset(1, 0)
Next xcell
End Sub
-

Sub hojas()
Dim valors As New Collection
Sheets(1).Select
Range("a2").Select
Range(Cells(2, 1), Cells.End(xlDown)).Select
For Each xcell In Selection
valors.Add xcell
Sheets.Add after:=Worksheets(Sheets.Count)
Worksheets(Sheets.Count).Name = xcell.Value
Next xcell
'Recorrer las hojas y pegar los valores
For i = 1 To valors.Count
Sheets(1).Select
Rows(1).Select
if sheets(i+1).range("a1") >< "" then Selection.Copy Sheets(i +
1).Range("A1")
Rows(i + 1).Select
Selection.Copy Sheets(i + 1).Range("A65536").End(xlUp).Offset(1, 0)
Next i
End Sub



Respuesta Responder a este mensaje
#15 martin
23/08/2006 - 02:40 | Informe spam
Hola MarianoB, yo encontre algo que a lo mejor puede servirte, es este
fichero: AdvFilterRep.zip y esta en esa pagina:

http://www.contextures.com/excelfiles.html


Salu2. Martin.





Hola Francisco
probando tu código me surge un problema (no por el código sino porque
he modificado las condiciones iniciales a partir de las cuales se ha
creado)
Si tengo la siguiente tabla:
conductor kilometros kilos
a 1 3
b 2 4
c 3 5
d 4 6
e 5 7
f 6 8
e 7 9
cuando se va a renombrar por segunda vez una hoja como "e" indica que
no puede por que ya existe otra con el mismo nombre.¿como se puede
comprobar antes de: Worksheets(Sheets.Count).Name = xcell.Value
que ya existe una hoja con ese nombre para que no aparezca el
error?¿se revisa cada valor de la coleccion para que solo existan
valores unicos?

Muchas gracias





Francisco Parrilla ha escrito:

Prueba esta rutina:
Este codigo copia los datos desde la celda A2 hasta An en la ultima
posic


ion
de la hoja en cuestion.
No se si sea lo que buscas :)

Sub nuevos_datos()
Dim can As Integer
can = Worksheets.Count
If can = 1 Then Exit Sub
Sheets(1).Select
Range(Cells(2, 1), Cells.End(xlDown)).Select
hoja = 1
For Each xcell In Selection
hoja = hoja + 1
Sheets(1).Select
Rows(xcell.Row).Select
Selection.Copy Sheets(hoja).Range("A65536").End(xlUp).Offset(1, 0)
Next xcell
End Sub
-


Sub hojas()
Dim valors As New Collection
Sheets(1).Select
Range("a2").Select
Range(Cells(2, 1), Cells.End(xlDown)).Select
For Each xcell In Selection
valors.Add xcell
Sheets.Add after:=Worksheets(Sheets.Count)
Worksheets(Sheets.Count).Name = xcell.Value
Next xcell
'Recorrer las hojas y pegar los valores
For i = 1 To valors.Count
Sheets(1).Select
Rows(1).Select
if sheets(i+1).range("a1") >< "" then Selection.Copy Sheets(i +
1).Range("A1")
Rows(i + 1).Select
Selection.Copy Sheets(i + 1).Range("A65536").End(xlUp).Offset(1, 0)
Next i
End Sub



Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida