Jump to content

KRUGERS

Members
  • Content Count

    34
  • Joined

  • Last visited

  • Country

    Spain
  1. Hola Haplox. Funciona parcialmente, ya que en la celda "E14" de la Hoja "Resumen", que corresponde a la fecha "08/01/2020" me sustituye el valor 0 por el código "V60" que corresponde al día 6. No todos los días de la hoja "Resumen" con valor 0 tienen su correspondiente código en la hoja "SEMANA_2".Es una de las razones por la que me interesaba que aparecieran los códigos en su casilla y el que no tuviera código que quedara en 0. Muchas gracias
  2. Hola a todos: Estoy con un archivo de incidencias y lo que quisiera es que en la celda del rango de celdas (“G4:I” & uf) de la hoja “Resumen” cuyo valor (en formato hora personalizada) sea “0:00:00” aparezca el código de la columna C de la hoja “SEMANA_2” correspondiente al nombre y a la fecha: P. ejemplo: Si la celda F7 de la hoja “Resumen”, que se corresponde con el nombre “DIAZ ANSORENA LUIS” y con la fecha “09/01/2020”, tiene valor “0:00” lo que quisiera es que apareciera el valor correspondiente de la hoja “SEMANA_2” que en este caso sería el de la celda C10: “V62”. He hecho una macro (entiendo que muy torpe) que no funciona, aunque repasándola, creo que debería funcionar. No sé. ¿Alguna explicación de por qué no funciona? Aunque creo que el fallo puede ser que la hoja Resumen sólo tiene un nombre por cada fila y las fechas están en horizontal, por lo que nunca coincidirán las búsquedas tal y como las planteo, porque busca coincidencias donde prácticamente nunca se darán.Lo que no sé es cómo hacerlo. ¿Debería primero poner en filas las fechas de la hoja "SEMANA_2" que están en columna y unificar en una sola celda cada uno de los nombres de esa hoja? ¿Podríais enseñarme otra forma diferente de hacerlo a como he hecho yo la macro? Os adjunto archivo con mi macro. Gracias a todos. Incidencias en días con ceros.xlsm
  3. Creo que me ha quedado claro. Veo que se pueden utilizar "trucos" como el que has mostrado de empezar por el final e incrementar la variable x en pasos negativos (step -1). Es cuestión de darle al coco, aunque a veces cuesta un poco y se agradece la ayuda externa. Muchas gracias Antoni. Siempre se aprende de un experto.
  4. O sea, que por ejemplo, si ponemos n=1000 For x=4 hasta n ¿una vez que se ejecuta, aunque vayamos incrementando el valor de la variable n en n+1 dentro del bucle este valor no va a variar ya que al principio la instrucción For tomó un valor inicial, en este caso 1000?
  5. Aunque he cerrado el tema, sí que me gustaría saber si se puede cambiar las veces que se ejecuta un bucle For...Next una vez que ha comenzado su ejecución. Gracias a todos.👍
  6. Hola Antoni: He probado la instrucción que has puesto y funciona, pero modificando algunas instrucciones: For x = uf To 4 Step -1 ‘Pongo uf, porque coincide con la variable que tengo - He eliminado los contadores uf=uf+1 y x=x+1 que no hacían falta - Next Ahora funciona perfecto. Gracias como siempre, maestro. Podemos cerrar el tema.
  7. Muchas gracias Antoni, en un rato lo pruebo y te cuento
  8. Hola de nuevo a todos: Tengo el Excel adjunto "INSERTAR FICHAJES FICTICIOS" y he hecho una macro para que inserte una fila con un fichaje ficticio según que en la celda correspondiente de la columna E aparezca el literal “SALIDA SIN ENTRADA” o “ENTRADA SIN SALIDA” y reemplace en la columna C el literal “Entrada” por el de “Salida” o viceversa, según corresponda. Es necesario para que no figuren “picaduras” impares y posteriormente se realice correctamente la suma de horas. En la macro he incluido un bucle For…Next en el que le indico que se ejecute desde la fila 4 (x=4) hasta la última fila con datos (variable uf). Se ejecuta perfectamente pero sólo hasta la última fila con datos que figura al iniciar el bucle (en este caso, la fila 910), pero como se van insertando filas cada vez que encuentra uno de los literales anteriores mencionado, debería seguir hasta el final, pero no lo consigo. Le he puesto en los condicionales if que están dentro del bucle For…Next un contador (uf=uf+1) para que incremente el valor de la variable uf cada vez que se inserte una fila nueva, y si al ejecutar la macro paso a paso con F8 ponemos el ratón sobre la variable uf al inicio del bucle For…Next SÍ que figura la variable incrementada, pero sigue sin avanzar la ejecución del bucle más allá del primer valor que tenía uf al principio (910). He probado también incluir en el bucle For…Next un Do While ActiveCell.Value = Empty pero tampoco funciona. ¿Me podríais ayudar a cambiar las veces que se ejecuta el bucle For…Next una vez que se está ejecutando? Muchas gracias a todos INSERTAR FICHAJES FICTICIOS.xlsm
  9. Hola a todos: Tengo un Excel con 2 hojas: La primera, “SEMANA_23” contiene los fichajes con NOMBRE, FECHA/HORA, CODIGO, INCIDENCIA La segunda, “RESUMEN” contiene Nombre, una serie de fichajes y Observaciones Lo que pretendo es que de la primera hoja “SEMANA_23” me pegue, concatenados, los valores de “día de la FECHA”, CODIGO e INCIDENCIA en la columna “J” de la segunda hoja “RESUMEN”. En la macro, he creado 3 variables y las he concatenado de la siguiente manera: dia = Day(Sheets(1).Cells(f1, 2)) 'La variable dia contiene el valor del nº de día de la fecha de la columna "B" "FECHA" de la sheets(1) "SEMANA_23". cod = Sheets(1).Cells(f1, 3).Value 'La variable cod contiene el valor de las celdas de la columna "C" "CODIGO" de la sheets(1) "SEMANA_23".i ncid = Sheets(1).Cells(f1, 4).Value. 'La variable incid contiene el valor de las celdas de la columna "D" "INCIDENCIA" de la sheets(1) "SEMANA_23". Y las he concatenado para que aparezcan en la columna “J” de la sheets(2) “RESUMEN”: Sheets(2).Range("J" & f) = "D" & dia & ":" & cod & " " & incid Porque quiero que aparezcan en la forma D3:V62 Asunto, pero sólo me aparece la incidencia del último día con incidencia. Lo que quisiera es que me aparecieran todas las incidencias por cada día en cada fila correspondiente a un mismo nombre pero sin que se repitan, es decir: -Si el código se repite en varios días, que en la columna “J” de la sheets(2) “RESUMEN”aparezca, por ejemplo: D3-4:V62 Asunto -Si en otros días aparecen otros códigos, que se concatenen y aparezca en la columna “J” de la sheets(2) “RESUMEN”.Por ejemplo, en el nombre CARRERO MERELO ELOISA sería: D3-4-5:V62 Asunto D6:V67 Hijo D7-8-9:V60 Vacaciones -Algún nombre tiene varias incidencias el mismo día No sé si me he explicado lo suficiente o si ha quedado claro lo que quiero. Os adjunto el Excel con la macro que he creado y en la columna “K” de la sheets(2) “RESUMEN” he escrito cómo quisiera que aparecieran las incidencias. Os agradezco de antemano cualquier solución o sugerencia que pudierais hacerme. FICHAJES con INCIDENCIAS2.xlsm
  10. Estoy en ello. Ya te comentaré. Gracias
  11. Hola a todos: Necesito ayuda con un archivo que tengo, con dos columnas: la columna A con CLAVES y la columna B con FECHAS de todo un año. Con una macro, asigno en la columna C el Nº DE SEMANA de la fecha de la columna B (calculada para Excel 2007). Lo que quisiera es que copie todas las filas, incluida la cabecera, hasta que encuentre una fecha del mes de diciembre del mismo año que tenga como nº de semana el 1 (lo que querrá decir que ya es una semana del año siguiente), las pegue en la hoja2 y las del mes de diciembre con nº de semana 1 las copie y pegue en la hoja 3. Por ejemplo, en el archivo que adjunto necesitaría que copie desde la fila 1 hasta la 868 inclusive y las pegue en la hoja2, y que copie las filas desde la 869 hasta la 879 ambas inclusive y las pegue en la hoja3 también con la cabecera. Espero vuestra ayuda y os doy las gracias Fechas y Número semana.xlsm
  12. Antoni y Moisés, gracias por vuestra desinteresada colaboración. Ambas macros funcionan perfectamente. Un saludo
  13. Gracias Antoni. Siempre estás pendiente. Lo probaré, a ver si no se ralentiza mucho cuando la aplique a una hoja con unas 10000 filas Sí, Moisés. Por eso eliminé de tu código la línea .Range("D:E").Columns.Insert
  14. Hola de nuevo Pirtrafilla: Ya funciona!! Gracias por dedicarle tu tiempo. He modificado solamente dos o tres líneas y ahora sí me funciona. El código ahora es este. Prácticamente como lo habías creado. Doy por cerrado el tema. Un saludo. Sheets("Hoja1").Select Selection.CurrentRegion.Select Columns("A:F").EntireColumn.AutoFit fila = ActiveSheet.Cells(Rows.Count, 6).End(xlUp).Row ultimo = WorksheetFunction.Max(ActiveSheet.Range("F2:F" & fila)) ' For c = 1 To ultimo Sheets("Hoja1").Activate Range("A1:F1").AutoFilter Selection.AutoFilter Field:=6, Criteria1:=c filab = ActiveSheet.Cells(Rows.Count, 6).End(xlUp).Row Range("A1:F" & filab).CurrentRegion.SpecialCells(xlCellTypeVisible).Copy Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = "SEMANA_" & c With Sheets("SEMANA_" & c) .Cells(1, 1).PasteSpecial xlPasteValues .Range("C:C, E:E").Select Selection.NumberFormat = "dd/mm/yyyy" Selection.CurrentRegion.Select Columns("A:F").EntireColumn.AutoFit .Cells(1, 1).Select End With Next ' For Each Hoja In Sheets If Hoja.AutoFilterMode Then Hoja.AutoFilterMode = 0 Next Worksheets("Hoja1").Select Cells(1, 1).Select ' End Sub
×
×
  • Create New...

Important Information

Privacy Policy