Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation since 12/27/2020 in all areas

  1. 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 l
    4 points
  2. 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"
    3 points
  3. 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
  4. 3 points
  5. Hola @tupy77 Según entiendo, quieres que en una hoja se pongan varias tablas con 1 fila en blanco entre ellas y que contengan "N" filas según un filtro establecido. El filtro debe ponerse en un cuadrito. Supongo que son filtros diferentes para cada tabla. La mejor forma para hacerlo es, como dice @Silvia, usando tablas dinámicas y segmentadores. El problema es que solo verías una tabla (no varias, como quieres) pero.... ¿por qué mostrar muchas tablas si puedes hacerlo solo en una y cambiar los filtros con un solo clic? No es algo difícil de hacer. La tendencia de crear muchas ta
    2 points
  6. Sub Transponer() Application.ScreenUpdating = False fila = 1 For x = 2 To Range("A" & Rows.Count).End(xlUp).Row cadena = Split(Range("B" & x), "|") For y = 0 To UBound(cadena) fila = fila + 1 Range("D" & fila) = Range("A" & x) Range("E" & fila) = cadena(y) Next Next End Sub
    2 points
  7. Click derecho en la columna E para incrementar el número de cheque Click derecho en la columna F para repetir el número de cheque Autonumeración de cheques.xlsm
    2 points
  8. Antoni

    AYUDA CON PLANTILLA

    Esto es lo máximo que se puede reducir el proceso. Abre el adjunto y pulsa sobre la flecha azul, se copiarán los turnos de mañana, tarde y noche del día de la fecha que hay en C3. Plantilla de Servicios5 (Full).xlsm
    2 points
  9. Solo recordar que hay un evento change de hoja a nivel de libro en ThisWorkbook.
    2 points
  10. A ver si lo he entendido. Abre el adjunto y pulsa sobre la flecha. PC1 2019-2 EX53-EN55 Data.xlsm
    2 points
  11. Hola! Utilizando el archivo de @njnsp ahora si puedo colaborarte [como ves no era nada dificil, subir un libro como muestra!] En la hoja Turnos_ pase los datos a tabla estructurada, luego la transformo con power query, seguido la cargo al modelo de datos de Excel [que es power pivot, activalo], seguido armo una simple tabla dinamica, donde se podra filtrar por empleado sus turnos Saludos Turnos de empleado power query_GP.xlsx
    2 points
  12. Hola Javier Creo que hay varias cosas que no están hechas de la manera "idónea". Si planteamos una solución complicada, se nos hará difícil todo el trabajo con la plantilla. Los cambios que yo haría son los siguientes: Una sola hoja en lugar de una hoja mensual, pero se tendría que agregar una columna donde se ponga el periodo (enero 2021, febrero 2021, etc) Los conceptos que se puedan elegir de una lista desplegable (validaciones), cosa que no hay opción de equivocarse. El resumen se haría con una tabla dinámica.
    2 points
  13. Ya que lo tenía hecho..... MExcel.xlsm
    2 points
  14. Hola @Austrolopitecus Yo se que a mis compañeros no les gusta que os demos el trabajo hecho, pero bueno, es mi primera vez; es mi manera de agradecer al foro todo lo que ellos me han ayudado. Te paso una muestra de las muchas que habrá y que es bastante mejorable, pero que vale como punto de partida. La hoja turnos, tiene algo similar a lo tuyo (diseño y florituras lo dejo para los creativos). Solo se ha "perpetuado" los días del año para que valga para cualquier año (cambiándolo en B2). Y lo que tu necesitabas está en la hoja cuadrante semanal, en donde solo poniendo el nu
    2 points
  15. Te lo dejo de nuevo, creo que ahora sí está PROGRAMA RUBEN 2.xlsm
    2 points
  16. @Benito Bartolomé, con elpermiso de @Antoni (espero 😇), prueba lo siguiente: Sub Borrar(): On Error Resume Next Application.ScreenUpdating = False Hoja4.Range("A5:G" & Hoja4.Range("A" & Rows.Count).End(xlUp).Row).Delete Hoja4.Range("A2:B2").ClearContents Application.ScreenUpdating = True End Sub
    2 points
  17. Siento no ver el problema. En tu fichero en esa columna tienen todos el formato que pides. Es más, he hecho 2 pruebas y pasa los datos como pides... Algo me estoy perdiendo
    2 points
  18. Yo mejor no hablo mucho sobre el tema, lo mio no son los medios de comunicación tradicionales, Fake News.. Para mi esta claro lo que está pasando... N.O.M .... Para tí y tu familia mis mejores deseos, siempre hay que tener fé en que las cosas van a mejorar. Saludos.
    2 points
  19. Pues por mi parte, no acepto colaborar en privado, te imaginas que seria del foro, si todo fuese respondido sin que nadie vea nada, lo tuyo es problema de percepción, pero en definitiva siendo así, debes resolverlo por tus propios medios Negativo! @GabrielRaigosa, además de paso, deseo que la pases genial estos últimos días del 2020, que a sido mas que desastroso, especialmente para los que viven "aterrorizados"! [pero creo que tu no eres uno de ellos jeje] Saludos
    2 points
  20. A ver, ¿A qué te refieres con "actualizar"? Llevar los registros que no estén,quitar los duplicados... ¿Especifica qué necesitas realmente? Ya nos dirás a qué te refieres, a ver si nos la compartes... 😁
    2 points
  21. Gracias al foro hermano "todoexcel" y @Héctor Miguel se logró el propósito! https://foro.todoexcel.com/threads/borrar-modulo-trabajando-con-proyecto-protegido.55439/#post-236663 Comparto igual la solución por posible consulta similar: Option Private Module Const clave As String = "aBc" Const esteLibro As String = "delete vbacode (exceluciones).xlsm" Sub quitaPassWordVBA() Unload UserForm1 Application.SendKeys "%{f11}{l 4}%q", True Workbooks(esteLibro).Activate Application.SendKeys "%{f11}^r{down}" & clave & "~%q", True Application.OnTime Now, "limpiamodulo2" En
    2 points
  22. Private Sub CommandButton1_Click() saltos = Len(TextBox1.Value) - Len(Application.WorksheetFunction.Substitute(TextBox1.Value, Chr(10), "")) texto = TextBox1.Value For i = 1 To saltos Hoja2.Cells(i, 1) = Mid(texto, 1, InStr(1, texto, Chr(10)) - 2) texto = Application.WorksheetFunction.Substitute(texto, Mid(texto, 1, InStr(1, texto, Chr(10))), "", 1) Next Hoja2.Cells(i, 1) = texto End Sub Private Sub UserForm_Activate() TextBox1.Text = Sheets("Hoja1").Range("a1").Value End Sub
    1 point
  23. Vaya por delante que no se como se hace. Quizá eso se pudiera resolver con algún tipo de segmentación de datos que te filtre los datos, pero en una sola tabla. En dos tablas opino como Silvia, juraría que es imposible, porque aunque se usaran rangos dinámicos, en algún sitio tienes que poner la primera linea de la segunda tabla.
    1 point
  24. Disculpa, ya he pillado el segundo punto. De ahí a que el código ponga " Agregamos o modificamos items". Vale tanto para un roto como un descosido 😀🙋‍♂️
    1 point
  25. Esto funciona, ¿A ver si eres capaz de encontrar la diferencia con el anterior? Private Sub btn_Editar_Click() 'Agreamos/Modificamos los Items With ListBox1 If .ListIndex = -1 Then Fila = Range("A" & Rows.Count).End(xlUp).Row + 1 Else Fila = .ListIndex + 2 End If Range("A" & Fila) = TextBox1 Range("B" & Fila) = TextBox2 .List = Range("A2:B" & Range("A" & Rows.Count).End(xlUp).Row).Value Borrar End With End Sub
    1 point
  26. las columnas que mencionas fueron solo para tener una "visión" de las consideraciones necesarias para distinguir días y horas entre laborables o fin de semana y festivos y la separación de fecha-hora es solo trabajar en dos columnas: una la parte entera (días) y la otra la parte fraccionada (horas), funciones (obviamente) entero(... y residuo(... 1) y finalmente se convierte a valores y se elimina "la fuente" pero una vez que ha quedado visto (y comprendido), podemos regresar a tu modelo de base (menos columnas auxiliares para su comprensión) y resulta el nuevo adjunto horas x turno v2
    1 point
  27. 1) prefiero multiplicar *24 al final (y no en cada paso) 2) ya sabía que ibas a necesitar distinguir los festivos analiza ambos puntos en esta versión mejorada (pregunta lo que no entiendas) horas x turno v2 (ambos).xlsx
    1 point
  28. Hola! Así es como me sale a mí cuando lo abro. ¿De qué parte de la paleta escoges el color? ¿De colores del tema o colores estándar?
    1 point
  29. Lo siento @jeaa , pero sigo sin verlo (ya te he dicho que de contabilidad 0)... Tu solo copias los datos del T4-1997 y los traspones en la tabla, pero ¿Y si tienes más de una fila (una por cada periodo de fechas que elijas?
    1 point
  30. Usando la propiedad .RowSource, el listbox puede contener cualquier número de columnas. He añadido la hoja Consulta, si quieres puedes ocultarla, pero no eliminarla. BMExcel.xlsm
    1 point
  31. Ese error es bastante inespecífico, aunque suele indicar que algo no encuentra. En tu caso creo que es por todos los nombres con rango que tienes. La manera de poder pasar los datos es separar el copy y el paste. Usa el siguiente código: With wbOr.Sheets("EPYC") .Range("A8:F78").Copy wbDes.Sheets("Personal").Range("A8:F78").PasteSpecial xlPasteValues .Range("F2").Copy wbDes.Sheets("Personal").Range("G3").PasteSpecial xlPasteValues .Range("I2").Copy wbDes.Sheets("Personal").Range("H3").PasteSpecial xlPasteValues Set rngOT1 = .Range("A:M") Set rngCopy = I
    1 point
  32. Efectivamente, .Sort se utiliza pata ordenar. Lo primero que hace la macro es copiar y ordenar los datos de vendedores y frutas, elimina los duplicados y confecciona los encabezamientos, posteriormente se eliminan los datos y se confecciona el resumen. .Set es una instrucción para asignar objetos, no valores. Ejemplo: Dato = Range("A1") asigna el valor de la celda A1 a la variable Dato. Set Dato = Range("A1") crea un objeto Range con la celda A1 en la variable Dato. El método .Find, obtiene un objeto Range con la celda del valor buscado, de esta manera, podemos
    1 point
  33. Lo suyo sería una tabla dinámica, pero con macros e interpretando a mi bola las dudas de Haplox sería algo parecido a lo del adjunto, ábrelo y pulsa sobre la figura azul. Válido para cualquier número de vendedores y frutas. PruebaVendedor.xlsm
    1 point
  34. @rubenwinner, te dejo una solución (creo...). Mira y comenta PROGRAMA RUBEN 2.xlsm
    1 point
  35. Sustituye tu código por este, a ver si hay suerte: Private Sub CommandButton1_Click() With Hoja14 For x = 2 To .Range("A" & Rows.Count).End(xlUp).Row + 1 If .Range("B" & x) = TextCLIENTE And _ .Range("C" & x) = TextPRODUCTO Then Exit For End If Next .Cells(x, 1) = TextFECHA .Cells(x, 2) = TextCLIENTE .Cells(x, 3) = TextPRODUCTO .Cells(x, 4) = TextPRECIO End With End Sub
    1 point
  36. Mis disculpas. Private Sub ActualizarTabla(Tabla As Worksheet) Dim Serial As Range Application.ScreenUpdating = False With Tabla For x = 5 To .Range("E" & Rows.Count).End(xlUp).Row Set Serial = Sheets("Base de Datos Maestra").Columns("E").Find(.Range("E" & x), , , xlWhole) If Not Serial Is Nothing Then .Range("B" & x) = Serial.Offset(0, -3) .Range("C" & x) = Serial.Offset(0, -2) .Range("D" & x) = Serial.Offset(0, -1) End If Next End With End Sub
    1 point
  37. Lo que suponía, la disposición de los datos no es la mejor, respecto a los errores, pues deja el cero o vacío, en la formula Fíjate en el adjunto, utilizo el de línea con marcadores [no apilado] Saludos grafico.xlsx
    1 point
  38. Sin ver la disposición de los datos no es fácil interpretar, también considera que los decimales pueden ser un factor no tan preciso para tu objetivo Pero puedes probar el grafico de línea apilada con marcadores o el de área apilada, para que las series se vean separadas o independientes Suerte! Saludos
    1 point
  39. Ejecuta la macro Actualizar: Sub Actualizar() ActualizarTabla Sheets("Entradas") ActualizarTabla Sheets("Salidas") End Sub Private Sub ActualizarTabla(Tabla As Worksheet) Dim Serial As Range Application.ScreenUpdating = False With Tabla For x = 5 To .Range("E" & Rows.Count).End(xlUp).Row Set Serial = Sheets("Base de Datos Maestra").Columns("E").Find(.Range("E" & x), , , xlWhole) If Not Serial Is Nothing Then .Range("B" & x) = Sheets("Base de Datos Maestra").Range("B" & x) .Range("C" & x) = Sheets("Base de Datos Maestra").Range("C" &
    1 point
  40. A ver, esque ese fichero está lleno de trampas . En la imagen verás que hay celdas sin datos,por lo que al hayar la última fila, no corresponde con la real. Cambia el cálculo de uFd a una columna en la que estés SEGURO de que tendrán todas datos (me imagino que la columna con las fechas) Esto solo te va a complicar y retardar la ejecución, puesto que tendrías que mirar en todas las hojas ¿No? Y más cuando cada hoja es diferente. Tendrías que volver a poner un contador u calcular últimas filas, columnas, etc. Pero tú mismo. Modifica el código a lo siguiente (solo está para una fe
    1 point
  41. Buenas noches. No se si he entendido bien lo que pides Soy nuevo en esto, pero dejo el codigo que yo uso, espero te sirva. Sub Eliminar_CodigoVBA() 'Caja para el ingreso del Password para poder borrar ultimo registro Dim PS As String Dim PS2 As String PS2 = "Clave del proyecto" ''PS = InputBox("Por favor ingrese su Password") PS = InputBoxDK("Por favor ingrese su Password", "Auxiliar de Acceso") If PS = PS2 Then 'Fin de la caja 'MdgBox ("fin de la caja de contraseña") 'MdgBox ("Entrando al codigo de borrado") Dim VBAProj As Object Dim VBAComp As Object Dim VBAComps As Objec
    1 point
  42. Hola, Puede consultar y transformar la base de datos con Power Query para hacer los conteos. La respuesta es tan general como la consulta que no aporta mas información. Puede comenzar estudiando que es el Power Query en YouTube encuentra muchos videos que le enseñaran a usar esta herramienta. Saludos.
    1 point
  43. Felices fiestas también para tí, aunque no debería felicitarte después de esa insinuación Anda que vosotros estáis bien tambien... 🤡
    1 point
  44. ¡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.
    1 point
  45. ¡Hola de nuevo! Dejo dos opciones en el adjunto. Una con ayuda de Power Query (lo tienes disponible en Excel 2016). La otra opción es con UDF (Macros en Excel). Revisa el adjunto. ¡Bendiciones! Ejemplo formula para detectar variacion del 20% + - de una precio.xlsm
    1 point
  46. 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.
    1 point
  47. Version 1.0.0

    139 downloads

    No tiene mas misterio de lo que explica el título. Abrir el archivo, pulsar sobre la flecha azul y ver lo que ocurre en la barra de estado. La idea no se me ha ocurrido a mi, pero me hubiera gustado.
    1 point
  • Newsletter

    Want to keep up to date with all our latest news and information?
    Sign Up
×
×
  • Create New...

Important Information

Privacy Policy