Todo se publica por Israel Cassales
-
Un año más en este foro aprendiendo de los demás y tratando de aportar lo mejor posible, espero que se encuentren bien cada uno de los que participan en el foro, consultantes, miembros, maestros, moderadores, administradores... ¡bendiciones y buenos deseos! ¡Feliz Navidad 2024 y Año 2025! Saludines
-
Saludos cordiales ¿Ya intentaste la opción más sencilla? Me refiero a desmarcar la casilla de advertencia, con eso ya te deja escribir libremente.
-
Bueno, sin libro de ejemplo ni detalles del escenario a mostrar, lo único que en mi caso puedo recomendar a la consulta es que verifique que no hay filtros o si los hay que muestre los datos en blanco. También usar un campo en la tabla de los que se llaman calculados para forzar que siempre haya algo.
-
Parece que le ha servido, concluyo mi participación en la consulta.
-
Podrías hacer algo parecido al libro de muestra pero hay que editar un poco los nombres y eso, así que mejor participaré con las fórmulas anteiores. Saludines_2 Fecha - AYUDA EXCEL.xlsx
-
Hola. En base a lo que entendí podría ser de utilidad lo siguiente, como no sé su versión de Excel pero en 2013 sería algo así. Para agrupar la fecha en un solo resultado: =FECHA(A3, COINCIDIR(B3, {"ENERO","FEBRERO","MARZO","ABRIL","MAYO","JUNIO","JULIO","AGOSTO","SEPTIEMBRE","OCTUBRE","NOVIEMBRE","DICIEMBRE"}, 0), C3) Luego de ese resultado tomar el día: =ELEGIR(DIASEM(C5, 2), "Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sábado", "Domingo") O en una sola: =ELEGIR(DIASEM(FECHA(A3, COINCIDIR(B3, {"ENERO","FEBRERO","MARZO","ABRIL","MAYO","JUNIO","JULIO","AGOSTO","SEPTIEMBRE","OCTUBRE","NOVIEMBRE","DICIEMBRE"}, 0), C3), 2), "Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sábado", "Domingo") Y en 365 podría ser algo así: =LET( año, A3, mes, COINCIDIR(B3, {"ENERO", "FEBRERO", "MARZO", "ABRIL", "MAYO", "JUNIO", "JULIO", "AGOSTO", "SEPTIEMBRE", "OCTUBRE", "NOVIEMBRE", "DICIEMBRE"}, 0), día, C3, fecha, FECHA(año, mes, día), díaSemana, DIASEM(fecha, 2), ELEGIR(díaSemana, "Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sábado", "Domingo") ) Saludines
-
Otra opción más sencilla siempre y cuando su diseño lo permita, es agregar una columna adicional con la función FECHA() que tome el dato que se introduzca y haga lo que busca, pero ya es otra columna dentro de la tabla. Para la misma celda no tiene tantas opciones. Es lo que puedo aportar en su consulta, saludines
-
Para algo como lo anterior una idea es una sentencia VBA, aunque debe personalizar para termine de funcionar de acuerdo a sus necesidades. Private Sub Worksheet_Change(ByVal Target As Range) Dim Cell As Range Dim ws As Worksheet Set ws = Worksheets("Hoja1") If Not Intersect(Target, ws.Range("A2:A10")) Is Nothing Or Not Intersect(Target, ws.Range("B2:B10")) Is Nothing Then Application.EnableEvents = False For Each Cell In Target If Not IsEmpty(Cell) And IsNumeric(Cell.Value) Then If Cell.Column = 1 Then ' Columna A Cell.Value = DateSerial(2024, 1, Cell.Value) ElseIf Cell.Column = 2 Then ' Columna B Cell.Value = DateSerial(2024, 2, Cell.Value) End If End If Next Cell Application.EnableEvents = True End If End Sub
-
42 visitas y 2 descargas, no sé los demás aunque creo entender lo que buscas marcar en color me genera dudas todo eso de los MIX, etc. En mi caso estoy en viaje largo y traigo mi portátil con Excel 2013, si hay la coincidencia de que mande el libro durante ese tiempo con el coloreado de manera manual por usted, es posible que intente aportar algo. En caso contrario le recomiendo aun así dejar el libro, en el foro hay Maestros y usuarios avanzados que tal vez con ese ejemplo le aporten algo que le sea de utilidad. Saludos cordiales
-
Saludos totales. Maestro @JasallBcn gusto en saludarlo y coincidir con usted en una consulta. En base a lo explicado me permito aportar unas de ideas diferentes. Como el desafío es el diseño por que el rango no está en el mismo lugar entonces hay que buscarlo. Vengo con la portátil y tengo Excel 2013 así que podría ser alguna de las siguientes: =SUMAR.SI(INDIRECTO(DIRECCION(2,COINCIDIR(C30,A2:V2)-2)&":"&DIRECCION(10,COINCIDIR(C30,A2:V2)-2)),B30,INDIRECTO(DIRECCION(2,COINCIDIR(C30,A2:V2))&":"&DIRECCION(10,COINCIDIR(C30,A2:V2)))) =SUMAR.SI(INDICE(A$2:V$10,,COINCIDIR(C$31,A$2:V$2,0)-2),B31,INDICE(A$2:V$10,,COINCIDIR(C$31,A$2:V$2,0))) No estoy muy seguro pero sería algo así en 365: =LET( col_index, COINCIDIR(C$31, A$2:V$2, 0), range1, INDICE(A$2:V$10,, col_index - 2), range2, INDICE(A$2:V$10,, col_index), SUMAR.SI(range1, B$31, range2) ) @RubenDario Ya tenías el aporte del Maestro, solo es por proponer algo distinto.
-
Lamento leer eso, eran el par de cosas que conozco, al menos la consulta sigue abierta y es posible que recibas ayuda adicional de algún Maestro o miembro avanzado del foro. Si se me ocurre algo adicional te lo comparto.
-
Vaya, entonces podrías intentar otra alternativa para convertirlos en sólo lectura, es probable que haya otras pero una opción diferente que conozco sería usar la propiedad ExecMenuItem para "flatear" el documento y asegurarse de que no sea editable: ' (convertir en solo lectura) objAcrobatAVDoc.BringToFront objAcrobatApp.MenuItemExecute "SaveAs"
-
Hola. No tengo Adobe PRO pero una idea y como veo que estas usando JSO podrías agregar un JavaScript y convertir las páginas del PDF a solo lectura utilizando this.flattenPages() ya luego se guarda y se cierra. Dim jsSave As String jsSave = "this.flattenPages();" & vbCrLf & "this.saveAs({cPath: '" & stRutaGuardadoPDF & "', bCopy: true});" & vbCrLf & "this.closeDoc();" objJSO.Execute (jsSave) ' Y cerramos la aplicación (Acrobat) para finalizar objAcrobatApp.Exit Haz una prueba. Saludines
-
oculta fila segun condicion en otra columna
tema contestó a Israel Cassales en MarianoCruz Temas Abandonados
Oculta filas.xlsm -
oculta fila segun condicion en otra columna
tema contestó a Israel Cassales en MarianoCruz Temas Abandonados
Hola, Con algo como esto sólo necesitarás colocar la cantidad de filas que deseas ocultar en la columna B junto a cada "x" Sub OcultaFilas() Cells.EntireRow.Hidden = False Dim pf As Long, uf As Long, i As Long, numFilas As Long pf = 2 uf = Sheets("Hoja1").Range("D" & Rows.Count).End(xlUp).Row For i = pf To uf If Cells(i, 1).Value = "x" Then If IsNumeric(Cells(i, 2).Value) And Cells(i, 2).Value > 0 Then numFilas = Cells(i, 2).Value Else numFilas = 1 End If Rows(i & ":" & i + numFilas - 1).Hidden = True i = i + numFilas - 1 End If Next i End Sub -
Imopresion de archivos de una lista
tema contestó a Israel Cassales en MarianoCruz Temas Abandonados
¡Vaya! Un poco tarde para comentar, seguro ya está resuelto. Una idea sería usar algo parecido a ShellWait pero como en VBA no tiene un comando así, se puede imitar con una función a modo que espere a que el proceso termine. Declare PtrSafe Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As LongPtr, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As LongPtr Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr) Sub ImprimirMC() Dim sfile As String Dim uf As Long Dim j As Long Set a = Sheets(ActiveSheet.Name) uf = a.Range("B" & Rows.Count).End(xlUp).Row For j = 3 To uf If a.Range("D" & j).Value = "" Then sfile = a.Cells(j, "B").Value ShellExecute 0&, "print", sfile, vbNullString, vbNullString, 0 ' Agregar un retraso para permitir que la impresora procese el archivo Sleep 2000 ' 2000 ms = 2 segundos (ajustable según tu impresora) End If Next j End Sub El Sleep 2000: Espera de 2 segundos entre cada impresión. lo puedes ajustar a la velocidad de tu impresora según el tamaño de los archivos. El ShellExecute mantendrá la instrucción original para enviar el archivo directamente a imprimir. Ahora, para no abrir los archivos se usa el ShellExecute en modo "print" eso debería evitar la apertura del libro, pero OJO depende de la configuración del programa predeterminado en tu sistema. Si los sigue haciendo, debes revisar las asociaciones predeterminadas de Windows para cada tipo de archivo. Saludines -
Bueno, me parece que el consultante no es claro, me complica recomendar alguna FUNCION. Antes que otra cosa ¿Cómo son los datos 2mm, 13mm? Es decir, son valores con formato personalizado al "mm" o son textos completos "2mm", "13mm". Además dices: En ese rango de 30 filas podrían haber varias secciones con días consecutivos, ¿cuál importa, el mayor de esos rangos? Por esas incógnitas podré aportar sólo siguiente: Separar las "mm" de los textos =VALOR(SUSTITUIR(C1,"mm","")) Define cuales cumplen con el criterio mayor que 11: =SI(D1>=11, 1, 0) Encuentra los consecutivos mayores a 11: =SI(E2=1, SI(FILA(E2)=1, 1, F2+1), 0) Y si requieres encontrar el mayor de ellos: =MAX(F1:F30) Saludines