Saltar al contenido

Reto # 1 : Parqueadero Vehicular


John Jairo V

Recommended Posts

¡Hola a todos!

Para iniciar este año, y con el fin de crear alguna diversión a los amantes de este maravilloso programa como lo es Excel, propongo un ejercicio a modo de reto para resolverse ya sea con fórmulas o VBA.

Dadas unas horas de entrada y salida de vehículos de un parqueadero, la idea es hallar la cantidad máxima de vehículos que se alojaron al mismo tiempo en el mismo.

De forma adicional, se podría complementar la solución con el horario en el que ocurrió esta cantidad.  

Prontamente, y dependiendo de la acogida de este ejercicio, subiré mi respuesta.  ¡Bendiciones!

Parqueadero.xlsx

Enlace a comentario
Compartir con otras webs

Hace 17 horas, marco dijo:

son 7 vehículos a las 10.54

¡Hola marco!

Va por ahí la cosa.  La idea es plantear la solución formulando en Excel, o bien, con VBA.

@Gerson Pineda, @sergio@Silvia, @Héctor Miguel, @Macro Antonio, @DiegoPC, @bfelix, @Luis Teran, ¡Anímense!

Enlace a comentario
Compartir con otras webs

Hola a tod@s, la solución de @DiegoPC creo que no es adecuada (puedo estar equivocado) porque no se ajusta a la petición de @johnmpl > la idea es hallar la cantidad máxima de vehículos que se alojaron al mismo tiempo en el mismo. < y en ningún momento hay 9 carros en el parking, lo máximo son 7 y se produce cuando entra el carro 14.

