Distribuir registros

Hola a todos, tengo un problema a ver si me pueden ayudar. Tengo una tabla con 35 mil registros(cod_cli, nombre, apellido, teléfono) y quiero distribuir en 10 hojas ... Es decir en cada hora que vaya 3500 registros digamos del 1 al 3500 en una hoja en otra del 3501 al 7000 y así sucesivamente

1 respuesta

Respuesta
1
Esta rutina hace lo que necesitas, creando 1 hoja antes de cada copia. Con eso te aseguras de tenerlas a todas.
Sub SeparaDatos()
'
' Macro desarrollada por Elsamatilde
'
fil = 3500
While fil < 35000
Sheets(1).Select
Range("A1:D" & fil).Select
Selection.Copy
Sheets.Add After:=Sheets(Sheets.Count)
ActiveSheet.Paste
fil = fil + 3500
Wend
Application.CutCopyMode = False
Hola, gracias por la aclaración pero cuando lo ejecuto en la primera hoja me muestra los 3500 registros, en la segunda me muestra los 3500 registros siguientes pero conjuntamente con los primeros 3500 registros es decir 7000 registros y luego me muestra 10500 registros y así consecutivamente.
Bueno lo que quiero hacer es lo siguiente que en la primera hoja me aparezca del 1 al 3500 en la segunda hoja del 3501 al 7000 en la tercera hoja de 7001 al 10500 y así hasta completar los 35 mil registros en las 10 hojas
Si, falta algo. Te debiera quedar así:
Sub SeparaDatos()
'
' Macro desarrollada por Elsamatilde
'
fil1=1
fil2 = 3500
While fil1 < 35000
Sheets(1).Select
Range("A" & fil1 & ":D" & fil2).Select
Selection.Copy
Sheets.Add After:=Sheets(Sheets.Count)
ActiveSheet.Paste
fil1 = fil1 + 3500
fil2 = fil2+3500
Wend
Application.CutCopyMode = False
End Sub
Queda por probar si el límite debe ser < (menor) o <= (menor igual)
Hola Elsa, GRACIAS por la ayuda de verdad que me ayudo mucho... bueno sin querer de abusar de tus conocimientos.. ¿cómo podría manejar si desconozco la cantidad de registros que tengo que distribuir es decir en vez que me envíen 35 mil me pueden enviar 45 mil y también existe la posibilidad que en vez de distribuirlos entre 10 teleoperadores tenga que hacerlo entre 11?
Saludos
Utilizá variables para ese caso:
Limite = 35000 'podes solicitar los límites con algún inputbox o dejarlo en alguna celda
canti = 10           'idem
Luego reemplazá las siguientes líneas por lo que dejo a continuación:
Sub SeparaDatos()
' Macro desarrollada por Elsamatilde
cant_x_op= limite/canti
fil1=1
fil2 = 3500      'reemplazar x  fil2 = cant_x_op
While fil1 < 35000     'reemplazar x  While fil1 < limite
Sheets(1).Select
Range("A" & fil1 & ":D" & fil2).Select
Selection.Copy
Sheets.Add After:=Sheets(Sheets.Count)
ActiveSheet.Paste
fil1 = fil1 + 3500          'reemplazar x fil1 = fil1+cant_x_op
fil2 = fil2+3500            'reemplazar x fil2 = fil2 + cant_x_op
Wend
Application.CutCopyMode = False
Hola Elsa ante todo gracias por tu aporte, pero tengo un inconveniente, al momento de ejecutar este código en un formulario solamente me llena una hoja, bueno al ejecutar ingreso en la caja de texto clientes el valor 2000(que son los registros que tengo en mi hoja de excel) y luego en la caja de texto operador coloco 10(que son el total de operadores) supuestamente me tendría que distribuir 10 hojas y en cada hoja 200 registros. Pero solamente me muestra en una hoja los 200 primeros registros y luego ahí queda. Este es el código que estoy ejecutando... ¿en dónde tengo la falla?
Private Sub cmddistribucion_Click()
cant_x_op = textclientes.Text / textoperador.Text
fil1 = 1
fil2 = cant_x_op
While fil1 < textclientes.Text
Sheets(1).Select
Range("A" & fil1 & ":D" & fil2).Select
Selection.Copy
Sheets.Add After:=Sheets(Sheets.Count)
ActiveSheet.Paste
fil1 = fil1 + cant_x_op
fil2 = fil2 + cant_x_op
Wend
Application.CutCopyMode = False
End Sub
Gracias !
Los textbox guardan su información como texto. No podrás compararlo con valores numéricos, a menos que los conviertas al mismo formato.
valor1 = val(textclientes)    'por ej
cant_x_op = val(textclientes) / val(textoperador)
Lo mismo con : While fil1 < val(textclientes)
Sdos
Elsa

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas