Saltar al contenido

Israel Cassales

Miembro
  • Contador de contenido

    1366
  • Unido

  • Última visita

  • Días con premio

    69
  • País

    México

Todo se publica por Israel Cassales

  1. El libro donde hice ejemplos SUMA rangos variables .xlsb
  2. Saludos totales @simplifikndo Gran aporte y gusto de coincidir con usted de nuevo en un tema. @fx.ingenieria Hay una parte que me parece (al menos a mí) que no está clara en su consulta y es la siguiente: En los libros que amablemente manda y en sus explicaciones, no ha terminado de exponer cómo es que los rangos pasan de ser fijos a ser variables, así que mi participación se basa solo en deducciones y erróneamente no debería ser así porque está limitada al conocimiento que solo ésta en usted. Además que ya está siendo asistido por el compañero quien hace colaboraciones sobresalientes. Desde mis conjeturas una de las forma en que los rangos sean variables es porque se insertan filas o columnas, esto le debe causar problemas si quien lo hace no inserta dentro del rango, porque de ser así una suma natural de Excel debería servir porque el rango cambia automáticamente. Empero, si esta fila o columna se inserta al final del rango, entonces no se actualiza y las sumas son incorrectas. Una idea sencilla que sirve para evitar esto es combinar SUMA con DESREF ENFATIZO: Es importante señalar cómo pasan de fijos a variables sus rangos considerando que está buscando sumar valores justo dentro de ese rango y las fórmulas no se escriben automáticamente, a menos que se programe un evento que lo ocasione.
  3. Hola, Por el tiempo que ha transcurrido es posible que haya encontrado por usted mismo la solución y lamentablemente el enlace ya no está vigente. Para posibles futuros lectores se puede compartir un ejemplo que debería ser funcional si se personaliza un poco. Para cambiar el color del botón según su condición (ocupada, libre o reservada), puede usar una estructura condicional similar a esto: Sub ActualizarColorBoton() Dim estado As String estado = Me.TextBoxEstado.Value ' Asumiendo que el estado se almacena en un TextBox Select Case estado Case "ocupada" Me.CommandButton1.BackColor = RGB(255, 0, 0) ' Rojo Case "libre" Me.CommandButton1.BackColor = RGB(0, 255, 0) ' Verde Case "reservada" Me.CommandButton1.BackColor = RGB(255, 255, 0) ' Amarillo Case Else Me.CommandButton1.BackColor = RGB(200, 200, 200) ' Color por defecto End Select End Sub Para llenar los TextBox con la información correspondiente al pulsar el botón, puede usar el evento Clic: Private Sub CommandButton1_Click() ' Supongamos que tiene un TextBox para cada campo de información Me.TextBoxNombre.Value = "Nombre de ejemplo" Me.TextBoxFecha.Value = "01/01/2024" Me.TextBoxEstado.Value = "ocupada" ' Añada más campos según sea necesario End Sub Para integrar ambos códigos debe asegurase de llamar a la subrutina ActualizarColorBoton cada vez que cambie el estado del botón para que el color se actualice. Private Sub CommandButton1_Click() ' Llenar los TextBox con la información Me.TextBoxNombre.Value = "Nombre de ejemplo" Me.TextBoxFecha.Value = "01/01/2024" Me.TextBoxEstado.Value = "ocupada" ' Actualizar el color del botón según el estado Call ActualizarColorBoton End Sub Saludos totales
  4. Hola, Por el tiempo que ha pasado es posible que usted ya haya resuelto. La pregunta al (qué pasó) es complicado determinar a la distancia, entonces tal vez serviría dejar un check de revisiones para futuros lectores o en su caso a usted es posible que le hayan servido en su momento. Asegurarse de que el archivo PERSONAL no esté oculto. En el Editor de Visual verificar si el archivo está visible en el proyecto VBA. Si no lo está, (como no parece ser el caso de este tema) ir a Ver > Ventana Inmediato y escribir ? Application.StartupPath para confirmar la ruta de inicio de Excel Ir a Archivo > Opciones > Complementos y selecciona Elementos deshabilitados en el menú desplegable Administrar. Hacer clic en Ir… y luego verificar si hay algún complemento deshabilitado que pueda estar afectando. Revisar la configuración de seguridad de macros Abrir el archivo PERSONAL directamente desde la carpeta XLSTART y verificar si las macros están y funcionan correctamente. Intentar reparar el Office Verificar permisos de archivo A veces, los problemas con las macros pueden estar registrados en el Visor de eventos de Windows, revisarlo Desactivar complementos de terceros
  5. Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$F$8" Then Call MostrarOcultarAutoforma End If End Sub Sub MostrarOcultarAutoforma() Dim ws As Worksheet Set ws = ThisWorkbook.Sheets("BASE(HORIZONTAL)") If ws.Range("F8").Value = "" Then ws.Shapes("Explosión 1 1").Visible = msoFalse Else ws.Shapes("Explosión 1 1").Visible = msoTrue End If End Sub PUBLICIDAD_CUGAT(horizontal).xlsm
  6. Hola, Le dejo una idea en VBA que tal vez le funcione, por el tiempo es posible que ya haya resuelto aunque podría servir a futuros lectores.
  7. Recomendación adicional: Si se tienen miles y miles de datos las fórmulas pueden ser lentas en su ejecución, entonces cobra importancia otras opciones. También puedes intentar o pedir ayuda en VBA.
  8. Una idea en Excel podría ser combinar UNICOS, INDIRECTO, BUSCARV ó INDICE y COINCIDIR Crear el encabezado único Puedes usar la función UNICOS para obtener los encabezados únicos de todas las hojas. La función UNICOS puede trabajar con rangos horizontales si se configura correctamente. Recopilar los encabezados: En una nueva hoja, puedes usar la función UNICOS combinada con TRANSPONER para obtener los encabezados únicos de cada hoja y luego combinarlos. =UNICOS(TRANSPONER(Hoja1!A2:C2)) =UNICOS(TRANSPONER(Hoja2!A2:E2)) =UNICOS(TRANSPONER(Hoja3!A2:D2)) Combinar los encabezados únicos: Copia los resultados de las fórmulas anteriores en una sola columna y usa nuevamente UNICOS para obtener los encabezados únicos finales. =UNICOS(A1:A15) ' Asumiendo que los encabezados combinados están en A1:A15 de la hoja de resultados. Crear una columna auxiliar Para identificar de qué hoja provienen los datos, puedes agregar una columna auxiliar en la primer columna del lado izquierdo de la hoja resultados. Luego para encontrar los datos usar INDIRECTO, BUSCARV o INDICE y COINCIDIR Combinar los datos: En la nueva hoja, usa INDIRECTO para referenciar las celdas de las otras hojas y BUSCARV o INDICE y COINCIDIR para buscar los datos correspondientes. Algo así: =BUSCARV($A2, INDIRECTO("'" & $B2 & "'!A:D"), COINCIDIR(C$1, INDIRECTO("'" & $B2 & "'!$A$1:$D$1"), 0), FALSO) En resumen, vas a buscar el valor del encabezado y para garantizar que el valor corresponda a la hoja correspondiente usamos la columna auxiliar y para que el nombre de la hoja lo tome como referencia dentro de la fórmula para eso es INDIRECTO. Es una idea, aunque es funcional. Con algo así deberías llegar al resultado buscado. Saludines
  9. Hola, por el tiempo que ha pasado seguramente ha resuelto su necesidad. No es común tantas descargas sin sugerencias, es un indicador de que se puede mejorar el planteamiento o seccionar el tema para abrir las opciones de ayuda. Si está abierto a opciones, y si es que no lo ha hecho así, las posibilidades menos laboriosas para el resultado que busca son POWER QUERY o POWER BI, le recomendaría crear nuevamente la consulta si lo desea en esas secciones de la comunidad. Sino se cuenta con esas herramientas y le interesa a usted o algún otro lector mantener la solución en EXCEL, le proporciono otra idea que le debe llevar al resultado pero requiere personalizar funciones.
  10. Libro2 - Ayuda Excel.xlsx
  11. Puede acomodarlo a un solo renglón: O si quiere ambos renglones haga la combinación correspondiente: En resumen, en este libro que compartió le están haciendo pasar un mal rato el porcentaje del tamaño de impresión con respecto al área que se puede imprimir, que combina con las opciones del ajuste y el alineado del texto.
  12. Bueno…, Pongamos atención a la fila 11, (la fila 1 no encontré eso que menciona). En la fila 11 en la hoja de cálculo se ve así: Y en la vista previa así: Sin considerar las diferentes combinaciones de formato, el porcentaje de impresión con respecto al tamaño de hoja seleccionada, los formatos de celdas y más opciones que tiene el usuario, en este caso en particular le está afectando visualmente el ajustar el texto junto con la alineación de la celda en opción a inferior. Si ajusta la hoja y quita el “ajustar texto” se acomodará como menciona que lo necesita. Mención aparte el espacio que contiene al final del texto, que no se ve pero incide en la vista. Puede acomodarlo a un solo renglón: Por limite de imágenes continuo la respuesta en la siguiente...
  13. Sin la información que te comente hace unos minutos, me parece que lo único que puedo recomendarte por ahora sería usar el apóstrofe (') Si el registro es manual quien capture debería ponerlo en cada ocasión. Si los datos llegan de forma externa entonces usa una columna "auxiliar" con una función: = "'" & A2 Así tendrás los números completos no importa si son largos o con ceros a la izquierda:
  14. Apreciado consultante y futuro lector debe ser confuso el pedir que los temas no sean extensos pero a la vez detallados enfocados en la raíz del inconveniente. Aunque aquí parece que se cumplen las mínimas condiciones de explicación junto al archivo con el ejemplo, se están dejando cosas a la deducción y lamentablemente no todos los maestros o usuarios avanzados tendrán la oportunidad de dedicarle un tiempo considerable a cada tema. Podrás decir, entonces para qué ofrecen ayudan si uno se va a quejar, y se cae en un ciclo extraño de ir y venir. En fin. Apreciado @RubenDario lo que dice la explicación no se parece a lo que describes dentro del libro: Me parece que lo ideal si me lo permites era resaltar lo que expusiste al principio: ¿NO SERÍA MEJOR DEJAR EN EL LIBRO ESE EJEMPLO DE AMBOS TIPOS DE NÚMERO EN UNA MISMA COLUMNA? Aún así está incompleto y ahora hay que adivinar si los datos se registran manualmente, se importan, se copian o pegan... Todas esas variantes influyen en las propuestas de ideas que puedan ayudarte.
  15. A como lo entiendo, con formato personalizado bastaría con elegir el tipo 0
  16. Saludos totales, Si con el formato de número ya te aparecen completos me cuesta comprender cuál sería el problema si lo que buscas es que se vean completos. Como sabemos puedes tener diferente formato por columna y la tabla respeta o debería respetar el formato. A menos que el formato de Texto o personalizado como mencionas dentro del libro sea necesario para algo adicional.
  17. Para este tipo de consulta es necesario tratar de replicar el error, si deja un ejemplo en PDF es posible que no reciba la atención que espera. Mande su ejemplo en Excel, así (tal vez) uno mismo no pueda regresar a sugerirle algo pero abre sus opciones de ayuda a los demás Expertos de la comunidad.
  18. Bueno sin usar VBA entonces queda abierto a ser creativos y poder proponer diferentes ideas que podrían servir o tal vez no. Entonces si con la tabla no hay nada que se pueda hacer de manera natural por proteger la hoja ¿por qué no pensamos en los datos que no quieres que sean editados? La falta de libro de ejemplo siempre dejará espacio a la especulación, "esos datos" ¿son valores por cada celda, son textos que se desbordan, son celdas combinadas...? O un largo etc. Bueno ninguna de las siguientes opciones sustituyen a la protección de la hoja pero considerando los límites podrías usar algunas de las siguientes: Validación de datos: Los rangos que necesites que no sean editados aplica una regla. Manipula alguna fórmula matricial: Las celdas que pertenecen al origen de estas fórmulas quedan restringidas y no pueden ser editadas o suprimidas. Trae los datos de otra hoja con la cámara de Excel, así dejas la hoja donde esta la tabla desprotegida y los datos sin posibilidad de edición. ¿Por qué no usar VBA? ¡¡¡Saludos Totales!!!
  19. Bueno, para asegurarte de que los nuevos datos se peguen a partir de la última fila utilizada, primero se debe encontrar la última fila con datos en “BASE GENERAL”. Puedes usar lastRow (Ejemplo): Encuentra la última fila con datos en "BASE GENERAL" lastRow = wsBaseGeneral.Cells(wsBaseGeneral.Rows.Count, "B").End(xlUp).Row + 1 Y modifica en tu código: Destination:=wsBaseGeneral.Range("B" & lastRow) Haz una prueba y regresas con el avance o comentarios, sino es uno mismo tal vez algún Maestro pueda aportar algo adicional. Nota: Para una ayuda mejor elaborada se recomienda poner un libro de ejemplo, esto evita conjeturas que no ayudan en la determinación de sentencias. Saludines.
  20. Hola, Aunque parece claro lo que busca, aún deja espacio a la especulación. Entiendo que parte de una lista el primer día del mes y cada día que pasa la lista sufre cambios. Es decir tienes adiciones y eliminaciones, pero no menciona si el primer día de cada mes, la lista es igual a la anterior del último día del mes pasado. Yo supondría que sí. Tiene que desarrollar en su tema cómo es que esa lista va creciendo, ¿Extrae, copia y pega, vincula, etc.? Además está el orden de los eventos y menciona que recibe un archivo por cada día. Considerando esas explicaciones puedo participar con una idea, y hago énfasis es una idea. Algo pragmático para encontrar las diferencias sería usar la función COINCIDIR() Para los nuevos su matriz de comparación será hacia “atrás” en el rango. Y para los eliminados será hacia “adelante”. Lo mostrado anteriormente fue un ejemplo y con el filtro puede ver los resultados. Después para acomodarlo en un solo resultado puede usar esas matrices combinando ORDENARPOR() con APILARV() Si le interesa la idea podría intentarlo y regresar con su avance o sus comentarios. También esperar un poco a que un Maestro le comparta alguna idea adicional. Saludines
  21. @Héctor Miguel Fíjate que el contar las palabras o los espacios, considero no es el desafío principal, sino la interpretación. Por ejemplo, LUNA puede ser nombre o apellido y como éste hay múltiples situaciones. Lo que me sorprende es el origen de los datos, por lo regular en los desarrollos el nombre o nombres y los apellidos se escriben en cuadros de texto independientes, algo que no pasa con los usuarios tradicionales cuando hacen su plantillas en las hojas de Excel, por lo regular los dejan juntos y luego ocurre que los necesitan separar para extraer por decir algo el número de identificación RFC, DNI, etc., concatenando algunas letras de los nombres y pasan este tipo de escenarios. Saludines.
  22. Saludos totales, Bueno, se tiene que editar un poco porqué el tratar de gestionar las múltiples variantes en los nombres aunque no es complicado hay que intentar ser creativos. =CONCATENAR(EXTRAE(A2, HALLAR("#", SUSTITUIR(A2, " ", "#", LARGO(A2) - LARGO(SUSTITUIR(A2, " ", "")) - C2)) + 1, LARGO(A2))," ",SUSTITUIR(A2,(EXTRAE(A2, HALLAR("#", SUSTITUIR(A2, " ", "#", LARGO(A2) - LARGO(SUSTITUIR(A2, " ", "")) - 1)) + 1, LARGO(A2))),"")) También se debería poder simplificar un poco: =LET( texto, A2, espaciosTotales, LARGO(texto) - LARGO(SUSTITUIR(texto, " ", "")), posicionSegundoEspacio, HALLAR("#", SUSTITUIR(texto, " ", "#", espaciosTotales - 1)), textoRestante, EXTRAE(texto, posicionSegundoEspacio + 1, LARGO(texto)), nombreRestante, SUSTITUIR(texto, textoRestante, ""), CONCATENAR(textoRestante, " ", nombreRestante) ) Y bueno, si nos ponemos creativos para anticipar opciones, se podrían reemplazar el "Y" y los "DE" con los "DEL" por "" para eliminarlos. Lo anterior es solo una idea, no es exacta para TODAS las posibles combinaciones, así por lo general hay que personalizar.
  23. Saludos cordiales. Antes de que cierren el tema, algo diferente que me parece oportuno comentar para los diferentes posibles lectores es que antes podías anidar efectivamente hasta 7 IF, ahora pueden ser hasta 64. Aunque no se recomienda pero se puede, y en esos casos es mejor combinar SI() con O() y también con Y()
×
×
  • 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.