Yo lo he solucionado con columna extra y a partir de ella obtener la franja horaria. Como ya llevo un tiempo leyendo a johnmpl supuse que él quiere el resultado con una fórmula sin necesidad de columnas extras... De momento no lo he conseguido :(

Saludos,

bfelix

 

Enlace a comentario
Compartir con otras webs

Ahora mismo, bfelix dijo:

Hola a tod@s, la solución de @DiegoPC creo que no es adecuada (puedo estar equivocado) porque no se ajusta a la petición de @johnmpl > la idea es hallar la cantidad máxima de vehículos que se alojaron al mismo tiempo en el mismo. < y en ningún momento hay 9 carros en el parking, lo máximo son 7 y se produce cuando entra el carro 14.

Yo lo he solucionado con columna extra y a partir de ella obtener la franja horaria. Como ya llevo un tiempo leyendo a johnmpl suponí que él quiere el resultado con una fórmula sin necesidad de columnas extras... De momento no lo he conseguido :(

Saludos,

bfelix

Hola @bfelix

La solución de @DiegoPC es buena siempre y cuando coloques la unidad de tiempo menor posible de acuerdo a los datos (1 minuto), donde te encuentras con los intervalos que cumplen con los 7 vehículos ya comentados.

Postea tu solución, así sea con columnas o filas auxiliares, quizá pueda dar una luz a otros (o quizá a ti mismo) para postear una solución con una única fórmula.  Es interesante ver varias soluciones. Originalmente, lo resolví con una sola fórmula, pero no quise dejar fuera las soluciones con macros, inclusive con UDF. ¡Bendiciones!

Enlace a comentario
Compartir con otras webs

hola, a todos ! (mi version adjunta)

se asume/espera que el ingreso sera en registro creciente de la hora (no así la salida)
en las columnas E:F están las horas del ejemplo original (por pruebas aleatorias)
en el caso del ejemplo hay DOS grupos de 5 autos "al mismo tiempo"
las formulas están para determinar solo el que aparezca primero
el formato condicional identifica los presentes en la hora de entrada del ultimo registro del conjunto
 
saludos,
hector.
 
edito: si restauran de los valores originales (E:F) no se olviden de pegar "solo valores" (por lo del formato condicional) ;)

reto (jjvd ayudaExcel).xlsx

Enlace a comentario
Compartir con otras webs

¡Hola a todos!

Me encanta que hubo buena participación de todos ustedes en este pequeño reto.  A continuación, posteo mi solución... o bueno, mis dos soluciones, ambas basadas en formulación.

En esencia, son muy parecidas las soluciones con lo planteado por @Héctor Miguel.  He realizado una gráfica para visualizar la frecuencia de carros visitados entre las 08:21 y las 12:15, minuto a minuto (puesto que es la menor unidad de tiempo de acuerdo al ejercicio).

En efecto, de acuerdo al ejercicio planteado, como solución nos da 7 carros, los cuales están en un único intervalo entre las 10:54 hasta las 11:16.  La formulación propuesta muestra la primera hora, y la última hora donde se presenta esta máxima frecuencia.

Con formato condicional, se muestran los autos que estuvieron en ese tiempo en el parqueadero, los cuales fueron del 7 al 9 y del 11 al 14.

Hay que tener en cuenta que, dependiendo de la configuración de horarios, pueden existir varios horarios intermedios en donde se cumplan las condiciones de máxima capacidad.  Las fórmulas mostradas en el archivo solamente muestran tanto la primera hora como la última hora, y no las intermedias.

Se utilizaron nombres formulados para reducir el tamaño de la fórmula, evitando también escribir partes repetidas.

A continuación, algunos comentarios de sus soluciones:

@marco:  Diste la solución al principio.  ¡Felicidades!  Te faltó plantearla en un Excel.

@DiegoPC:  Genial el detalle que tuviste con mostrar diferentes intervalos en tu solución, ¡me encantó!  En si la respuesta correcta se observa en el menor intervalo de acuerdo a los tiempos iniciales (1 minuto).  ¡Felicidades!

@bfelix y @Silvia:  Sus soluciones fueron parecidas, aunque Sil la realizó sin columna auxiliar y ambos dieron con la respuesta correcta de 7 vehículos, aunque el horario inicial planteado no fue el correcto.  ¡Felicidades a ambos!

@Héctor Miguel:  Excelente solución, ¡como siempre!.  Me encanta el grado de precisión con el que das tus respuestas, analizando cada posible contingente.  ¡Felicidades!

A todos, muchas gracias por participar.  Si les gustó, se pueden plantear otros problemitas para solucionar.  Si se desea amplitud en cuanto a la concepción de las fórmulas, háganlo saber.  ¡Bendiciones!

ParqueaderoResuelto.xlsx

Enlace a comentario
Compartir con otras webs

hola, a todos !

Hace 18 horas, johnmpl dijo:

7 carros... entre las 10:54 hasta las 11:16. La formulación... muestra la primera hora, y la última hora donde se presenta esta máxima frecuencia

si la intención de "ultima hora" es mostrar la "hora final" del periodo durante el cual estuvieron aparcados ese numero de vehículos, al aplicar cambios aleatorios en las horas registradas... resulta incorrecta

saludos,
hector.

Enlace a comentario
Compartir con otras webs

Hola Héctor

Hace 11 horas, Héctor Miguel dijo:

si la intención de "ultima hora" es mostrar la "hora final" del periodo durante el cual estuvieron aparcados ese numero de vehículos, al aplicar cambios aleatorios en las horas registradas... resulta incorrecta

Por eso comenté esto

En 10/1/2017 at 1:24 , johnmpl dijo:

Hay que tener en cuenta que, dependiendo de la configuración de horarios, pueden existir varios horarios intermedios en donde se cumplan las condiciones de máxima capacidad.  Las fórmulas mostradas en el archivo solamente muestran tanto la primera hora como la última hora, y no las intermedias.

Aunque encontré un "veneno" en la fórmula (quizá te referías a él), el cual corrijo en el adjunto.  Adiciono los horarios individuales por cada frecuencia máxima.  ¡Bendiciones!

ParqueaderoResuelto.xlsx

Enlace a comentario
Compartir con otras webs

hola, a todos !
 
encontré un "veneno" al convertir decimal a sexagesimal, me explico:
p.ej. al convertir 861 => 8:61 se repite/duplica/monta/... con el 9:01
y así sucesivamente desde x:61 a x:99
 
alguien se anima a dos cosas ?:
1) eliminar esa "duplicidad"
2) graficar SIN las columnas auxiliares (la cuenta de frecuencias minuto-a-minuto)
 
saludos,
hector.
Enlace a comentario
Compartir con otras webs

¡Hola a todos!

Hace 6 horas, Héctor Miguel dijo:

encontré un "veneno" al convertir decimal a sexagesimal, me explico:
p.ej. al convertir 861 => 8:61 se repite/duplica/monta/... con el 9:01
y así sucesivamente desde x:61 a x:99

 

Hace 6 horas, Héctor Miguel dijo:

1) eliminar esa "duplicidad"

De ese "veneno" era del que hablaba en mi anterior mensaje, y ya lo había corregido.

Hace 6 horas, Héctor Miguel dijo:

2) graficar SIN las columnas auxiliares (la cuenta de frecuencias minuto-a-minuto)

¿Algo así como el adjunto? ¡Bendiciones!

ParqueaderoResuelto.xlsx

Enlace a comentario
Compartir con otras webs

Hace 9 horas, Héctor Miguel dijo:

encontré un "veneno"

A mi no me gusta jugar con veneno, quien con veneno juega, con veneno muere..:P, yo solo juego al alquimista aunque muera cubierta de oro ..... -_-

jajajajarsrsrs :P

 

Oigan, este tema cada vez mas complicado, sigan así por favor, queda mucho por aprender..

 

 

Enlace a comentario
Compartir con otras webs

hola, a todos ! (adjunta mi propuesta)
 
notas:
  1. la cantidad de funciones utilizadas incluye el número de funciones que intervienen en la definición de los nombres tantas veces como el nombre sea llamado (así es el recalculo de excel)
  2. las fórmulas de cuenta y determinación de "lapsos" son las de las propuestas originales
  3. no hice propuestas para la identificación de todos los posibles lapsos en que se cumpla el mismo número de máximos vehículos
  4. todos mis nombres están a nivel de libro (en el de John hay tanto a nivel de hoja como a nivel de libro)
  5. aun hay algunas "lagunas" con algunos intervalos en algunos casos (?)
 
como verán, el tema aun "da para más" :D
saludos,
hector.

reto (jjvd ayudaExcel).xlsx

Enlace a comentario
Compartir con otras webs

¡¡¡ Excelente @Héctor Miguel !!!  ¡You rock!

En mi archivo Excel, propuse dos soluciones... ¡No es justo que las sumes para comprobar que la tuya es más corta! :D:D;)

Si me quedo con freq2 y con horas2, serían 2 nombres, 218 caracteres en fórmulas y 19 funciones usadas, no tan alejadas de tus cifras (5 nombres, 194 caracteres, 23 funciones usadas;)

Usé un tercer nombre interv, el cual ayudó a calcular a mostrar los horarios/lapsos donde se presenta la máxima frecuencia vehicular.

