Reporte

13/05/2008 - 03:14 por Edixon | Informe spam
Hola grupo necesito de su aporte, tengo lo siguiente:

una lista inmensa con aproximadamente 60.000 filas acupadas

columna A : codigo del articulo(serial de 3 digitos)
columna B: lugar de ubicacion
columna C: letra asociada segun ciertas caracteristicas
columna D: Cantidad

Para llenar la base de Datos se va anotando cada articulo y se vacia
en la hoja de Excel (Hoja 1) puede repetirse cada articulo n veces ya
que puede variar su lugar de ubicacion o su letra asociada pero como
estan ubicados en distintos lugares al colocarlos en la hoja de excel
estos no quedan en forma correlativa.

Lo que necesito es lo siguiente: traer un reporte con macros donde me
orroje de forma correlativa cada codigo con sus distintas ubicaciones
ejemplo

hoja 1

A B C D

125 4 a 18
126 3 d 20
158 2 l 15
146 5 p 19
125 9 s 80
189 2 y 90
658 1 z 60
687 8 d 50
125 10 e 60
158 9 t 30
126 2 r 40

hoja 2 REPORTE

A B C D
125 4 a 18
9 s 80
10 e 60
126 3 d 20
2 r 40


y as sucesivamente, espero me entiendan la idea y de antemano muchas
gracias

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
13/05/2008 - 06:05 | Informe spam
hola, Edixon !

(segun parece) lo unico que necesitas es "ordenar" tu listado y borrar los repetidos -?-
lo cual puedes hacer en la mismisima hoja de tu listado o en una copia (prueba con una copia)

OJO con los siguientes "supuestos":
- NO hay celdas vacias intermedias en la columna A
- esta "libre" para la macro la columna F (cinco columnas a la derecha de la columna A)
- la fila 1 contiene titulos (para el ordenamiento por codigo) donde:
- se asumen solo 4 columnas con datos A,B,C y D y se usa como "puente" la columna F
(pon atencion a las instrucciones con el .Offset(, 5) en el codigo)

Sub Ordena_Limpia()
Dim ColDesp As Byte
ColDesp = 5 ' columna F en relacion con la columna A '
Application.ScreenUpdating = False
[a2].Sort [a2], xlAscending, , , , , , xlYes
With Range([a2], [a2].End(xlDown))
.Offset(, ColDesp).Formula = "=if(countif(a$2:a2,a2)=1,a2,"""")"
.Value = .Offset(, ColDesp).Value
.Offset(, ColDesp).Clear
End With
End Sub

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.

__ la consulta original __
una lista inmensa con aproximadamente 60.000 filas acupadas
columna A: codigo del articulo(serial de 3 digitos)
columna B: lugar de ubicacion
columna C: letra asociada segun ciertas caracteristicas
columna D: Cantidad
Para llenar la base de Datos se va anotando cada articulo y se vacia en la hoja de Excel (Hoja 1)
puede repetirse cada articulo n veces ya que puede variar su lugar de ubicacion o su letra asociada
pero como estan ubicados en distintos lugares al colocarlos en la hoja de excel estos no quedan en forma correlativa.
... necesito... un reporte con macros... de forma correlativa cada codigo con sus distintas ubicaciones. ejemplo
hoja 1
A B C D
125 4 a 18
126 3 d 20
158 2 l 15
146 5 p 19
125 9 s 80
189 2 y 90
658 1 z 60
687 8 d 50
125 10 e 60
158 9 t 30
126 2 r 40

hoja 2 REPORTE
A B C D
125 4 a 18
9 s 80
10 e 60
126 3 d 20
2 r 40

y as sucesivamente, espero me entiendan la idea y de antemano muchas gracias
Respuesta Responder a este mensaje
#2 Edixon
14/05/2008 - 01:36 | Informe spam
Muchas Gracia Hector era lo que queria, quedo perfecto.

Algo mas como podria hacer para que despues de haber el proceso
anterior, me sume en la columna E la cantidad total de cada articulo
es decir:


A B C D E
125 4 a 18 158
9 s 80
10 e 60
126 3 d 20 60
2 r 40
Respuesta Responder a este mensaje
#3 Héctor Miguel
14/05/2008 - 06:15 | Informe spam
hola, Edixon !

... como podria hacer para que despues de haber el proceso anterior
me sume en la columna E la cantidad total de cada articulo es decir:
A B C D E
125 4 a 18 158
9 s 80
10 e 60
126 3 d 20 60
2 r 40



en la macro anterior, te habia "sugerido" usar la columna F para el proceso...
en esta nueva propuesta de macro, te cambio la columna F por la columna E
(se hace todo el proceso en la misma columna donde quieres la suma)

solo "decide" si quieres que la macro te ponga el valor resultante... o la formula aplicable
=> alterna des/marcando los comentarios para las lineas con .Value = o .Formula
saludos,
hector.

Sub Ordena_Limpia()
Dim ColDesp As Byte, Fila_1 As Integer, Fila_2 As Long, Fila_x As Integer
ColDesp = 4 ' columna E en relacion con la columna A '
Application.ScreenUpdating = False
[a2].Sort [a2], xlAscending, , , , , , xlYes
With Range([a2], [a2].End(xlDown))
.Offset(, ColDesp).Formula = "=if(countif(a$2:a2,a2)=1,a2,"""")"
.Value = .Offset(, ColDesp).Value
.Offset(, ColDesp).Value = .Value
Fila_x = .Row + .Rows.Count - 1: Fila_2 = 2
With .Offset(, ColDesp).Offset(-1).Resize(1)
Do While Fila_1 < Fila_x: Fila_1 = Fila_2
With .Offset(Fila_1 - 1)
Fila_2 = IIf(IsEmpty(.Offset(1)), .End(xlDown).Row, Fila_2 + 1)
If Fila_2 > Fila_x Then Fila_2 = Fila_x + 1
.Value = Application.Sum(.Offset(, -1).Resize(Fila_2 - Fila_1))
' .Formula = "=sum(" & .Offset(, -1).Resize(Fila_2 - Fila_1).Address(0, 0) & ")"
End With
Loop
End With
End With
End Sub
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida