Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation since 08/01/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 Esas fallas no están relacionadas a la versión del VBA o de Window (7, 10, etc.) sino a: - Uso de objetos ActiveX no compatibles entre ediciones de Office (32 o 64 bits, ojo, bits del Office, no importa lo de Windows). - Uso de objetos ActiveX compatible pero no registrados/instalados entre distintas PC. Recuerden que las librerías y objetos ActiveX (o similares), no "viajan" con los archivos de Excel. - "Llamadas" a funciones de la API de Windows solo para 32 bits. - Uso de propiedades y/u objetos de Excel "nuevas". Recuerden que las versiones más recientes de Excel tienen nuevos objetos y funciones que no son compatibles en versiones más antiguas. Si bien el VBA puede ser igual, obvio usar esas propiedades desde VBA traerá problemas en versiones más antiguas. - Ojo con lo que comentas, Haplox, si usas libros compartidos para trabajar... creo que sabes que traen muchos problemas que tampoco están relacionados a la versión de VBA necesariamente. Por ahí que se me escapan un par de cosas más. Saludos
    4 points
  13. Hola sagamoal Ser miembro de paga, te da algunas ventajas, como subir archivos. Prueba esta formula, deberás adecuar a tus rangos =SI(INDICE(MES(Hoja1!$D$5:$D$9)=7,COINCIDIR(B6,Hoja1!$B$5:$B$9,)),INDICE((Hoja1!$D$5:$D$9,Hoja1!$E$5:$E$9),COINCIDIR(B6,Hoja1!$B$5:$B$9,),,SI(Hoja2!C6="i",1,2)),"") B6 es el código, y lo busca en la hoja 1 en la columna que corresponda. te adjunto imágenes para que te guíes. hoja1 Hoja2 Espero te sea de utilidad Saludos, Silvia
    3 points
  14. Enhorabuena por tu cambio de nombre Silvia, digo ...Laura. Vamos a celebrarlo: Saludos.
    3 points
  15. Muerto el perro, se acabó la rabia. Ejemplo: Si quieres la acción sobre la Hoja2: Application.ScreenUpdating = False Set Activa = ActiveSheet Sheets("Hoja2").Activate ActiveWindow.FreezePanes = True Activa.Activate Application.ScreenUpdating = True
    3 points
  16. @paikerr como te va! Si porque es manual, pero lo resuelves de una manera simple, utilizando un evento como Open y listo Tal que: Hoja1.ScrollArea = "A1:H10" Saludos
    3 points
  17. @pegones1 sin afán de sonar negativo al tema ni generar conflicto, tú te mereces el 100% de la nota.
    3 points
  18. 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
  19. 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
  20. John Jairo V

    AYUDA CON BUSCAR

    ¡Hola a ambos! @YOUSAFJAMALD, para la próxima, sube un archivo Excel en vez de una imagen. Nos ayuda mucho más a ayudarte. Ahora, en cuanto a tu problema y como bien te comenta @DiegoPC, efectivamente, con la función BUSCAR "solita", el problema no es posible realizarlo, pero con "ayuda" si que es posible. =BUSCAR(2;1/FRECUENCIA(0;1/(1+(K$37:K$43<=N37)*K$37:K$43));L$37:L$43) otra alternativa un poco más "digerible": =INDICE(L$37:L$43;COINCIDIR(MAX(INDICE(K$37:K$43*(K$37:K$43<=N37);));K$37:K$43;)) o también usar la función BUSCARX (solo disponible en Microsoft 365 / Excel 2021 / Excel Online 😞 =BUSCARX(N37:N63;K37:K43;L37:L43;"No Existe";-1) Analiza detenidamente las propuestas. ¡Bendiciones!
    3 points
  21. 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
  22. Hola! @paikerr hace un tiempo estuve buscando hacer algo como lo que deseas, me parece que lo había conseguido, pero por el momento no tengo mis respaldos a mano, si lo encuentro te lo comparto. Te comparto este archivo que tenia a la vista. Sería más sencillo si quitas el clic derecho, con eso no tienes que esta liando en activar los menús en caso de requerirlos. Foro.xlsm
    3 points
  23. ¡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
  24. Gerson Pineda

    Remplazar simbolo

    Hola nico Para poder reemplazar ese signo se debe primero implementar una lógica, por ejemplo colocando a la par el numero cuil y listo, por lo que te adjunto una solución, bastante económica y simple Saludos Libro3.xlsx
    3 points
  25. ¡Hola, @edilbertosb! ( y @njnsp ) Revisa el adjunto, con una propuesta. ¡Bendiciones! dias-por-mes.xlsx
    3 points
  26. Carga una imagen detrás de otra, si no existe la imagen de la persona, quedará la imagen de error. Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next If Not Intersect(Target, Range("A7")) Is Nothing Then Image1.Picture = LoadPicture(ActiveWorkbook.Path & "\Fotos\error.jpg") Image1.Picture = LoadPicture(ActiveWorkbook.Path & "\Fotos\" & Target & ".jpg") Range("B7").Select End If End Sub
    3 points
  27. Hola a ambos. Yo redondearía la fórmula para los casos de ganancia 100%, en los que en el año 2020 es igual a 0, y en el año 2021 es mayor a 0. =SI(Y(C6=0;B6>0);1;SI.ERROR((B6-C6)/C6;"")) Saludos.
    3 points
  28. Hola a todos. Gabriel, utiliza la bola, que para eso se invento hace muchos años. Leer la mente es para personas que pueden hacer más de una cosa a la vez, no como nosotros. Saludos.
    3 points
  29. Una alternativa, pásale la celda resultado a esta macro: Sub SumaHojas(Celda As Range) Dim Desde As String, Hasta As String Desde = Sheets(2).Name Hasta = Sheets(Sheets.Count).Name Celda.Formula = "=SUM('" & Desde & ":" & Hasta & "'!A1)" End Sub
    3 points
  30. Antoni

    REGISTRO DE ASISTENCIA

    Mientras me miro lo de JSDJSD, puedes revisar lo mío. ESCUELA.xlsm
    3 points
  31. 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
  32. Antoni

    Buscador en ListBox VBA

    Prueba a ver que tal va. InicioPrueba.xlsm
    3 points
  33. Private Sub Fecha_Exit(ByVal Cancel As MSForms.ReturnBoolean) If Fecha <> Empty Then If Not IsDate(Me.Fecha) Then MsgBox ("Introduzca una fecha correcta"), vbCritical Cancel = True: Fecha = Empty Exit Sub End If If Not CDate(Fecha) = Date Then If MsgBox("La fecha no coincide con el día de hoy" & Chr(10) & _ " ¿Desea continuar?", vbYesNo + vbQuestion) = vbNo Then Cancel = True: Fecha = Empty Exit Sub End If End If Fecha = Format(CDate(Fecha), "dd/mm/yyyy") End If End Sub
    3 points
  34. 3 points
  35. 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
  36. ¡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
  37. 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
  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 @Leonardo Briceño, en este caso seria convertir tanto la búsqueda como el nombre de las hojas a mayúsculas independientemente de como estén escritas: Sub BuscarNombreHoja() Application.ScreenUpdating = False Dim existe As Boolean Dim nombreHoja As String Dim cont As Integer nombreHoja = UCase(InputBox("INGRESE EL NOMBRE DE LA HOJA")) existe = False For cont = 1 To Worksheets.Count If UCase(Worksheets(cont).Name) Like "*" & nombreHoja & "*" Then existe = True Exit For End If Next If existe = False Then MsgBox "NO SE ENCONTRÓ EL NOMBRE INGRESADO!" Else Sheets(Worksheets(cont).Name).Select End If End Sub Lo logras con UCASE(). Saludos
    3 points
  40. @jeaa mientras sigas ignorando los comentarios será difícil, está macro simplemente sustituye en tu hoja el nombre del alumno y la la nota, si hay algún cálculo y NO cuadra, pues es simplemente tu archivo y las formulas que tengas, NO es ningún problema de la macro. mientras NO termines de explicar que hace tu archivo o que es lo que necesitas y coloques algún ejemplo de lo que NO cuadra, pues será complicado. suerte
    3 points
  41. ¡Hola a todos! @Cristian 1985: Debes tener en cuenta que en la función INDICE, el argumento 0 hace que la función devuelva TODOS los valores de la columna a analizar (puedes probar con una función en modo edición, y presionar F9 para que lo constates). @victorjavega: Cristian si escribió bien mi nombre (eso hizo que me fijara en el tema). Tu llamaste a un "tocayo"... 😂 Para la propuesta, no necesitas ningún tipo de macros. Simplemente un control de formulario (control número), vinculado con la celda donde está el mes. Mejoré la fórmula que tenías en la selección del mes, además de la fórmula original, donde combino INDICE - COINCIDIR - INDICE. Revisa el adjunto. ¡Bendiciones! Calendario_aulas.xlsx
    3 points
  42. Tan simple como: Sub Filtro() With Worksheets("referencias").Range("A:C") .AutoFilter .AutoFilter 2, "Code61" .AutoFilter 3, "negro" End With End Sub
    3 points
  43. ¡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
  44. JSDJSD

    Macro Vlookup

    Me alegro, pero nunca olvides agradecer a quien te ayuda o intenta ayudar y en el foro se agradece mediante el corazoncillo que hay en la parte inferior derecha, un saludo.
    3 points
  45. JSDJSD

    Macro Vlookup

    Bueno te dejo otra opción, prueba y comenta Vlookup (prueba2).xlsm
    3 points
  46. 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
  47. Archivo modificado INVTA AGROCEN v2 .xlsm
    3 points
  48. Me alegro YianTheJOP, pero no olvides nunca agradecer a quien te ayuda o intenta ayudar y en el foro se agradece mediante el corazoncillo que hay en la parte inferior derecha, un saludo.
    3 points
×
×
  • Create New...

Important Information

Privacy Policy