Coloqué tus nuevos horarios en mi archivo, y obtuve iguales resultados... aunque entiendo que Excel, por la aritmética de punto flotante (ver: https://support.microsoft.com/es-co/kb/78113 para más info), puede generar algunos errores de cálculo.

Me ha parecido genial el ejercicio, puesto que siempre hay varias opciones que nos permiten aprender un poco más sobre esta maravillosa herramienta.

Por tu parte,  @Héctor Miguel si tienes algún ejercicio/reto (o cualquier otra persona), sería genial que lo propusieras, con el fin de mejorar.   ¡Bendiciones!

P.D.  Pregunta, Héctor:

Hace 58 minutos , Héctor Miguel dijo:

todos mis nombres están a nivel de libro (en el de John hay tanto a nivel de hoja como a nivel de libro)

¿Qué implicación hay en el tener nombres en ámbito de hoja como en ámbito de libro? ¿tiene algún efecto en rendimiento y/o operatividad?

ParqueaderoResuelto.xlsx

Enlace a comentario
Compartir con otras webs

hola, a todos !
 
considerando el reto resuelto satisfactoriamente, este apéndice queda "off-the-records"
 
convengo en que algunos de los nombres que utilizas son redundantes o sustituibles entre si (sin embargo...)
 
tu propuesta "necesita" del nombre que quieres descontar (interv) para determinar (en la hoja) la "hora-fin" de un intervalo
 
(claro que se puede optar por la adopción de cualquiera otra de las propuestas ventiladas en este hilo)
 
también es de notar que las funciones "texto(..." resultan ser irrelevantes/innecesarias
 
saludos,
hector.
 
(esperemos otro reto-concurso de "peculiaridades con Excel") :D
Enlace a comentario
Compartir con otras webs

hola, a todos !
 
antes de que aparezca algún moderador increpando que este ejercicio se encuentra "fuera de lugar"...
en el sub-foro de "cafeteria" del "off-topic" que a la letra dice que se posteen (o espera que posteen) temas...
"... y todo lo que no tenga relación con Excel"
 
y en tanto se abre algún sub-foro apropiado para ejercicios y retos, podría proponer un tema:
sumandos (SIN vba ?)
 
saludos,
hector.
 
p.d. a "este" le entré solo porque fui mencionado (no acostumbro las cafeterías) :D
Enlace a comentario
Compartir con otras webs

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

  • 96 ¿Te parecen útiles los tips de las funciones? (ver tema completo)

    1. 1. ¿Te parecen útiles los tips de las funciones?


      • No
      • Ni me he fijado en ellos

  • Ayúdanos a mejorar la comunidad

    • Donaciones recibidas este mes: 0.00 EUR
      Objetivo: 130.00 EUR
  • Archivos

  • Estadísticas de descargas

    • Archivos
      177
    • Comentarios
      90
    • Revisiones
      27

  • Crear macros Excel

  • Mensajes

    • Si  no me he liado con los paréntesis: Private Sub Worksheet_Change(ByVal Target As Range) Application.ScreenUpdating = False Application.Calculation = xlManual Application.EnableEvents = False If Not Intersect(Target, Range("$L$5:$Y$9")) Is Nothing Then Range("E22") = WorksheetFunction.Sum(Range("E4:E21")) Range("E23") = WorksheetFunction.Sum(Range("E4:E19")) Range("E24") = Range("E23") - WorksheetFunction.Sum(Range("I4:I7")) Range("I22") = WorksheetFunction.Sum(Range("I4:I21")) Range("I4") = Range("E23") * 0.1 Range("I5") = Range("EN10") * Range("EN11") Range("I6") = Range("E23") * 0.0127 Range("I7") = Range("E23") * 0.006 Range("I25") = Range("E22") - Range("I22") Range("I12") = Range("E24") * 0.03 Range("C7") = Range("EQ8") - Range("EQ9") + Range("EN13") + Range("EN14") + Range("EN15") + Range("EN16") Range("C9") = Range("EQ9") + Range("EN17") + Range("EN18") + Range("EN19") Range("E7") = Range("E4") / Range("C4") * 7 / 44 * 1.5 * Range("C7") Range("E8") = Range("E4") / Range("C4") * 7 / 44 * 0.3 * Range("C8") Range("E9") = Range("E4") / Range("C4") * 7 / 44 * 1.3 * 1.5 * Range("C9") End If Application.Calculation = xlAutomatic Application.ScreenUpdating = True Application.EnableEvents = True End Sub  
    • Hola de nuevo a ambos, @daren, tu archivo lleva excesivos datos, que creo no son necesarios para la información final que buscas. Te subo otro archivo, simplificado al máximo, que, si lo he entendido bien, con esta fórmula simplificada: =CONTAR.SI('Casos de Prueba'!I:I;"OK")*('Casos de Prueba'!I1="Resultados Ciclo "&COLUMNA(A5)) se calcularía el primer dato, que se encuentra en la columna I. Copiando la fórmula a la derecha las celdas que necesites, se completaría el rango.  Tu fórmula la coloco en D7, y esta nueva en D9, que como ves (si, repito, he interpretado bien lo que buscas), da los mismos resultados. ---------------------------------------------------------------- En cuanto a: Aquí tienes, en el mismo archivo (Hoja 3) lo que devuelve tu fórmula cuando hay un determinado dato en A1 y en B2. No llego a entender qué es lo que quieres exactamente.  Tal vez con una pequeña explicación de lo que esperas obtener, sea suficiente para poner el hilo a la aguja. ? ----------------------------------------------------------------- En el caso de que falte por añadir o evaluar alguna otra variable o parámetro (en tu primer post hablabas sólo de 'OK' y ahora veo que en el archivo figuran además 'KO' y 'BLOCK'), por favor, intenta emular el ejemplo del archivo que estoy subiendo; añade EXCLUSIVAMENTE esos datos en la hoja allá donde proceda, explicando dónde o cómo deben contarse o sumarse. Mejor trabajar siempre con datos anónimos y reducidos. Desconozco si en tu archivo alguno de esos datos puede considerarse confidencial, pero seguro que no interesan a nadie. Mucho mejor obviarlos. Saludos, Plantilla V3 (B).xlsx
    • buenas noches, quisiera saber si puedo mejorar mi macros que se encuentra en el evento change de la hoja de calculo de Excel, son códigos de cálculos básicos, además si me pudieran ayudar a reducir el código o darme algún tip para reducirlo yo mismo estaría muy agradecido.  de ante mano muchas gracias     Private Sub Worksheet_Change(ByVal Target As Range)     Application.ScreenUpdating = False     Application.Calculation = xlManual     Application.EnableEvents = False              If Not Intersect(Target, Range("$L$5:$Y$9")) Is Nothing Then             Sub todo()          Range("E22") = WorksheetFunction.Sum(Range("E4:E21"))     Range("E23") = WorksheetFunction.Sum(Range("E4:E19"))     Range("E24") = WorksheetFunction.Sum(Range("E23") - WorksheetFunction.Sum(Range("I4:I7")))     Range("i22") = WorksheetFunction.Sum(Range("I4:I21"))     Range("I4") = Range("E23") * 0.1     Range("I6") = Range("E23") * 0.0127     Range("I5") = Range("EN10") * Range("EN11")     Range("I7") = Range("E23") * 0.006     Range("I25") = Range("E22") - Range("I22")     Range("I12") = Range("E24") * 0.03     Range("C7") = WorksheetFunction.Sum(Range("EQ8") - (Range("EQ9"))) + Range("EN13") + Range("EN14") + Range("EN15") + Range("EN16")     'Range("E7") = WorksheetFunction.Sum(Range("C7") * ((Range("E4") * 0.0077777)))     Range("C9") = Range("EQ9") + Range("EN17") + Range("EN18") + Range("EN19")     'Range("E9") = WorksheetFunction.Sum(((((Range("E4") / Range("C4")) * 7) / 45) * 1.3) * 1.5) * Range("C9")     'Range("E8") = WorksheetFunction.Sum(((((Range("E4") / Range("C4")) * 7) / 45) * 0.3)) * (Range("C8"))     Range("E9") = WorksheetFunction.Sum(((((Range("E4") / Range("C4")) * 7) / 44) * 1.3) * 1.5) * Range("C9")     Range("E8") = WorksheetFunction.Sum(((((Range("E4") / Range("C4")) * 7) / 44) * 0.3)) * (Range("C8"))     Range("E7") = WorksheetFunction.Sum((((Range("E4") / Range("C4")) * 7) / 44) * 1.5) * Range("C7")          End Sub              End If                  Application.Calculation = xlAutomatic     Application.ScreenUpdating = True     Application.EnableEvents = True     End Sub
    • Buenas perdonad la espera adjunto el fichero Excel y explico mas detallado lo que me solicitan: Lo que me solicitan es que esos CP de la pestaña Casos de prueba los cuales tienen formulas para que cuando se copien y peguen junto a sus pasos el CP se va autoincrementando a 1,2,3 etc...., pero si copias ese CP bien solo con el primer paso o con todos sus  pasos y lo insertas entre dos CP no continua con la numeración, como se ve en la foto al hacer eso el CP insertado continua con la numeración CP2 y el de abajo pone también CP2 no se incrementa ni ese ni el valor de CU que hay a la derecha que también es incremental. Necesitaría que continuara con esa numeración aun insertándolo entre medio de 2 tanto el CP como el CU de la derecha. También me solicitan que el campo Ciclo 1 de la pestaña Resumen es auto incremental cuando copias y pegas va sumando 1, pero en las formulas referentes a Ok KO Y bloqueo al copiar y pegar se mantiene la misma formula , la idea es que cuando copies y pegues la fila donde están los ciclos se autoincremente Ciclo a 1,2,3,4 etc... y la formula de los campos OK,KO y Bloqueos se incremente también pasando de la columna I a la J  luego a la k etc... y que en Resultados Ciclo el numero de la formula también se incremente Resultados Ciclo 1 , 2 ,3 etc... que cambie la columna a la vez que el numero de Resultados Ciclo. Gracias por adelantado un saludo. Plantilla v3 Pruebas.xlsx  
    • Saludos amigos espero estén bien Estoy intentando hacer un formulario que me convierta unidades de masa sin embargo  en el mejor de los casos solo he podido lograr la conversión de una unidad a la vez en los TextBox 1, 3, 5, 7, 9, 11 y 13 y cuando lo logro el resultado que se copia  en la celda no se corresponde con el obtenido originalmente en el Textbox del Formulario (frmconv)  ejemplo al convertir 1900 Kg a Lb el resultado en el TextBox1 =4188,78298142 sin embargo al guardar el resultado lo que se copia en la Celda  "F11" es  418.878.298.142,00, adicionalmente el resultado de la conversión no se visualiza inmediatamente por lo que debo de hacer click en los TextBox 1, 3, 5, 7, 9, 11 y 13  para ver el resultado. Mucho les sabre agradecer la ayuda que me puedan brindar. PRUEBA.xlsm
  • Visualizado recientemente

    • No hay usuarios registrado para ver esta página.
×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.