Hola. Cuento mi experiencia con este metodo por lotes. Logre implementar este metodo por lotes que desarrolló Andres en un archivo Excel que genera 3 archivos txt. En total se procesan 10 columnas con mas de 2 millones de filas (2,100,000). Por este motivo se crean 3 txt. Anteriormente aplicando los metodos comunes de bucles For Next o For Each para procesar todas esas filas y columnas demoraba casi una hora (considerando que mi computadora en el trabajo es bastante basica), luego cuando aplique el procesamiento por lotes demora solo 11 minutos, asi que la diferencia de rendimiento es realmente increible. Muchas gracias por el aporte Andres. Saludos y abrazos
Excelente video Andrés, quiero aprovechar la oportunidad para hacer de su conocimiento, esperando que no se me ofenda y me lo permita, es que le recomiendo que no diga mas esa palabra porque al menos en México representa una grosería muy fuerte, y esto se lo digo porque lo aprecio mucho.
muchas gracias Andrés, estupendo este tutorial también como no podía ser de otra manera. Para tu conocimiento y el resto de seguidores, se me ocurrió probar a hacer el procedimiento con la sentencia [ Hoja1.Range("B1").value = StrReverse(Hoja1.Range("A1").value) ] con un bucle para que recorra todas las filas, y el resultado es una auténtica locura (más de 20' procesando) 😂😂😂😂😂😂
Excelente explicación! Muchas gracias por compartir con todos. Por supuesto que me gustaría que explicaras cualquier proceso para que nuestro trabajo sea más eficiente. Por supuesto que lo voy a utilizar. Un abrazo.
Buen día. Gracias por compartir tu método, por mi parte comparto el mío es el: Método de transferimiento de datos contenido de un solo bloque. La idea es volcar de golpe todos los datos que previamente se almacenaron en una matriz, a un rango predeterminado: Sub Metodo_Bloque() Dim Matriz(100500, 0), i As Long For i = 1 To 100500 Matriz(i - 1, 0) = StrReverse(Cells(i + 1, 1)) Next [C2:C100500] = Matriz End Sub
Hola @Freddy, es interesante tu aporte. Recien probe tu codigo y con la funcion StrReverse da los resultados practicamente en el mismo tiempo que la macro de Andres. Pero al aplicar un procedimiento un poco mas complejo, en mi caso el proceso demora mucho mas. Por ejemplo usando un For Next como el que aplico Andres para revertir las cadenas de texto: Sub Metodo_Bloque() Dim Matriz(100500, 0), i As Long Dim tiempo As Double tiempo = Timer For i = 1 To 100500 For a = 15 To 1 Step -1 Matriz(i - 1, 0) = Matriz(i - 1, 0) & Mid(Cells(i + 1, 1), a, 1) Next a Next [C2:C100500] = Matriz Hoja1.Range("f3").Value = Round(Timer - tiempo, 3) End Sub Parece que al combinar procedimientos sigue siendo mucho mas optimo el metodo por lotes de Andres. Buen aporte. Abrazos
@@tonybd74 Es lógico va a durar más tiempo con procedimiento híbrido que propones en el mensaje, dado que estas asiendo uso de un ciclo For- Next más. Te propongo algo, has la prueba de rendimiento entre los procedimientos con 300.000 registros y luego con 500.000. Te recomiendo que Copies y pegues los datos que te da el archivo, yo no voy realizar la prueba porque el archivo que descargué en el repositorio no contienen las macros que sugiere el instructor del video. Lo que quisiera mostrar es que al utilizar funciones nativas VBA y al hacer el volcamiento directo de la matriz al rango, mejora el rendimiento mientras más registros alla en comparación con otros procedimientos. Espero no equivocarme con la aseveración que hice. Luego me cuentas...👍
@@Fredick.7 Hola Freddy. Gracias por responder. Si, probe tu codigo y de hecho es unas fracciones mas rapido que el metodo de Andres ( transcribi el codigo de Andres desde el video al archivo que descargue). Por este motivo tambien adopte tu metodo como para empezar a aplicarlo. Mi punto es que me parece que el metodo de Andres gestiona mejor el procedimiento cuando se requiere combinar otros subprocesos. Abrazos. Gracias
@@tonybd74 En cuanto a la conclusión que has llegado al final del mensaje que me enviaste, gracias por compartirla, se la valora. Por otro lado, ud. dice: “Gracias por responder”. Mira Tony, lastimosamente es poco lo que puedo contribuir con este canal en comparación de lo mucho que he recibido de él. Respondiéndote, trato de aportar con un granito de arena a ti y a otros que siguen este emprendimiento como gratitud de lo que antes comenté. Y es que, lo que hace el instructor me da ideas que termino convirtiéndolas en perlas de gran precio. >> A DIOS sea la Gloria.
Estimado Andrés, mi mas sincera admiración a tu persona, sin lugar a duda eres un Master en la materia. agradecido por tan extraordinario video, saludos y éxito en tus proyectos.
Muchas gracias andres realmente impresionante trabajo y conocimiento y me gustaria mas tutoriales sobre este tipo de metodos x lotes para mejorar nuestros procesos que se presentan dia a dia en el trabajo en la exportacion de datos a excel con base de datos (access) y la opcion q tengo es realizarla con vba bendiciones
Excelente video. Gracias por compartir tus conocimientos. Pobre la primera forma y tomo hasta minutos (talves no tenga un buen procesador), y luego probe la segunda forma, del procesamientos por lote, y lo hizo en menos de un segundo. Me pasaba que cuando copiaba registros de una tabla (de mas de 8 columnas y mas de 25000 filas), y las pegaba en otra hoja, mediante macro, tambien se me colgaba demoraba mucho el procesamiento. Me gustaria que en un video apliacando el procesamiento por lote, lograr copiar y pegar grandes cantidades de registros y hacerlo mas eficientemente.
Hola Jaime, muchas por comentar, te agradezco enormemente, me alegra que te haya gustado y aprendas mucho... Esto acelera el trabajo con macros muchisimo. Un abrazo fuerte desde la distancia.
Excelente clase!, aprendí mucho y me apunto a las demás clases que comentas con métodos como estos 😁. Solo me llama la atención que usaste el ciclo For-to-Next para invertir las cadenas de texto. Por qué no usar la función StrReverse para ahorrar algunas líneas de código?
Lo hice así porque quería saturar el procesador con mucha carga en ciclos para demostrar que el método por lotes es mucho, pero mucho más rápido. Un abrazo fuerte desde la distancia. Gracias por comentar... Saludos.
muy buen video. se puede usar tambien esta técnica de batch para hacer busquedas en varias hojas? si tengo varias hojas con miles de registros cada una, y necesito evitar que cuando ingrese un nuevo registro en cualquier hoja, este ya se encuentre en alguna de las hojas, y me lanze una alerta. obviamente en el evento (selection_change). gracias por compartir conocimiento andrés. y claro, nos gustaría que sigas difundiendo este tipo de metodos con vba mas avanzados. saludos desde perú.
No voy a ser hipocrita, al inicio pensabe "este mae si le gusta hablar papaya" y pensaba que lo hacias para idolatrarte por que sabes de excel, pero viendo el proceso completo entendi perfectamente que los que saben pueden decir lo que les venga en gana por que conocen del tema, mis respetos y mis disculpas por pensar asi aunque obvio no sabias por que no sos adivino XD para estas cosas como dijiste hay que explicar varias veces un paso por que sino en cualquier momento se puede perder uno, incluso yo viendo el video tenia que retroceder a cada rato por que no entendia por que pasaba tal cosa hasta que lo veia como 4 veces y eso que no soy lento la verdad pero si uno quiere que le den un trabajo asi por desgracia o por dicha hay que destacar sobre los demas, la competencia es dura pero por que la gran mayoria nos quedamos estancados en cosas faciles que los demas tambien saben hacer, la mediocridad es un aliado desastroso, muchas gracias y saludos.
Hola Andrés. Excelente aporte para el tratamiento de grandes volúmenes de datos; sin embargo, te recomendaría omitir comentarios y/o aclaraciones que creo están de más que son obvios para quien sabe macros y ve este tipo de videos. Pienso que se reduciría el tiempo de grabación sustancialmente. Saludos
Y para los que no saben y quieren aprender desde cero? Lamento tener que decirlo, pero existen más personas que no saben macros en Excel que las que si lo saben, para ellos, para esas personas que no les interesa tanto el tiempo y si el aprendizaje, para ellos son los vídeos... Mi recomendación, en RU-vid hay canales que son más directos y gastan menos tiempo, ve a ellos sin problemas. Un abrazo fuerte.
Buen día Andrés, excelente video, una duda, cual es la explicación técnica, motivo por el cual en la primer macro se traba un poco y en la segunda que es por lotes no, saludos
Esto es debido a que liberas memoria en cada lote y no sobre cargas la pila de memoria con cada iteracion... Cada vez que almacenas algo en la memoria barre el resto de la carga, con muchos registros se congestiona incluso hasta bloquear la aplicación... Un abrazo fuerte desde la distancia...
Andrés, excelentísimo contenido, la verdad he visto muchísimas de tus clases y todas son muy buenas (especialmente ese toque matricial que le das a tus fórmulas de excel), pero en este video te la comiste, ahora fue en vba en donde aplicaste ese toque matricial, EXCELENTE, eso sí que se puede llamar: EXCEL HECHO FÁCIL (mejor dicho excel hecho súper rápido) Claro que sí quiero ver más contenido donde pongas en práctica otros casos con trabajos por lotes (y que no comprendo cómo demonios pueden ser más rápido que en este caso). Felicidades, un abrazo. Por cierto, cómo puedo aprender manejo de matrices así como las manejas, algún consejo?
Gracias por comentar y por los ánimos sobre todo y de tomarse el tiempo de hacerlo... La verdad el algoritmo de procesamiento por lotes se demora mucho menos porqué descarga la memoria cada 5000 filas... Es decir, no barre y no actualiza la pila de memoria a más de 5000 registros... Por eso gana y ganará siempre... Saludos.
Ing. Algún tutorial de como hacer un visualizador de facturas XML que distinga entre una factura de ingresos,egresos y nominas con una macro, o que nodos agarrar y de pasada como quitar los destellos de una macro es decir cuando se crashea
Hola excelente, siga pa delante con su contenido de calidad ... yo quisiera aplicarlo para crear base de datos en analisis de costos en construccion, donde la programacion esta por desarrollar mucho
Hola Andrés, el archivo adjunto que cargaste (#941) no contiene el código vba que escribiste durante el video. Parece que no se guardo el código antes de subir el archivo. Será posible colgar el archivo con el código?
Hola Andrés, he descargado el archivo #941 que corresponde a este video, pero al parecer no lo guardaste con el código pues el editor vba aparece en blanco y sin los módulos. Favor verificar esta parte par que corrijas el archivo. Un abrazo
Buenas a todos, he seguido el video dos veces y me da las dos veces el mismo error LoteReversoAux(indice, 1) = sInvertido "se Ha producido el error 9 en tiempo de ejecución". He copiado literalmente todo el ejercicio, no sé por qué me salta este error...
Que tal Andrés, excelente video, disculpa estoy intentando automátizar un archivo para eliminar filas masivamente con vba que cumplan unos criterios, el cuál es que una columna sea igual a el valor de 0 (cero) o 99, solo me interesa conservar todos los valor que sean igual a -1 (menos uno), pero son más de 100000 filas que tiene que recorrer el bucle y estos es muy tardado. Se podría hacer con tu método que explicas algo similar a lo que estoy intentando automátizar?