Saltar al contenido

Ver disponibilidad filtrando por campos


victorjavega

Recommended Posts

publicado

Hola,

tengo un calendario con un scroll por meses, La idea es que haya un calendario por cada aula, me explico con un ejemplo; imaginemos que en el "aula 1" el jueves 8-10 hay una clase de "MI" de 10-14 (marcada en naranja) y como estoy en el aula 1 al darle a "FILTRAR" debería aparecerme, pero en el momento que yo cambie en el selector de aulas a "aula2" debería desaparecer la clase de "MI" del día 8-10 y aparecer "Master uñas" de 9-14 y así con cualquier fecha de la barra de desplazamiento y con cada aula.

Esta explicado también en el documento.

he intentado varias cosas pero no hay manera, socorro!!!

Gracias de antemano

Calendario_aulas.xlsm

  • victorjavega changed the title to Ver disponibilidad filtrando por campos
publicado

Hola @Luis Caballero la cosa es que no tengo mucha idea, lo que quería es que al poner aula 3 por ejemplo salieran los cursos que se dan en ese aula durante todo el mes y si cambias a aula 4 y vuelves a filtrar, que cambie la ocupación a la pertinente, lo primero que habría que hacer es rellenar todas las ocupaciones, pero no puedo porque se superponen los cursos porque no cambia el calendario por cada aula que seleccionas.

 

Si vas a octubre te sale "MI" el jueves 8.10 en todas las aulas, por ejemplo eso debería salir solo en aula 3 y así con todo.

 

muchas gracias por el tiempo.

publicado

Hola @victorjavega! (y Luis!)

Te hago una consulta: si vos escribís manualmente "MI" en las celdas R16 a R19 (que serían el 07/01/2020 de 10 a 13 Hs inclusive), ¿cómo podés saber a que aula corresponden? ¿cómo identificar si corresponden al aula 1 o a cualquier otra aula? Si no hay forma de saberlo, entonces es imposible que ningún filtro te pueda llegar a mostrar esa información.

Adjunto un ejemplo de cómo yo lo haría, cargando los datos en la hoja "Cursos".

Saludos!

PD: tu scroll se me rompió en mi copia del archivo y no funciona correctamente :P

Calendario_aulas.xlsm

publicado

Ya casi lo tengo, solo que no logro conseguir que funcione esta parte de mi macro :V

...Cells(celda.Row, 10).Value <> Range("G4").Value then
...celda.EntireRow.Hidden = True

O sea, no logro ocultar las filas que correspondan a aulas diferentes que la que se indica en la celda G4.

Ojalá fuera mejor con esto de las macros :P

Calendario_aulas2.xlsm

publicado

Hola @Cristian 1985 y @Luis Caballero!!

Esta genial, se me pasó, no había entendido en un principio, lo único que faltaría es poder indicárselo de manera masiva, es decir, en la hoja "Cursos", le indicas "curso", "aula", "fecha" y "horario" en vez de indicar una a una las horas que están ocupadas el aula, indicar la hora, inicio - fin (ejemplo: 9:00 - 14:00) y el inicio de curso y el fin de curso para que rellene automáticamente todo el calendario.

Los campos de la hoja cursos serían:

CURSO - AULA - FECHA INICIO - FECHA FIN - HORARIOA ENTRADA - HORARIO SALIDA

 

Muchisimas gracias por el tiempo,

Saludos!!!

publicado

De nada Victor! Igualmente espera a ver si alguien puede solucionar lo que puse en mi mensaje anterior, yo no pude. De esta manera no necesitarías la hoja adicional.

publicado

¡Que CRACK! es justo lo que andaba buscando en realidad pueden servirme los dos, ¿hay alguna posibilidad de que en el selector de aulas se pueda introducir "Todas" o habría que generar un calendario a parte para esto?

 

mil gracias @Cristian 1985  me has ayudado mucho con esto!!!!

SALUDOS!!!!

publicado

