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

#1 Francisco Parrilla
21/08/2006 - 08:14 | Informe spam
Por ahi va la idea ... por ahora me retiroa descanzar :(
Saludos


Sub hojas()
Dim valors As New Collection
Dim paso
Dim v
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(i + 1).Select
Cells(2, 1).Value = valors.Item(i)
Next i
End Sub
Respuesta Responder a este mensaje
#2 martin
21/08/2006 - 10:37 | Informe spam
Hola Francisco y gracias. Al ejecutar el codigo que me pones:

-El primero me crea una hoja vacia solo para el primer conductor, con el
nombre CD1, tal como yo quiero, pero solo la primera. No pasa datos de la
fila.

-El segundo hace lo mismo pero la hoja tiene el dato a2 de la fila.

Solo se crea una hoja y solo pasa un dato :(

Alguna idea?, he encontrado un codigo que me crea las hojas en blanco, es
este:


Sub newSheet()
Dim MyRange As Range
Dim C As Range
Dim NewSheetName As String
Dim newSheet As Worksheet
Dim xLastRow As Long

xLastRow = Cells(Rows.Count, "A").End(xlUp).Row
Set MyRange = Range("A1:A" & xLastRow)

For Each C In MyRange
NewSheetName = C.Value
Set newSheet = Sheets.Add
With newSheet
.Move After:=Worksheets(Worksheets.Count)
On Error Resume Next
.Name = NewSheetName
On Error GoTo 0
End With
Next C

End Sub


Pero no me pasa los datos de cada fila a su hoja. Podria crear una macro
para cada fila-hoja pero 84 me parece un poco trabajoso, y si hubiera una
manera de hacero mas rapido lo agradeceria.

Saludos. Me gustan tus citas.

Martin.


Suponiendo que las celdas en la columna no esten vacias prueba este
codigo:

Sub hojas()
Sheets(1).Select
Range("a2").Select
Set mirng = Range(Cells(2, 1), Cells.End(xlDown))
mirng.Select
For Each xcell In Selection
Sheets.Add After:=Worksheets(Sheets.Count)
Worksheets(Sheets.Count).Name = xcell.Value
Next xcell
End Sub

Por ahora solo el agregar las hojas con los datos, :)
Atte.
?T Francisco T?
http://groups.msn.com/ExcelVbaMacrosOffice

El verdadero buscador crece y aprende, y descubre que siempre es el
principal responsable de lo que sucede.
Jorge Bucay

La oscuridad nos envuelve a todos, pero mientras el sabio tropieza en
alguna pared, el ignorante permanece tranquilo en el centro de la
estancia. Anatole France


Respuesta Responder a este mensaje
#3 Francisco Parrilla
21/08/2006 - 16:00 | Informe spam
En eso estamos, solo que por ahora tenemos unos pendientes personales y no
le puedo dedicar mas del tiempo necesario y hacer las pruebas :)
En todo caso alguien mas puede estar haciendo alguna otra sugerencia, ya
vendra.
Saludos
Respuesta Responder a este mensaje
#4 Francisco Parrilla
21/08/2006 - 16:06 | Informe spam
Revisa el post ublica el dia 18 del presente titulado "Copiar filas entre
hojas" te puede resultar muy ilustrativo. Contiene un archivo excel en caso
de que estes viendo el foro desde el outlook express.
Saludos

Atte.
?T Francisco T?
http://groups.msn.com/ExcelVbaMacrosOffice

El verdadero buscador crece y aprende, y descubre que siempre es el
principal responsable de lo que sucede.
Jorge Bucay

La oscuridad nos envuelve a todos, pero mientras el sabio tropieza en alguna
pared, el ignorante permanece tranquilo en el centro de la estancia.
Anatole France
Respuesta Responder a este mensaje
#5 Francisco Parrilla
21/08/2006 - 16:09 | Informe spam
Basicamente este es todo el condigo que contiene el archivo:
Esto te lo copia e la ultima fila de la hoja "reporte"
Sub Copiar_Filas()
Selection.Copy Sheets("Reporte").Range("A65536").End(xlUp).Offset(1, 0)
End Sub


Private Sub Worksheet_Change(ByVal Target As Excel.Range)
fil = Target.Row
col = Target.Column
If fil = Range("Dato_A_Buscar").Row And col = Range("Dato_A_Buscar").Column
Then
cod = Range("Dato_A_Buscar")
ultfil = Sheets("Matriz").Range("A65535").End(xlUp).Row
fila = 10
For i = 2 To ultfil
If Sheets("Matriz").Range("C" & i) = Range("Dato_A_Buscar") Then
fila = fila + 1
Range("A" & fila) = Sheets("Matriz").Range("A" & i)
Range("B" & fila) = Sheets("Matriz").Range("B" & i)
Range("C" & fila) = Sheets("Matriz").Range("C" & i)
Range("D" & fila) = Sheets("Matriz").Range("D" & i)
Range("E" & fila) = Sheets("Matriz").Range("G" & i)
Range("F" & fila) = Sheets("Matriz").Range("H" & i)
End If
Next i

End If

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