Jump to content

patriciomates

Members
  • Posts

    75
  • Joined

  • Last visited

  • Days Won

    1
  • Country

    Spain

patriciomates last won the day on August 21 2022

patriciomates had the most liked content!

About patriciomates

  • Birthday August 8

Profile information

  • Gender
    Hombre
  • Localización:
    España

Converted

  • Campos
    ;
  • Mi versión de Excel:
    0

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

patriciomates's Achievements

  1. Hola, buenas a todos. Tengo la siguiente hoja: Necesitaría contar los domingos "D", que coinciden con libre "L". ¿Pueden ayudarme? Gracias. DOMINGOS.xlsx
  2. Si lo he hecho con VBA, es decir primero le paso una consulta sencilla y obtengo una tabla de valores ordenada y con los datos que busco, y a eso le paso formulas por el editor VBA ya que las bajas tienen carácter dinámico y no puedo predecir su dimensión, no se me ha ocurrido otra manera. A: Leo de la tabla datos. Con conexión B: Esto me arroja una tabla nueva en una hoja distinta. D.: Al estar ordenado puedo trabajar con fórmulas. Que las paso a través del editor de VBA. Así me las he apañado, como he podido.
  3. Los datos y la consulta están en Excel, y lo que quiero saber es si es posible lograr el OUTPUT en primer lugar y en ese caso adaptar el string con sus quotation para que funcione en VBA editor
  4. Hola, tengo la siguiente tabla: date employee motive text 01/01/2022 PETER B baja 01/01/2022 MARY R ruta 01/01/2022 ANN R ruta 02/01/2022 PETER B baja 02/01/2022 MARY R ruta 02/01/2022 ANN R ruta 03/01/2022 PETER B baja 03/01/2022 MARY R ruta 03/01/2022 ANN R ruta 04/01/2022 PETER R ruta 04/01/2022 MARY R ruta 04/01/2022 ANN R ruta 05/01/2022 PETER R ruta 05/01/2022 MARY R ruta 05/01/2022 ANN R ruta 06/01/2022 PETER B baja 06/01/2022 MARY R ruta 06/01/2022 ANN R ruta Y necesito conseguir este output employee start_date end_date PETER 01/01/2022 03/01/2022 PETER 06/01/2022 06/01/2022 QUERY select employee, min(date), max(date) from (select t.*, lag(motive) over (partition by employee order by date) as prev_motive, lead(motive) over (partition by employee order by date) as next_motive, sum(case when motive = 'B' then 1 else 0 end) over (partition by employee order by date) as num_b from t ) t where motive = 'B' and prev_motive <> 'B' and next_motive <> 'B' group by employee, num_b; Sabría alguien adaptarme esta query para que funcione en el editor de VBA. Gracias
  5. Me da muy buena vibra la página que me has recomendado, no conocía a Debra, estoy seguro de que voy a pasar buenos ratos estudiando el trabajo de ella. Por otra parte, las celdas están sin fórmulas ni formatos condicionales, si escribes una letra en pronóstico se lanza un event que formatea la celda, este pronóstico de traslada a la base de datos una vez ha pasado el día y se confirma la asistencia del trabajador. Cada celda es independiente el código solo corre en la celda que ha sufrido un cambio. Y está segmentado en trocitos por fila, para tenerlo más separado y controlado. además, no te permite pronosticar más días de los permitidos por la normativa de tráfico ... tacógrafo etc... En otros posts de consultas se ven otras partes del archivo. La gestión de personal, horarios, vacaciones, ausencias, bajas, festivos .... era algo que no había trabajado anteriormente, pero a pesar de que no es cosa fácil he disfrutado mucho haciéndolo, he estudiado mucho esto durante este año, te estoy muy agradecido por el archivo que me facilitaste con el cual inicie esta andadura he aprendido muchísimo de él. Ahora me siento preparado para afrontar la gestion de personal para el año 2023 con mucha seguridad y firmeza.
  6. A veces algunas functions que hago corren cuando por sí solas cuando no deberían, he gestionado esto desactivando el cálculo automático del libro y calculando cuando yo lo necesito de manera focalizada en una hoja determinada ... me falta experiencia en todo esto debe haber maneras más limpias.
  7. Hasta ahora consigo este resultado de la siguiente manera: Macro: Private Function CONTAR_LUN_SAB(Rg As Range) As Double Dim xCell As Range Dim xRg As Range Dim xOutRg As Range Dim ResultArray() As Variant Dim wr As Worksheet Set wr = Sheets("Configuración") ResultArray = getAR(wr.ListObjects("R_1_R_6").ListColumns(1).Range) On Error Resume Next Application.Volatile Set xRg = Application.Intersect(Rg, Rg.Worksheet.UsedRange) If Not (xRg Is Nothing) Then For Each xCell In xRg If (xCell.EntireRow.Hidden = False) And _ (xCell.EntireColumn.Hidden = False) Then If xOutRg Is Nothing Then Set xOutRg = xCell Else Set xOutRg = Application.Union(xCell, xOutRg) End If End If Next End If With ThisWorkbook Dim Keywords() As Variant Dim iVal As Long Dim myRange As Range Dim myCell As Range Dim bCount As Boolean Dim myVal As Variant Keywords = ResultArray Set myRange = xOutRg For Each myCell In myRange bCount = False For Each myVal In Keywords If InStr(1, myCell, myVal, vbBinaryCompare) And Len(myCell) = Len(myVal) Then bCount = True Next myVal If bCount Then iVal = iVal + 1 Next myCell Debug.Print iVal End With If Not xOutRg Is Nothing Then CONTAR_LUN_SAB = iVal Else CONTAR_LUN_SAB = 0 End If End Function Public Function getAR(c1 As Range) As Variant Dim s As String, arrTemp() As Variant, arr() As Variant, j As Integer, someRange As Range Set someRange = c1 With someRange If .Cells.Count = 1 Then ReDim arrTemp(1 To 1) arrTemp(1) = someRange.value ElseIf .Rows.Count = 1 Then arrTemp = Application.Transpose(Application.Transpose(someRange.value)) ElseIf .Columns.Count = 1 Then arrTemp = Application.Transpose(someRange.value) Else MsgBox "someRange is mutil-dimensional" End If For Each X In arrTemp If Not X = "" Then ReDim Preserve arr(j) arr(j) = X j = j + 1 End If Next End With getAR = arr End Function PERO TENGO PROBLEMAS CON EL CALULATION AUTOMATICO
  8. Me gusta pq elimino la fila helper, voy a investigar en esa línea ... a ver si consigo resultado similar con contar.si (rango; "coincide un array de valores")
  9. Hola, si conozco que subtotales funciona en vertical. Solamente quería saber si habría una forma de hacer lo mismo en horizontal con formulación sin tener que recurrir a VBA. Ahora que la @ me quita el desbordamiento puedo apoyarme en una fila helper auxiliar y contar los 1. Aun así, creo que si no encuentro un contar.si , si al menos match un valor de un array de valores. voy a tener que hacerlo con VBA, que es de la única manera que se. Ya que el ejemplo que he puesto es mucho más simple que el archivo que llevará esa función. Te muestro: Quiero totalizar una serie de valores, pero si hidden false las columnas y muestro todo el año pues que se cuente toda la fila de valores. Voy a tener que tirar de MACRO: Yo tenía entendido que todas estas cosas se podían hacer con la nueva función LAMBDA y las nuevas funciones matrices de EXCEL sin tener que recurrir a MACROS, hasta hoy en varias ayudas que he pedido no he encontrado sugerencia de uso, yo con fórmulas me llevo mal jejeje igualmente muchas gracias.
  10. Hola, compañeros, buenas tardes desde España. Osa traigo una consulta, según la captura que se ve a continuación: Cuando ocultamos una fila del rango A1:A6 nos cuenta solo 5 valores, pero esto no sucede con columnas, como podréis apreciar en la siguiente captura Una solución posible habría sido usar =SI(CELDA("ancho";C:C)<>0;1;0) y una fila (row) de apoyatura (helper) pero en esta versión de office 365 me produce desbordamiento, ¿Cómo puedo evitar ese desbordamiento? La finalidad es CONTAR con SUMAPRODUCTO(C1:H1;$C$2:$H$2), PERO EL DESBORDAMIENTO NO ME PERMITE APOYARME CON LOS 1. No sé si alguien conoce alguna manera os lo agradecería mucho. Gracias Subtotales de izquierda a derecha.xlsx
  11. Si es que el problema es que no sé trabajar con las fórmulas ... y me cuesta mucho explicarme ... me gustaría mucho reducir código VBA y poner fórmulas. Te paso lo que he podido avanzar. Necesitaría formular la tabla de abajo para que me facilitara los datos de todos los trabajadores de la tabla DATOS teniendo en cuenta el horario de la tabla RUTAS. Y el criterio de NOCTURNIDAD BuscarEnDosTablas_VBA.xlsm
  12. Hola, Amigos. Se me presenta esta cuestión y la verdad que no tengo experiencia con las fechas, por eso acudo a vosotros. He publicado aquí esta consulta para ver si se puede resolver por fórmulas. Si no es posible pues volvería a abrir la consulta en VBA si así me lo recomendáis. Este es el libro de trabajo, tenemos dos tablas DATOS y RUTAS. Cada día que el trabajador asiste se graba su Asistencia en la tabla DATOS, dependiendo del tipo de ruta que hace, es decir R1, R2 ... se detalla en la siguiente tabla que horario tiene esa ruta con respecto a la época del año. Finalmente se quiere poder calcular el número de horas de nocturnidad trabajadas por el trabajador según su ruta y periodo de consulta. Os dejo el archivo, para ver si me podéis echar una mano como os he dicho antes no sé por dónde empezar ... había pensado en INDICE y COINCIDIR para cruzar las tablas con dos matrices, pero no sé cómo entro según la fecha.BuscarEnDosTablas.xlsx
  13. Hola, Amigos. Se me presenta esta cuestión y la verdad que no tengo experiencia con las fechas, por eso acudo a vosotros. He publicado aquí esta consulta para ver si se puede resolver por fórmulas. Si no es posible pues volvería a abrir la consulta en VBA si así me lo recomendáis. Este es el libro de trabajo, tenemos dos tablas DATOS y RUTAS. Cada día que el trabajador asiste se graba su Asistencia en la tabla DATOS, dependiendo del tipo de ruta
×
×
  • Create New...

Important Information

Privacy Policy