Todo se publica por Israel Cassales
-
Calculadora de partidos de un torneo mixto de padel
tema contestó a Israel Cassales en oscarfm Excel General
Excelente propuesta Maestro @John Jairo V yo tuve problemas para aterrizar el cálculo en una sentencia. -
Por otro lado. Si la opción del rango adicional no es factible, aún se puede considerar un código VBA que primero tome las fechas de ese rango y luego las sustituya considerando la diferencia que hay en D1 Sub AjustarFechasHoras() Dim ws As Worksheet Dim rngFechas As Range Dim rngHoras As Range Dim rngResultadoFecha As Range Dim rngResultadoHora As Range Dim i As Long Dim ZonaHoraria As Integer Set ws = ThisWorkbook.Sheets("Hoja1") Set rngFechas = ws.Range("D11:D16") Set rngHoras = ws.Range("E11:E16") Set rngResultadoFecha = ws.Range("D11:D16") Set rngResultadoHora = ws.Range("E11:E16") ZonaHoraria = CInt(Mid(ws.Range("D1").Value, 5, Len(ws.Range("D1").Value) - 4)) - (-7) For i = 1 To rngFechas.Cells.Count rngResultadoFecha.Cells(i).Value = Int(rngFechas.Cells(i).Value + rngHoras.Cells(i).Value + (ZonaHoraria / 24)) rngResultadoHora.Cells(i).Value = rngFechas.Cells(i).Value + rngHoras.Cells(i).Value + (ZonaHoraria / 24) - rngResultadoFecha.Cells(i).Value Next i End Sub
-
En base a lo explicado. Las fechas y las horas ya están escritas en los rangos, si lo que buscas es que al cambiar el valor de D1 (la zona horaria) estas mismas celdas se cambien de fecha y hora sumando o restando las horas de diferencia, me parece que eso no es posible sin caer en una referencia circular porque el resultado (destino) depende del mismo valor que tiene de inicio (origen). Considero que es posible lograrlo si agregas otras celdas para mandar el resultado ahí: O al menos yo no sabría cómo cambiar el valor de una celda con una fórmula considerando sustituirse así misma con un resultado que depende del valor original que contenga antes del cálculo.
-
Calculadora de partidos de un torneo mixto de padel
tema contestó a Israel Cassales en oscarfm Excel General
Mira intente otro ejemplo: El problema aquí no es crear esa macro que no esté considerando cada partido dos veces, ejemplo: una vez cuando el HOMBRE_01 juega con la MUJER_01 contra el HOMBRE_02 y la MUJER_02, y otra vez cuando el HOMBRE_02 juega con la MUJER_02 contra el HOMBRE_01 y la MUJER_01. Entonces sí, son efectivamente el mismo partido, por lo que deberíamos contarlos solo una vez y discriminarlos, ese considero es el detalle. En tu caso, estás buscando un “diseño de torneo de parejas mixtas”, donde cada hombre juega con cada mujer exactamente una vez, y cada pareja juega contra cada una de las otras parejas exactamente una vez. Esto es un problema más de matemáticas que de programación, y aunque existen algoritmos para resolverlo algunos son bastante complejos y pueden ser difíciles de implementar en VBA. Por ejemplo buscando en Internet lo tuyo se considera un problema de combinatoria y se podría resolver con un algoritmo conocido como “round-robin”, lo que habría que hacer es crearlo en VBA pero en el contexto de tu consulta sería de una manera un poco diferente. En lugar de seleccionar elementos de un grupo para procesar, estamos generando todas las combinaciones posibles de parejas de jugadores para los partidos de padel. Cada jugador juega con cada otro jugador exactamente una vez, lo cual es similar al concepto de “Round-Robin” de dar a cada elemento en un grupo una oportunidad equitativa. Así que en el adjunto que te mando inicie con HOMBRE_01 y sus combinaciones, luego HOMBRE_02 y sus combinaciones, sería seguirlo construyendo con los 10 que hacen falta. Pero solo es una idea, esperando te ayude a lograr lo que buscas ya que una vez entendido los ejemplos que mencionas de momento no puedo aportar algo adicional. Mixto.xlsb -
Calculadora de partidos de un torneo mixto de padel
tema contestó a Israel Cassales en oscarfm Excel General
Mixto.xlsb -
Su libro. Intente usted agregar el condicional en las otras hojas y si puede nos comparte su resultado. Prueba 3_Control Ausencias.xlsx
-
Saludos cordiales. ¿La solicitud es la misma? Como le comentaba, tiene unos formatos personalizados que se anteponen al formato condicional de la fila por eso es importante que los ordene o decida que hacer con ellos. En realidad no tiene que eliminar la fila del encabezado, si necesita eliminarle algo es el formato que tiene porque al usar COINCIDIR el día 1 por ejemplo no coincide y por ende no le pinta toda la columna del color deseado. Aunque al ser importante para usted mantener los avances que lleva en su libro y no desea cambiar algo de lo ya realizado, entonces haga algo nuevo. Por ejemplo puede tomar otra fila de referencia que emule el día que necesita para el formato condicional, al estar fuera del personalizado no debería tener problema con el COINCIDIR En la imagen use de ejemplo la fila 3, pero usted sabría mejor cual fila tiene disponible.
-
En realidad no debería ser tan complicado, lo pesado debe ser por los datos. Yo recomendaría hacer una copia y eliminar todos los datos excepto algunos para ejemplo. Sin formatos, sin hojas que no aportan o condicionan el resultado. Por otro lado la macro anterior debe cumplir con lo que cambiaste. Saludines.
-
Sub CopiarPegarFormulas() Dim i As Long For i = 4 To 5000 If Cells(i, 1).Value = "LUIS JUEVES" Then Range("B4:E4").Copy Destination:=Cells(i, 2) End If Next i End Sub Esa macro recorre todas las filas desde la 4 hasta la 5000 y, si encuentra “LUIS JUEVES” en la columna A (celda A4, A5, etc.), copia el rango B4:E4 a la fila correspondiente. Aquí, Cells(i, 1) se refiere a la celda en la fila i y la columna 1 (que es la columna A). Entonces, si el valor en esa celda es “LUIS JUEVES”, la condición se cumple y se ejecuta el código dentro del If, que copia el rango B4:E4 a la fila correspondiente.
-
¡Excelente y gracias por dedicarle tiempo al foro y compartir!
-
No sé, solo para hacer notar la diferencia entre las imágenes que compartieron @Fito315 y @Antoni: Parece que en el libro de Fito315 no está reconocido el rango como un nombre, sería que el consultante revise esa parte ya que es posible que por esa causa mande el error. Por lo demás debería poder usar ese rango como lista si está bien definido el nombre. Lo que recomendó @Victor7 resolvería en mi entender la consulta. Lamento no poder ayudar de otra manera. Saludos cordiales a todos.
-
Hola, por el tiempo tal vez ya hayas resuelto la consulta, aunque adicionalmente podría servir para futuros lectores o a ti mismo, no sé, tal vez. Te comento, encontré múltiples errores desde la apertura de tu libro que hacían incómodo trabajar con él. No sé si por eso hayas encontrado poca ayuda a pesar delas 18+ descargas. Falta la hoja4 solo por darte un ejemplo. Por lo que pude revisar podrías intentar algo como esto en el Listbox: Private Sub ListBox1_Click() Dim ws As Worksheet Dim rng As Range Dim i As Integer, j As Integer Dim Fila As Integer ' Establecer la hoja de trabajo Set ws = ThisWorkbook.Sheets("Planilla") ' Establecer el rango de celdas Set rng = ws.Range("A4:H20") ' Activar la hoja3 Hoja3.Activate Hoja3.Select Fila = Me.ListBox1.ListIndex + 9 ' Recorrer las filas y columnas en el rango For i = 1 To rng.Rows.Count For j = 1 To rng.Columns.Count ' Mostrar los datos en la hoja3 Hoja3.Cells(Fila + i - 1, j).Value = rng.Cells(i, j).Value Next j Next i End Sub Tendrías que editar el rango o personalizar un poco por las inconsistencias que te comenté que no me permitieron hacer mejores pruebas. Saludines
-
¡Vaya! Ha pasado un tiempo, tal vez ya lo hayas resuelto, sin embargo es bueno dejar algunas opciones en el foro que podrían ser útiles. El error que estás experimentando puede ser causado por varias razones. Revisa lo siguiente: Archivo abierto: La instrucción FileCopy en VBA produce un error si intentas copiar un archivo que está actualmente abierto. Asegúrate de que el archivo que estás intentando copiar no esté abierto en otro lugar. Ruta de destino incorrecta: La función FileCopy no puede copiar un archivo directamente a una URL de SharePoint. Necesitas mapear tu sitio de SharePoint como una unidad de red en tu sistema y luego usar esa ruta de la unidad mapeada en tu código. Además debes especificar la carpeta de destino y el nombre del archivo de destino (y no solo la carpeta de destino). Algo así: FileCopy archivoSeleccionado, RutaDestino & "\" & Dir(archivoSeleccionado) Saludines
-
copiar archivos a otras carpetas
tema contestó a Israel Cassales en MarianoCruz Macros y programación VBA
¡Ah! Si manejas direcciones IP, entonces las rutas deberían quedar más o menos así y considerando que un equipo tuviera la dirección 192.168.1.100 \\192.168.1.100\C:\Users\Marcos\Documents\Pruebas\Mago La IP cambia de acuerdo al DHCP asignado en tu RED -
copiar archivos a otras carpetas
tema contestó a Israel Cassales en MarianoCruz Macros y programación VBA
Para finalizar mi participación en esta consulta y consideras aún usar Excel, te paso una macro que cumple con lo que solicitas en tu libro: Sub CopiarArchivos() Dim ws As Worksheet Dim srcPath As Range Dim destPath As Range Dim file As Variant Dim dest As Variant Set ws = ThisWorkbook.Sheets("Hoja1") Set srcPath = ws.Range("B4:B11") Set destPath = ws.Range("F4:F11") For Each file In srcPath If file.Value <> "" Then For Each dest In destPath If dest.Value <> "" Then FileCopy file.Value, dest.Value & "\" & Dir(file.Value) End If Next dest End If Next file End Sub En ese código solo estoy validando que no haya celdas vacías en los rangos que proporcionaste, pero no estoy manejando qué hacer si surgen otros tipos de errores, éstos los debes de anticipar con lo que te he descrito anteriormente. Saludines -
copiar archivos a otras carpetas
tema contestó a Israel Cassales en MarianoCruz Macros y programación VBA
Ahora, sea cual sea la opción que elijas (incluso si lo haces por VBA) hay recomendaciones a tomar en cuenta siempre que se mueve algo entre equipos que están o no en una misma RED. Permisos: Debes tener los permisos adecuados para leer los archivos en el equipo de origen y para escribir en el equipo de destino. Firewall y Antivirus: Los firewalls y los programas antivirus pueden bloquear las transferencias de archivos. Es posible que necesites configurar estas herramientas para permitir la transferencia. Rutas de archivos: Las rutas de los archivos y las carpetas deben ser válidas en ambos equipos. Si una ruta no es válida, la transferencia de archivos fallará. Red: Si estás transfiriendo archivos a través de una red, debes asegurarte de que ambos equipos estén conectados a la misma red. Además, la velocidad de la red puede afectar el tiempo que tarda la transferencia. Espacio de almacenamiento: El equipo de destino debe tener suficiente espacio de almacenamiento para los archivos que se van a transferir. Sistema Operativo: El sistema operativo de ambos equipos puede afectar la forma en que se manejan las transferencias de archivos. Por ejemplo, los sistemas operativos pueden tener diferentes limitaciones de tamaño de archivo. Compatibilidad de formato de archivo: Los archivos que se van a transferir deben ser compatibles con el sistema operativo y el software del equipo de destino. -
copiar archivos a otras carpetas
tema contestó a Israel Cassales en MarianoCruz Macros y programación VBA
También hay diferentes opciones, mira estas las copie de Google: Existen varias alternativas para mover archivos entre equipos Uso de comandos del sistema operativo: Los sistemas operativos como Windows, MacOS y Linux tienen comandos incorporados que puedes usar para mover archivos. Por ejemplo, en Windows puedes usar el comando move en la línea de comandos. Programas de sincronización de archivos: Existen programas como Dropbox, Google Drive, y OneDrive que te permiten sincronizar archivos entre diferentes equipos. Herramientas de transferencia de archivos en red: Hay herramientas como FileZilla, WinSCP y otros clientes de FTP/SFTP que puedes usar para mover archivos entre equipos en una red. Scripts de PowerShell o Bash: Puedes escribir scripts en PowerShell (para Windows) o Bash (para Linux/MacOS) para mover archivos. (Como el .bat del ejemplo anterior) Herramientas de gestión de proyectos: Algunas herramientas de gestión de proyectos como GanttPRO permiten organizar y compartir documentos en una sola plataforma. -
copiar archivos a otras carpetas
tema contestó a Israel Cassales en MarianoCruz Macros y programación VBA
¿Por qué usar Excel para hacer esas transferencias? ¿No te convendría un archivo .bat? Solo necesitas dos archivos de texto: origen.txt que contiene las rutas de los archivos (una por línea) y destino.txt que contiene las rutas de destino (una por línea). Asegúrate de que estos archivos estén en la misma carpeta que tu script .bat Un código como este debería servir: @echo off setlocal enabledelayedexpansion :: Leer las rutas de los archivos en un array set i=0 for /f "delims=" %%a in (origen.txt) do ( set /a i+=1 set "archivo[!i!]=%%a" ) :: Leer las rutas de destino en un array set j=0 for /f "delims=" %%b in (destino.txt) do ( set /a j+=1 set "destino[!j!]=%%b" ) :: Copiar cada archivo a cada destino for /l %%i in (1,1,%i%) do ( for /l %%j in (1,1,%j%) do ( echo Copiando !archivo[%%i]! a !destino[%%j]! xcopy "!archivo[%%i]!" "!destino[%%j]!" /E /I /Y ) ) endlocal Este script lee las rutas de los archivos y las rutas de destino de los archivos de texto, y luego copia cada archivo a cada destino. Un archivo de Txt debería ser más o menos así: origen.txt C:\Users\Mariano\informaciones\1. Of. 213300EL040407.pdf C:\Users\Mariano\Recapitulaciones\20.U254 \2.63,179.pdf C:\Users\Mariano\listas\1.docus\manuales.pdf C:\Users\Mariano\listas\1.docus\postales.xlsx El otro: destino.txt C:\Users\Marcos\Documents\Pruebas\Mago C:\Users\Marcos\Documents\Pruebas\Mover Carpeta\A donde C:\Users\Marcos\Documents\Pruebas\Mover Carpeta\A donde Algo como eso debería ser útil. -
@Kevinett Fui a buscar en su perfil para ver si tenía una presentación que pudiera indicar su experiencia en Excel, pero lamentablemente no la encontré. Esto es importante porque no solo me ayuda a mí, sino también a los demás participantes, a saber cómo dirigirse a usted en términos de posibles soluciones con diferentes conceptos o ideas. Ahora, considerando su consulta, ¿qué busca optimizar? ¿Dejar de copiar y pegar o que este proceso sea más rápido porque su estructura no es igual? Si busca cambiar la estructura antes de copiar y pegar de “empresa 2” a “agrupado”, a simple vista parece que es posible si mueve todas las columnas de INCENTIVOS, DISPONIBILIDAD y AJUSTES AL al final para que queden en el mismo lugar y así realizar un copiado sencillo. Si busca que la hoja “agrupado” se actualice de forma automática con la información de empresa 1 y empresa 2, puede intentar con vínculos entre las hojas. No menciona para qué es el “consolidado”, pero si es para un informe o algo similar, puede considerar otras opciones como Power Query o Power BI.
-
Un código más corto: Sub CopiarPegarFormulas() Dim i As Long For i = 4 To 5000 Step 11 Range("B4:E4").Copy Destination:=Cells(i, 2) Next i End Sub Con eso concluyo mi participación.
-
Se recomienda que el libro de ejemplo lo proporcione usted. AYUDA EXCEL.xlsb
-
Saludos, en base a lo explicado y sin libro de ejemplo considero participar con la siguiente propuesta: Sub CopiarPegarFormulas() Dim i As Long Dim contador As Long contador = 0 Application.ScreenUpdating = False For i = 4 To 5000 Step 11 Range("B4:E4").Copy Cells(i, 2).PasteSpecial Paste:=xlPasteFormulas contador = contador + 1 Next i Application.CutCopyMode = False Application.ScreenUpdating = True MsgBox "Ayuda Excel, se han copiado " & contador & " formulas" End Sub Esa macro copia las fórmulas que están en B4:E4 cada 11 filas, lo que debería realizar lo expuesto por el consultante llegando a la 5,000. Indudablemente puede quedar más optimizado pero bueno, agregue que no "brinque" la pantalla y un contador con un mensaje que indique cuantas fórmulas pego. Saludines
-
Feliz año nuevo a todos mis colegas.
tema contestó a Israel Cassales en pinoji Cafeteria Ayuda Excel
Felicidades por igual a todos los que participan en el foro ¡Feliz 2024!