Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation since 09/18/2020 in all areas

  1. LeandroA

    Nuevo Aporte

    Les comparto este ultimo proyecto en que estado jugando espero que les sea de utilidad.
    6 points
  2. Version 1.0.2

    58 downloads

    En este aporte intenta dar una fachada diferente a los controles clásicos de VBA que se utilizan en la parte de la hoja de Excel, no es que sean controles nuevos, sino que están retocados estéticamente con ayuda de shapes y automatizaciones, hay dos modulos adentro que nos ayudaran para hacer que todo esto funcione, tenia ganas de crear un formulario para que se automatice agregar el control a la hoja, pero por el momento tendrán que copiar y pegar los controles de esta hoja a la que quieran utilizar. los controles intentan simular la fachada de la interfaz de Bootstrap o controles web, los que mas les recomiendo es el control calendario que creo que quedo bastante fachero. esto aun no esta muy testeado por lo que puede haber que ir ajustando algunas cosas solo arme un grupo de controles, pero no se me dio para hacer alguna hoja con alguna utilidad que los emplee, si alguien se anima bienvenido bien cualquier duda pregunten, no soy de conectarme mucho pero tratare de ayudar.
    5 points
  3. Antoni

    ¡ 5.000 likes !

    A por los 10.000. 🙂
    5 points
  4. Hola a los dos Yo creo que entendí otra cosa.. 😆🤪 Saludos, Silvia Ejemplo asignacion de ID a cada semana de acuerdo a historial sq.xlsx
    5 points
  5. 4 points
  6. Onkey, tiene un argumento opcional, que es llamar a un procedimiento, bueno ahi agregas el mensaje y listo Sub MostrarMensaje() If Application.OnKey Key:="{c}" Then "MiSub" End Sub Sub MiSub() VBA.MsgBox "Hola mundo" End Sub Saludos
    4 points
  7. También puedes configurar la hoja desde las propiedades en el proyecto VBA Mira la imagen Saludos
    4 points
  8. Hoy, 14/02/2021, se cumple el 75 aniversario de la creación del primer ordenador. Se programaba por cables conectando funciones preestablecidas por hardware, podía hacer hasta 500 sumas por segundo, ocupaba 170 metros cuadrados y gastaba como 18.000 bombillas. (180 Kw/hora) Os dejo el artículo de El País. 75 aniversario de la creación de ENIAC, el primer ordenador electrónico
    4 points
  9. Hola JOCAMI90 la formula tenía una falla =SUMAR.SI.CONJUNTO(Datos!$D$3:$D$5000,Datos!$B$3:$B$5000,"*WH/"&B$3&"*",Datos!$C$3:$C$5000,$A4,Datos!$A$3:$A$5000,">="&$B$1,Datos!$A$3:$A$5000,"<="&FIN.MES($B$1,0)) considera que mi separador de argumentos es la coma (,), si el tuyo es otro, corriges. esto solo funciona para las columnas B y C que pertenecen a Setiembre, deberás cambiar manualmente B1, por D1 en Octubre, esa situación se dá , debido a que utilizaste celdas combinadas, lo que podrías hacer es descombinar las celdas y colocar las fechas en todas las columnas, en ese caso, la formula quedaría así: =SUMAR.SI.CONJUNTO(Datos!$D$3:$D$5000,Datos!$B$3:$B$5000,"*WH/"&B$3&"*",Datos!$C$3:$C$5000,ESPACIOS($A4),Datos!$A$3:$A$5000,">="&B$1,Datos!$A$3:$A$5000,"<="&FIN.MES(B$1,0)) y podrías arrastrarla a la derecha y hacia abajo.. sin modificar nada. Lo de la función Espacios, queda a tu decisión, (según lo que te comento líneas abajo), no olvides que cuanto mas cálculos haga la formula, mas ralentizará tu archivo. Además toma en cuenta lo siguiente: En la columna A, de la hoja resultados, no se si todos, pero por lo menos, los que revisé, tienen un ESPACIO al final. Para que un Texto coincida con otro, debe estar escrito EXACTAMENTE IGUAL que en la base de búsqueda. podríamos agrandar la formula, para quitar los espacios, de esta forma =SUMAR.SI.CONJUNTO(Datos!$D$3:$D$5000,Datos!$B$3:$B$5000,"*WH/"&B$3&"*",Datos!$C$3:$C$5000,ESPACIOS($A4),Datos!$A$3:$A$5000,">="&$B$1,Datos!$A$3:$A$5000,"<="&FIN.MES($B$1,0)) o podrias crear una columna auxiliar provisionar, colocas por ejemplo en k4 =ESPACIOS(A4) Lo llevas hacia abajo y luego lo copias A VALORES en A. ======================== tienes otro inconveniente con los WH/IN/00012 WH/N/A/00003 WH/OUT/00058 WH/IN/00015 como ves, WH/IN y WH/N no son iguales, por lo que esa no se sumará, debes corregir en la base. =================== Toma en cuenta que nunca deberías trabajar con Rangos de columnas completas, tipo A:A, B:B, si es el tema, que tienes todas las columnas llenas de datos (que lo dudo), ese libro te dará muchos problemas, por la lentitud de los cálculos.. ya que tendrá que evaluar las cuchucientas mil filas. Es mejor que trabajes con rangos amplios, dando un margen extra... (o también puedes convertir tu base en TABLA, en ese caso las formulas se autoajustan automáticamente. Bueno, creo que son todas mis observaciones.. Por si acaso incluyo tu archivo. saludos, Silvia AYUDA EXCEL EJEMPLO.xlsx
    4 points
  10. Como @Antoni debe estar muy ocupado, adjunto un archivo con 3 macros para obtener el día de la semana desde el 0100-01-01 (aaaa-mm-dd), en formato ISO 8601, que es el primer día admitido por VBA. La función GetWeekDayName() devuelve el día de la semana si se le pasa una cadena de texto en formato ISO 8601, llamando a las otras dos macros. Es fácil convertir una string con una fecha en formato de texto al formato estándar ISO. Option Explicit Function GetWeekDayName(sDate As String) As String ' ' VBA WeekdayName Function ' Dim iWeekDay As Integer iWeekDay = GetWeekDay(sDate) GetWeekDayName = WeekdayName(iWeekDay, False, vbMonday) End Function Function GetWeekDay(sDate As String) As Integer ' ' VBA WeekDay Function ' Dim dtDate As Date dtDate = GetSerialDate(sDate) GetWeekDay = Weekday(dtDate, vbMonday) End Function Function GetSerialDate(sDate As String) As Double ' ' VBA DateSerial Function ' Dim iYear As Integer Dim iMonth As Integer Dim iDay As Integer iYear = Left$(sDate, 4) iMonth = Mid$(sDate, 6, 2) iDay = Right$(sDate, 2) GetSerialDate = DateSerial(iYear, iMonth, iDay) End Function En el fichero adjunto he incluido las fechas especiales que: Fechas incorrectas en Excel inferiores al 1900-03-01 Fecha errónea en Excel y en VBA: 1900-02-29, ya que el año 1900 no es bisiesto. Primera fecha correcta en VBA: 0100-01-01 Fechas que no han existido en el Calendario Gregoriano, anteriores al 1582-10-15 Último día correcto en Excel y en VBA: 9999-12-31 @zelarra821 , @isidrod , espero que sea de ayuda y ayude a comprender el mundo pasado, presente y futuro. Años Menores que 1900 PW1.xlsm
    4 points
  11. Nunca debes utilizar los textbox, la función Val(), ni la función Format() en los cálculos, utiliza las variables y las funciones de conversión del tipo adecuado. He añadido un pequeño calendario. PRUEBA1.xlsm
    4 points
  12. Hola pinoji, Tambien estoy aprendiendo y la ayuda que te dí, creeme lo aprendi aqui si tus primeras dudas ya se solucionaron, seria bueno que lo des por concluido y solucionado, y abras otro tema con tus otras consultas. eso ayuda a que otro foristas encuentren soluciones a sus casos y tambien ayuda a que otro foristas expertos nos puedan ayudar a resolver lo que necesitemos.. estamos en contacto
    3 points
  13. pegones1

    Juego Atrapa la Bola

    ⛱ He programado un nuevo juego para pasar un buen rato este verano atrapando bolas sin salir de Excel. © Como no puedo adjuntarlo en el subforo de "Ideas y Aportes", quisiera que descargaras el nuevo juego "Atrapa la Bola" desde mi blog: Catch the Ball Game - Juego Atrapa la Bola y decirme si funciona en tu versión de Excel. 🎴 Con este juego del verano puedes aprender a programar macros VBA de una manera diferente a cómo las usas en la oficina. Y también aprenderás trucos para avanzar en tus conocimientos de Excel. 😏 Si alguien te mira por encima del hombro mientras juegas, puedes ocultar el juego con un solo clic del ratón. 🚮 A ver si sabes decirme cómo ocultar el juego de miradas indiscretas en un comentario...
    3 points
  14. perdón creo que mi gata camino sobre el teclado y corrió el código Contrastar Imagenes.xlsm
    3 points
  15. Enhorabuena por tu cambio de nombre Silvia, digo ...Laura. Vamos a celebrarlo: Saludos.
    3 points
  16. Corregido y un poco más eficiente: Sub SustituirCaracteres() Dim Valor As String, Celda As Range, Cadena As String Application.ScreenUpdating = False 'Colocar un punto como caracter de sustitución si el caracter a sustiuir se ha de eliminar Cadena = "àaèeìiòoúuäaëeïiöoüuñn,.@.&.=.\./.:.-.%.+.=.^.$.!.¨.|.>.<.®.#.(.`._.©.~.)." '---------------------------------------------------------- Set rango = Range("A1,C7,D10:E14,F1:H1") 'Rango a sustituir '<---------- '---------------------------------------------------------- For Each Celda In rango Valor = Celda.Text For x = 1 To Len(Valor) i = InStr(Cadena, Mid(Valor, x, 1)) If i Mod 2 = 1 Then If Mid(Cadena, i + 1) = "." Then Valor = Replace(Valor, Mid(Cadena, i, 1), "") i = i - 1 Else Valor = Replace(Valor, Mid(Cadena, i, 1), Mid(Cadena, i + 1, 1)) End If End If Next Celda.Value = Valor Next End Sub
    3 points
  17. Te dejo el archivo que al final abrí en Excel 2019. Nos comentas, Saludos. Mis contraseÃ_±as1.2.xlsm
    3 points
  18. @pegones1 sin afán de sonar negativo al tema ni generar conflicto, tú te mereces el 100% de la nota.
    3 points
  19. Prueba así: Sub last_row() Application.ScreenUpdating = False With Hoja1 For x = 2 To .Range("A" & Rows.Count).End(xlUp).Row If Not .Range("A" & x) = .Range("A" & x + 1) Then .Rows(x).Copy Hoja2.Rows(Hoja2.Range("A" & Rows.Count).End(xlUp).Row + 1) End If Next End With End Sub
    3 points
  20. Abre el adjunto, al pulsar sobre la imagen START, se inicia un bucle sin fin, al pulsar sobre la imagen STOP, se detiene. Bucle sin fin.xlsm
    3 points
  21. Un poco más rápido y ordenado. Creo que no necesitas el botón buscar, para agilizar se podría condicionar la búsqueda a que se teclearan como mínimo 3 caracteres en el textbox. Ya comentarás. suministros (1).xlsm
    3 points
  22. Adjunto modificacion agregando solución con formula Ecuación Haversine en Excel.xlsm
    3 points
  23. Prueba el adjunto con: Tus datos originales. Una tabla auxiliar para convertir los datos originales en una tabla normalizada. Una tabla dinámica ordenada por productos, ¡como querías! Una tabla dinámica ordenada por productos e ingredientes, ¡como a mí me apetece! Una segmentación de datos para filtrar por productos. Pasos a seguir: Inserta nuevos productos e ingredientes en la columna A con el mismo formato que el original. Aumenta el tamaño de la tabla auxiliar, arrastrando hacia abajo la esquina inferior derecha de la celda E17. Actualiza las tablas dinámicas desde el menú: Datos > Actualizar todo Filtrar productos con la segmentación de datos. Cambiar el formato de las tablas dinámicas seleccionando en el menú: Diseño > Estilos de tabla dinámica Este es el resultado obtenido: Salu2, Pedro Wave Ingredientes_PW1.xlsx
    3 points
  24. Hola!! Otra alternativa, también con macros, pero un poquito más corta y preparada para que el listado de la izquierda crezca sin tener que hacer modificaciones. Listado Productos_Diego.xlsm
    3 points
  25. Hola a todos, Soy nuevo por aquí, espero poder aprender más de lo poco que sé y ayudaros si puedo en algo. Estaré encantado de compartir mi conocimiento y conocer vuestras habilidades de Excel. Si quieres un reto de Excel te propongo algo a ver si lo resolvemos, ya me cuentas. Saludos
    3 points
  26. ¡Hola a ambos! Ya teniendo la fecha anterior, puedes usar esta fórmula: =INDICE(E14:E23;COINCIDIR(1;INDICE((F14:F23>8)/(E14:E23>J17););)) ¡Bendiciones!
    3 points
  27. Hola a todos; -Me respondo a mi mismo. He conseguido lo que pretendía añadiendo las siguientes líneas al código. No sé si el orden es del todo correcto pero cumple la función que buscaba. Aquí os dejo del código de como ha quedado la macro. Private Sub btn_Aceptar_Click() Application.ScreenUpdating = False '<<<<Código añadido If txt_pass.Value = UCase(Sheets("Registro").[G3]) Then Dim HOJA As String '<<<<Código añadido Label2.Visible = True Hoja6.Range("A3") = "Admin" mostrarHojas HOJA = ActiveSheet.Name '<<<<Código añadido ActiveSheet.Visible = 2 Unload Me Sheets(HOJA).Visible = True '<<<<Código añadido Sheets(HOJA).Select '<<<<Código añadido Else MsgBox "Debe registrarse para poder aceder al formulario", vbInformation, "Aviso" Unload Me 'frm_Login.Show End If Application.ScreenUpdating = True '<<<<Código añadido End Sub
    3 points
  28. Antoni

    REGISTRO DE ASISTENCIA

    Mientras me miro lo de JSDJSD, puedes revisar lo mío. ESCUELA.xlsm
    3 points
  29. Antoni

    Copia seguridad

    En España, Galones: Distintivos que indican la jerarquía militar, coloquialmente indica el nivel de conocimiento de un tema/situación.
    3 points
  30. Antoni

    Buscador en ListBox VBA

    Prueba a ver que tal va. InicioPrueba.xlsm
    3 points
  31. Es muy fácil, yo tengo cosas hechas así. Para el ejemplo, no hace falta que mandes lo que tu tienes, escribe en un excel en blanco, lo que tienes (sin formatos ni nada) y por otro lado, pones lo que deseas. Es lo que hacemos todos 😉
    3 points
  32. 3 points
  33. Hola Las tablas estructuradas ya traen esa caracteristica, una vez la activas automaticamente toma la ultima fila para el total, ademas no solo SUMA se puede usar, no todo es macros o Vba Mira la imagen Saludos
    3 points
  34. ¡Hola Conrado! Puedes usar la siguiente fórmula en la celda E7: =SUMAR.SI($K$8:$K$13;D7;$L$8:$L$13)*24 Espero que te sirva.
    3 points
  35. ¡Hola a todos! En ese orden de ideas... para qué tablas o dinamización de rangos, si se puede, simplemente: =MAX(1:1) ¡Bendiciones!
    3 points
  36. Por el mismo precio también va incluido el botón de maximizar. 😂 Y no, no puede aparecer en la barra de tareas, que yo sepa. Minimizar.xlsm
    3 points
  37. Haplox

    macro lenta

    @joselica , te dejo una solución. Prueba y comenta Saludos Copia de CONTROL DESAYUNOS - macro lenta.xlsm
    3 points
  38. Estimados, qué bueno que se resolvió el problema, pero jamás jamás jamás, cosas como esa ocurren de la nada. Entonces, solo hay estas posibilidades: - Rubén Darío o alguien lo cambió adrede (sé que no) - Rubén Darío o alguien lo cambió accidentalmente. Si fue "alguien" quizá no vio el dilema, o si lo vio, salió corriendo sin decir nada jejeje. Saludos.
    3 points
  39. ¡Hola a todos! Dejo otra opción en el adjunto. Como recomendación, siempre que se concatenen valores de dos columnas en una fórmula es mejor unirla con un carácter (ej: guión), para diferenciar totalmente las opciones. Si se concatena directamente, se pueden cometer errores de coincidencia por tipeo (aunque estrictamente este no sea el caso): Ejemplo: SIN COLOCARLE GUIÓN: Si referencia es AC e Idioma es ES, al concatenar ambos queda ACES. Si referencia es A e Idioma es CES, al concatenar ambos también queda ACES. Entonces este sería un "falso positivo". COLOCÁNDOLE GUIÓN: Si referencia es AC e Idioma es ES, al concatenar ambos con guión queda AC-ES. Si referencia es A e Idioma es CES, al concatenar ambos queda A-CES. Al buscarlo con la fórmula propuesta no lo encuentra ( ¡correcto! ) Revisar adjunto. ¡Bendiciones! Libro2.xlsx
    3 points
  40. Antoni

    cronograma por etiquetas

    Revisa el adjunto. Pruebamant.xlsm
    3 points
  41. Hola a ambos, te dejo otra opción más. Sub CopiarFiltro3() Hoja2.Range("A1").CurrentRegion.Delete Hoja1.Range("A1").CurrentRegion.SpecialCells(12).Copy Hoja2.Range("A1") End Sub
    3 points
  42. Cualquiera de estas 2 macros te vale: Sub CopiarFiltro1() Hoja2.Range("A:D").Clear Hoja1.Range("A1:C" & Hoja1.Range("A" & Rows.Count).End(xlUp).Row).Copy Hoja2.Range("A1") End Sub Sub CopiarFiltro2() Hoja2.Range("A:D").Clear Hoja1.UsedRange.SpecialCells(xlCellTypeVisible).Copy Hoja2.Range("A1") End Sub
    3 points
  43. Hola El método Open del objeto Workbook permite un parámetro para colocar la clave: Workbooks.Open Filename:=ThisWorkbook.Path & "\libro1blablabla.xlsx", Password:="123" Puedes usarlo tres veces seguida, o algo así, y listo.
    3 points
  44. considera lo siguiente: las reglas de validación SON (y solo funcionan) para entradas "directas" en las celdas (por el usuario) NO funcionan si la celda es fórmula o se ingresa por copiar > pegar o medios de automatización (macros p.ej.) por lo mismo, el mensaje de entrada sirve como ayuda visual para que el usuario sepa el tipo de dato a ingresar si necesitas evitar (prevenir, corregir, ...) que una fórmula devuelva ceros, requieres de las macros (y unas cuantas "vueltas de tuerca")
    3 points
  45. Prueba con esto: Sub TransponerA1SX42() Application.ScreenUpdating = False y = Columns("UT").Column For columna = 1 To Columns("SX").Column x = (columna - 1) * 42 + 1 Range(Cells(x, y), Cells(x + 41, y)).Value = _ Range(Cells(1, columna), Cells(42, columna)).Value Next Columns(y).Sort Key1:=Columns(y) End Sub
    3 points
  46. JSDJSD

    Macro Vlookup

    Bueno te dejo otra opción, prueba y comenta Vlookup (prueba2).xlsm
    3 points
  47. Otra opción, usando fórmulas matriciales (se ingresan presionando la combinación de teclas Ctrl + Shift + Enter). Saludos! Ejemplo asignacion de ID a cada semana de acuerdo a historial.xlsx
    3 points
  48. Hola @Serch! Esta vez me superé a mi mismo y mi propuesta no tiene 1 ni 2 sino 3 columnas auxiliares jajajajajajaja Mi propuesta es bastante engorrosa, pero bueno, paso a explicarla jajajjaaja: La Columna auxiliar1 cuenta la cantidad de repeticiones de cada ID en el historial. La Columna auxiliar3 ordena las repeticiones de acuerdo a la frecuencia de cada una de ellas, con la función JERARQUIA. La Columna auxiliar2 tuve que agregarla para que la función JERARQUIA obtuviera los valores correctos, ya que ésta no ordena los valores repetidos (por ejemplo, a los ID que no aparecían esa función les asignaba a todos el mismo orden). Por último, uso la función BUSCARV para obtener cada uno de los ID haciendo referencia a los valores de la Columna auxiliar3. Tuve que usar las funciones TRUNCAR y CONTARA para que, al asignar 1 vez cada ID, comenzara de nuevo (bucle). Agregué un formato condicional para resaltar los ID repetidos por cada fila y que, si lo deseas, cambies manualmente los que se repitan. Siempre que agregues manualmente los valores sería recomendable asignar los primeros ID de la columna ya que son éstos los que tienen menor frecuencia. Al agregar una semana nueva se deberían agregar las fórmulas en la columna correspondiente (en este caso sería la W41), eliminar las fórmulas de la semana anterior (la W40) copiando los valores y usando "pegado especial => valores" y luego extender los rangos usados en la columna auxiliar1. La verdad espero que alguien proponga una solución más simple que la mía jajajajaja. Quizás se podría obviar todo lo que agregué y usar solamente el formato condicional. O tal vez en este caso podría ser conveniente usar macros para asignar los ID, o también se podría usar una tabla dinámica para ver las frecuencias de cada valor y asignar los ID manualmente. Saludos! Ejemplo asignacion de ID a cada semana de acuerdo a historial.xlsx
    3 points
×
×
  • Create New...

Important Information

Privacy Policy