Jump to content
Sign in to follow this  
LARPI

Listado de existencias

Recommended Posts

Hola ioyama,

tu aquí me planteas filtros pero en el tema del fichero vehículos hay diferentes pasos:

1º:_ ordena por matrícula (ascendente) y fecha de movimiento descendente

2º:_ elimina las filas de matrículas duplicadas dejando sólo la línia que corresponde a la fecha más reciente

3º:_ elimina las filas donde el tipo de movimiento es "salida"

Lo que me falta es que me salga el listado sólo de la base que le indico (1,2,3,...)

No se si me he explicado bién

Share this post


Link to post
Share on other sites

Hola larpi

He seguido el tema, pero parece que confundes un poco con tus terminos, por ejemplo utilizas algunos como: "Fechas Recientes" o "Actualmente"... como sabra Excel (o mejor dicho alguien) a que te refieres con esos terminos? con que comparas/relaciones tu esas frases?

Por que este registro [TABLE]

[TR]

[TD]1

[/TD]

[TD]03/01/2010

[/TD]

[TD]R

[/TD]

[TD]H

[/TD]

[TD]4444

[/TD]

[/TR]

[/TABLE]

No cuenta para la "Base1 y Entrada" ? si precisamente es entrada y de base 1

Nos podrias explicar y asi con gusto poder colaborar en algo

Saludos

Share this post


Link to post
Share on other sites

Intentaré explicarme mejor:

en la hoja primera donde estan todos los movimientos de los vehículos. Cuando saco un listado de existencias me deben aparecer sólo las entradas pero si el coche 4444 ha tenido una entrada el dia 01/01/12 y una salida el 02/01/2012 y yo saco el listado el dia 03/01/12 realmente este coche ya ha salido y por tanto ya no me debe salir en el listado de existencias.

Por esto ponía lo condición de que me ordenará po fechas y sólo me dejará la fecha más reciente en el ejemplo entre el 1 i el 2 de enero sólo dejarme el 2 y si es un movimiento de entrada a la base significa que el coche está dentro pero si es de salida no lo tengo de existencia.

No se si me he explicado bién.

Share this post


Link to post
Share on other sites

Hola Larpi

Ahora si esta mas claro (pues ya tocaste el tema de las fechas y con ejemplo incluido), fue un poco complicado captar la condicion/logica para adaptarla a VBA

Revisa el adjunto y nos comentas, espero te funcione

Pd modifica tu ortografia porfavor (en vez de "i" se utiliza la "y")

Saludos desde Honduras

Entradas recientes.zip

Share this post


Link to post
Share on other sites

Hola,

he mirado el archivo adjuntado y con los valores que ya estan entrados me funciona pero si quiero registrar más movimientos de vehículos me da error. No podria funcionar el cósigo que utilizava en el post 24? sólo me faltava saber como filtrar la base antes de copiar y creo que ya me funcionaria.

Share this post


Link to post
Share on other sites

Saludos.

Espero no venir a enredar más el asunto.