He encontrado un pequeño error en el de formulación, parece que cuando rellenas varias campos con el mismo aula, auto rellena todos los días a las 9:00.

Adjunto documento, esta en el mes de marzo y hay una sesión de 9:00 a 12:00 de "TM", si intentas meter esa sesión al día siguiente en la hora "cursos", rellena automáticamente con "TM" todas las 9:00 de todo el mes, no logro encontrar el fallo.

Calendario_aulas (5).xlsm

publicado

De nada Victor, con respecto al error te pido disculpas pero aún no pude solucionarlo. El problema es que cuando la función INDICE obtiene el valor 0 para el campo "Núm_fila" arroja un resultado y según entiendo no debería hacerlo.

=INDICE(Tabla1[Curso];0)

Peor aún el resultado varía si lo introduzco en distintas celdas (ver el adjunto las celdas pintadas en rojo) (creo que en el mismo orden de los datos ingresados en la hoja "cursos").

Por lo pronto, creo que esta fórmula debería evitar el problema

=SI(SUMAPRODUCTO((Tabla1[Aula]=$G$4)*(Tabla1[Fecha]=L$14)*(Tabla1[Horario Entrada]<=$K15)*(Tabla1[Horario Salida]>=$K15)*Tabla1[Id])=0;"";INDICE(Tabla1[Curso];SUMAPRODUCTO((Tabla1[Aula]=$G$4)*(Tabla1[Fecha]=L$14)*(Tabla1[Horario Entrada]<=$K15)*(Tabla1[Horario Salida]>=$K15)*Tabla1[Id])))

O sea, verifico primero si el valor de la función SUMAPRODUCTO da 0 (es el dato que se usa como el campo "Núm_fila" de la función INDICE) y en dicho caso dejo la celda en blanco. La verdad es que esto no es ni elegante ni eficiente ?.

Espero alguien pueda ayudarme con esto, tal vez @John Jairo V? ??????

 

 

Calendario_aulas (5).xlsm

publicado

Retomo tu consulta anterior:

¿hay alguna posibilidad de que en el selector de aulas se pueda introducir "Todas" o habría que generar un calendario a parte para esto? 

En la versión con macros sí es posible (es el archivo que ya había subido) ya que cada aula tiene sus respectivas celdas, pero me temo que con formulación no se va a poder; imaginate que tenés cargados 2 cursos en el mismo día y horario, ¿cómo debería mostrarse si se superponen?

publicado

Si, lo pensé después que con formulación se superpondrían, igualmente me sirve con macros, MUCHAS GRACIAS POR TU AYUDA.

Si finalmente @Jhon Jairopuede echar un cable con el tema de la función INDICE que obtiene el valor 0 para el campo "Núm_fila" que comentaste antes quedaría de 10.

 

????? @Cristian 1985 genio!!!

 

Saludos amigo!!

publicado

¡Hola a todos!

@Cristian 1985:  Debes tener en cuenta que en la función INDICE, el argumento 0 hace que la función devuelva TODOS los valores de la columna a analizar (puedes probar con una función en modo edición, y presionar F9 para que lo constates).

@victorjavega:  Cristian si escribió bien mi nombre (eso hizo que me fijara en el tema).  Tu llamaste a un "tocayo"... ?

Para la propuesta, no necesitas ningún tipo de macros.  Simplemente un control de formulario (control número), vinculado con la celda donde está el mes.

Mejoré la fórmula que tenías en la selección del mes, además de la fórmula original, donde combino INDICE - COINCIDIR - INDICE.  Revisa el adjunto.  ¡Bendiciones!

Calendario_aulas.xlsx

publicado

¡Hola!!!! vaya mencione al "tocayo"..., no ví la "V" @John Jairo V ??

ESPECTACULAR!!! me encantó el selector "PROFESOR" me será muy útil.