Sub Macro_Prueba_Joshua()
Application.ScreenUpdating = False
Select Case Sheets("Hoja1").Range("I1")
Case 1
hoja = "Hoja2"
Case 2
hoja = "Hoja3"
End Select
With Sheets(hoja)
If .Range("A1") = Empty Then .Range("A1:F" & Rows.Count).Delete Shift:=xlUp
End With
With Sheets("Hoja1")
.Range("A1:F" & Rows.Count).AutoFilter Field:=1, Criteria1:=.Range("I1")
.Range("A1:F" & Rows.Count).AutoFilter Field:=3, Criteria1:=.Range("K1")
.AutoFilter.Sort.SortFields.Add Key:=Range("B1"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _
xlSortTextAsNumbers
.AutoFilter.Sort.Apply
.Range("A1:F" & Rows.Count).SpecialCells(xlCellTypeVisible).Copy _
Destination:=Sheets(hoja).Range("A1")
.Range("A2:F" & Rows.Count).SpecialCells(xlCellTypeVisible).Delete Shift:=xlUp
.Range("A1:F1").AutoFilter
End With
With Sheets(hoja)
.Columns("A:F").EntireColumn.AutoFit
End With
Application.ScreenUpdating = True
End Sub[/PHP]

Atte.

joshua

Vehiculosv-joshua.xls

Share this post


Link to post
Share on other sites

Hola Joshua, la verdad es que empiezo a pensar que mi consulta es una "misión imposible" lo que necessito es que en la hoja 2 me copie los coches que el último movimiento ha sido una "Entrada".

Por lo tanto si el vehículo con matrícula 1111 del ejemplo que tiene una una entrada a la base 1 el 01/01/10, una salida el 1/03/2011 y una entrada el 01/01/2012 este vehículo debe aparecer en el listado de existencia.

En cambio el coche con matrícula 4444 entra a la base 1 el 03/01/2010 y sale de ella el 05/01/2012 por lo tanto en el listado de existencias ya no debe salir este coche porque ya ha salido de la base.

Adjunto el fichero donde he hecho una mezcla para conseguir lo que quiero ejecuntando el comando de la hoja 1 se ejecutan las dos macros...

No se si esta es la mejor opción

Vehiculosv4.xls

Share this post


Link to post
Share on other sites
Guest Cacho R

Hola! Amigos.

Me uno a este "Monumento a la Incomprensión" (jajajajajaja) para aportar otra propuesta "improbable" más.

Saludos, Cacho R.

Vehiculos_5.rar

Share this post


Link to post
Share on other sites

Hola a todos,

la verdad es que nunca pense que esta consulta podría causar tanta "incomprensión". En el documento de joshua no hay ningun filtro de la base, en el de Cacho R sí y esto último es lo que me interesa. En cambio en ninguno de los dos parece que me entendeis cuando digo que sólo tienen que aparecer los vehículos que estan en la base ya que el vehículo de matrícula 4444 tiene la entrada el dia 03/01/2010 y sale el dia 05/01/2012 por lo tanto si saco un listado de existencias hoy este coche no debería salir porque el último movimiento que ha tenido ha sido un salida de la base 1.

Lo siento intento explicarme lo mejor que se...

Saludos

LARPI

Share this post


Link to post
Share on other sites

Saludos.

A priori de equivocarme en la falta de entendimiento de tu consulta, hay dos factores muy importantes a tomar en cuenta uno más grave que el otro.

1.-El menos grave, la falta de entendimiento de parte de los que tratamos de colaborarte.

2.-El más grave, el que deseches los aportes sin que hagas el intento aunque sea intuitivo de modificar, adaptar, etc. los aportes que los compañeros te han brindado, te digo esto por lo que indicas en tu ultimo comentario.

En el documento de joshua no hay ningún filtro de la base

En el siguiente aporte veras que tan solo sustituí cuatro líneas y logre lo que tu quieres.

Ojo. Que no es ningún tipo de regaño ni nada que se le parezca, tan solo es una observación.

Que es lo que hace la macro:

1.-Limpia el rango donde se vaciaran los resultados.

2.-Filtra, ordena y extrae la fecha más reciente de cada matricula.

3.-Busca la fecha más reciente de cada matricula, y verifica que se cumpla con la condición de

que sea una entrada, si es así traslada los datos a la hoja 2.

Atte.

joshua

Vehiculosv-joshua-2.xls

Share this post


Link to post
Share on other sites

Hola Joshua,

siento que creas que no he intentado y reintentado conseguir mi objetivo con todas y cada una de las aportaciones que se me han dado. Incluso con el último archivo que adjunté lo conseguía supongo que no de la forma más normal. Miraré de nuevo vuestras aportaciones para ver si consigo filtrar la base, lo he probado con el último archivo que has adjuntado peo tampoco lo logro.

Prefiero las críticas a las "no respuestas" y la verdad es que tengo mucho interés en aprender pero me cuesta bastante.

Un saludo

Share this post


Link to post
Share on other sites

Sí es la 4 pero como mis conocimientos son los que son tube que añadir una hoja más para filtrar la base...

Supongo que no es la mejor forma de arreglar-lo, no?

LARPI

Share this post


Link to post
Share on other sites

HOLA,

Adjunto les dejo algo que, a lo mejor, puede ser de utilidad, dentro del mismo archivo van los apuntes, válido para excel 2007/2010 pues usa tablas, puede adaptarse para 2003.

Gabriel

He agregado una variación con recálculo manual, el botón actualiza y recalcula.

Vehiculos_GR.rar

Vehiculos_GR2.rar

Share this post


Link to post
Share on other sites

Funciona perfectamente!!!!

Lo miraré atentamente porque quiero adaptar este tipo de consultas a otros documentos que tengo a ver si lo consigo.

Muchísimas gracias por la ayuda.

Muchas gracias joshua

Share this post


Link to post
Share on other sites

Hola,

Ya quedo resuelta la consulta usando Macros, y siguiendo el hilo, he buscado una solución similar pero con tablas dinámicas, cumpliendo las condiciones y con algunos requisitos adicionales

1. Tener los datos ordenados es la primera condición.

2. Obtener información extra sobre los datos usando tres columnas adicionales.

El diseño de las tablas se hizo con Excel 2010, que difiere un poco con excel 2007 en cuanto a "Diseño de informe" se refiere, "Repetir todas las etiquetas de elementos".

Gabriel

Vehiculos_GR3.rar

Share this post


Link to post
Share on other sites

Hola Joshua,

estaba intentando hacer unos cambios y la mayoria me han salido, el problema lo tengo al querer cambiar el criterio "Entrada". Supongo que tengo que hacer algun cambio ya la posición de este cambia dentro de la tabla.

Seguiré probanco pero te agradecería tu ayuda, la parte del código que estoy cambiando es la siguiente:

'-------Se verifica que cada fecha cumpla con la condición de

'-------ser una entrada si es asi se trasladan los datos-----

If n.Offset(, 1) = "Entrada" Then

.Range("A65536").End(xlUp).Offset(1, 0).Resize(, 6) = Array(n.Offset(, -1), n _

, n.Offset(, 1), n.Offset(, 2), n.Offset(, 3), n.Offset(, 4))

End If

ActiveCell.Offset(1, 0).Select

Loop

Edición: he cambiado la parte en azul: If n.Offset(, 5) = "A" Then porque la posición de la columna donde se encuantra "A" respeto a la fecha es de 5 posiciones. Pero no me funciona.

Gracias

Share this post


Link to post
Share on other sites

Saludos.

Sube el archivo en el que estas trabajando que asi sera màs facil ayudarte.

De momento.

Para que te funcione debes recordar que la columna donde se encuentren las fechas en la Hoja1 debe ser la "B" y el formato de las fechas debe ser el mismo, la columna donde se encuentre la condición en este caso "A" debe ser la "G", esto tomando como referencia que la tabla de la Hoja1 incie en la columna "A".

Atte.

joshua

Share this post


Link to post
Share on other sites

joshua, creo que ya lo tengo el problema era el formato de las fechas que no era el mismo.

No se si puedo seguir aprovechándome de tu sabiduría ya que he introducido alguno cambios pero creo que si complico mucho la cosa no los haré. Te explico:

en la hoja 2 he puesto en la casilla B1 la fórmula para contar las entradas pero me da error.

por otro lado quería saber si es muy complicado que sólo salga la matrícula del coche y la marca ya que no es necesario tener todos los datos en listado de existencias.

Saludos

Vehiculosv.5.xls

Share this post


Link to post
Share on other sites

Hola Joshua,

he estado mirando el adjunto y funciona bién pero (como no) tengo un par de dudas.

En primer lugar si añado otro vehículo no me aparece en el listado. En el archivo que adjunto he añadido el vehíiculo con matrícula 6666 en la base 2 y no me aparece al ejecutar la consulta.

Por otro lado entiendo que la seleción de columnas a copiar la haces en esta parte del código:

If n.Offset(, 5) = "A" Then

.Range("A65536").End(xlUp).Offset(1, 0).Resize(, 3) = _

Array(n.Offset(, 4), n.Offset(, 2), n.Offset(, -1))

End If

El (,4) entiendo que es la posición del criterio matrícula y el (,2) la posición de la marca. Pero no entiendo para que sirve el (,-1), tendría que ser la base3 pero luego tampoco aparece en el listado. Tiene algo que ver el Resize(,3)?

No se si pregunto demasiado pero gracias

Edición: en la celda J1 he puesto una celda desplegable mediante la validación de datos. La lista de oriben esta en la columna A de la hoja "BASE" . El problema es que cada vez que cierro el programa la validación de datos desaparece.

Saludos

Vehiculosv.6(1).xls

Share this post


Link to post
Share on other sites

Saludos.

Con respecto a:

If n.Offset(, 5) = "A" Then
.Range("A65536").End(xlUp).Offset(1, 0).Resize(, 3) = _
Array(n.Offset(, 4), n.Offset(, 2), n.Offset(, -1))
End If[/PHP]

Seria:

[PHP]n.Offset(, 4)=matricula
n.Offset(, 2)=marca
n.Offset(, -1)=base
[/PHP]

Con respecto a:

Pero no entiendo para que sirve el (,-1), tendría que ser la base3 pero luego [color=#0000FF]tampoco aparece en el listado[/color]. Tiene algo que ver el Resize(,3)?

Que es lo que quieres realmente que aparesca o no, te recuerdo lo que indicas en tu utlimo post:

por otro lado quería saber si es muy complicado que sólo salga la matrícula del coche y la marca ya que no es necesario tener todos los datos en listado de existencias.

Con respecto a:

En primer lugar si añado otro vehículo no me aparece en el listado. En el archivo que adjunto he añadido el vehíiculo con matrícula 6666 en la base 2 y no me aparece al ejecutar la consulta.

Tu respuesta la tienes en la linea que especifica el criterio para trasladar los datos, que seria la siguiente:

If n.Offset(, 5) = "A" Then

Por si no lo tienes claro recuerda que no es lo mismo "A" que "a", claro que se podria solucionar con un "Or".

If n.Offset(, 5) = "A" Or n.Offset(, 5) = "a" Then

Con respecto a:

Edición: en la celda J1 he puesto una celda desplegable mediante la validación de datos. La lista de oriben esta en la columna A de la hoja "BASE" . El problema es que cada vez que cierro el programa la validación de datos desaparece.

En el adjunto no se puede ver que metodo utilisaste para la validacion de la lista, en este caso por ser pocos los datos yo te recomendaria que ingresaras la lista directamente en Origen, seria de la siquiente forma:

Origen:1,2,3,4

Atte.

joshua

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this  

×
×
  • Create New...

Important Information

Privacy Policy