Lo único que faltaría, la guinda en el pastel ? sería añadir en los dos selectores, un campo más, me explico, como esta en el adjunto de @Cristian 1985,  para el selector "AULA" el campo TODAS para que muestre todas las aulas y lo mismo en el caso de el selector "PROFESORES" el campo "SIN PROFESOR" para que sea capaz de mostrar las aulas también sin profesor.

CON ESO TENDRÍA EL EXCEL DE 10!

muchas gracias a los dos @John Jairo V @Cristian 1985 sois unos cracks. ??

 

 

Captura.PNG

Archivado

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

  • 109 ¿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
      188
    • Comentarios
      98
    • Revisiones
      29

    Más información sobre "Cambios en el Control Horario"
    Última descarga
    Por pegones1

    4    1

  • Crear macros Excel

  • Mensajes

    • Hola, veo que tienes 365, así que esta forma funcionará   Almacen.xlsx
    • Buenos días  @LeandroA espero estes bien Tengo un caso idéntico al planteado en la siguiente pregunta: Sin embargo, a diferencia de quien planteo originalmente la pregunta al correr el código no obtengo ningún resultado podrían ayudarme a resolver este inconveniente y que al hacer click en el Botón Guardar (CommandButton3) del Formulario RCS (frmrcs) el archivo pdf quede configurado con orientación vertical, márgenes superior, inferior, derecho e izquierdo = 1 y en página tamaño carta. Si acaso influye uso Microsoft Excel LTSC MSO (versión 2209 Compilación16.0.1.15629.20200) de 64 bits Mucho le sabre agradecer la ayuda que me pueda dar  RCS PRUEBA - copia.xlsm
    • @JSDJSDCon gusto mi estimado Para la opción 1: Sub Surtirhastadondealcanse() Dim ws As Worksheet Set ws = ThisWorkbook.Sheets(1) Dim filaInicio As Integer: filaInicio = 4 Dim filaFin As Integer: filaFin = 7 Dim colInventario As Integer: colInventario = 2 Dim colSolicitudesInicio As Integer: colSolicitudesInicio = 4 ' Columna C Dim colResultadoInicio As Integer: colResultadoInicio = 9 ' Columna I Dim colTotalSurtido As Integer: colTotalSurtido = 12 ' Columna L Dim colFinalInventario As Integer: colFinalInventario = 13 ' Columna M Dim numClientes As Integer: numClientes = 3 Dim fila As Integer, i As Integer For fila = filaInicio To filaFin Dim inventario As Double inventario = Val(ws.Cells(fila, colInventario).Value) Dim solicitudes(1 To 3) As Double Dim surtido(1 To 3) As Variant Dim totalSurtido As Double: totalSurtido = 0 ' Leer solicitudes For i = 1 To numClientes If IsNumeric(ws.Cells(fila, colSolicitudesInicio + i - 1).Value) Then solicitudes(i) = CDbl(ws.Cells(fila, colSolicitudesInicio + i - 1).Value) Else solicitudes(i) = 0 End If surtido(i) = "POR FALTA STOCK" Next i ' Surtir de acuerdo al inventario disponible For i = 1 To numClientes If solicitudes(i) > 0 Then If inventario >= solicitudes(i) Then surtido(i) = solicitudes(i) inventario = inventario - solicitudes(i) totalSurtido = totalSurtido + solicitudes(i) ElseIf inventario > 0 Then surtido(i) = inventario totalSurtido = totalSurtido + inventario inventario = 0 Else surtido(i) = "POR FALTA STOCK" End If End If Next i ' Escribir resultados en las columnas correspondientes para cada cliente For i = 1 To numClientes With ws.Cells(fila, colResultadoInicio + i - 1) If surtido(i) = "POR FALTA STOCK" Then .Value = surtido(i) .Font.Color = vbRed Else .Value = surtido(i) .Font.Color = vbBlack End If End With Next i ' Escribir total surtido y existencia final ws.Cells(fila, colTotalSurtido).Value = totalSurtido ws.Cells(fila, colFinalInventario).Value = inventario Next fila MsgBox "Resultado surtido cargado con éxito...", vbInformation End Sub Para la opción 2:   Sub surtirenpartesiguales() Dim ws As Worksheet Set ws = ThisWorkbook.Sheets(1) Dim filaInicio As Integer: filaInicio = 13 Dim filaFin As Integer: filaFin = 16 Dim colInventario As Integer: colInventario = 2 Dim colSolicitudesInicio As Integer: colSolicitudesInicio = 4 ' Columna C Dim colResultadoInicio As Integer: colResultadoInicio = 9 ' Columna I Dim colTotalSurtido As Integer: colTotalSurtido = 12 ' Columna L Dim colFinalInventario As Integer: colFinalInventario = 13 ' Columna M Dim numClientes As Integer: numClientes = 3 Dim fila As Integer, i As Integer For fila = filaInicio To filaFin Dim inventario As Double inventario = Val(ws.Cells(fila, colInventario).Value) Dim solicitudes(1 To 3) As Double Dim surtido(1 To 3) As Variant Dim totalSurtido As Double: totalSurtido = 0 Dim totalPedido As Double: totalPedido = 0 ' Leer solicitudes For i = 1 To numClientes If IsNumeric(ws.Cells(fila, colSolicitudesInicio + i - 1).Value) Then solicitudes(i) = CDbl(ws.Cells(fila, colSolicitudesInicio + i - 1).Value) totalPedido = totalPedido + solicitudes(i) Else solicitudes(i) = 0 End If surtido(i) = 0 Next i ' Si hay suficiente inventario, surtir lo que el cliente pide If inventario >= totalPedido Then For i = 1 To numClientes If solicitudes(i) > 0 And inventario >= solicitudes(i) Then surtido(i) = solicitudes(i) inventario = inventario - solicitudes(i) totalSurtido = totalSurtido + solicitudes(i) End If Next i Else ' Reparto base igualitario Dim baseSurtido As Long baseSurtido = Int(inventario / numClientes) For i = 1 To numClientes If solicitudes(i) > 0 Then If solicitudes(i) <= baseSurtido Then surtido(i) = solicitudes(i) inventario = inventario - solicitudes(i) totalSurtido = totalSurtido + solicitudes(i) Else surtido(i) = baseSurtido inventario = inventario - baseSurtido totalSurtido = totalSurtido + baseSurtido End If End If Next i ' Repartir sobrante restante uno por uno, respetando lo pedido Do While inventario > 0 For i = 1 To numClientes If surtido(i) < solicitudes(i) Then surtido(i) = surtido(i) + 1 totalSurtido = totalSurtido + 1 inventario = inventario - 1 If inventario = 0 Then Exit For End If Next i Loop End If ' Escribir resultados en las columnas correspondientes para cada cliente For i = 1 To numClientes With ws.Cells(fila, colResultadoInicio + i - 1) If surtido(i) = 0 Then .Value = "POR FALTA STOCK" .Font.Color = vbRed Else .Value = surtido(i) .Font.Color = vbBlack End If End With Next i ' Escribir total surtido y existencia final ws.Cells(fila, colTotalSurtido).Value = totalSurtido ws.Cells(fila, colFinalInventario).Value = inventario Next fila MsgBox "Resultado surtido cargado con éxito...", vbInformation End Sub Saludos, Diego
    • Buenos dias.  Estoy trabajando en una hoja para poder llevar un control de un pequeño almacén.  Tengo un pedido con varias líneas y "lotes" y necesito sacar las ubicaciones que coincidan con la referencia y lote que pone en el pedido. El problema viene cuando tengo la misma referencia y mismo lote en ubicaciones diferentes y necesito sacar la información en columnas diferentes. No se si  me he explicado bien, pero creo que con el ejemplo adjunto se entiende mejor. Agradecería mucho si me pudieran ayudar  Libro1.xlsx
    • Exelente solución mil gracias 
  • 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.