NO uses más estas Dos Funciones en Excel (Estas Alternativas son Mejores)
Вставка
- Опубліковано 1 чер 2024
- Referencia archivo: Workbook 1382
Clic aquí para descargar el libro de trabajo de Excel: www.excelhechofacil.com/p/des...
Con frecuencia pensamos que las fórmulas (anidación de una o varias funciones) son siempre eficientes. La verdad dista mucho de la realidad; en la práctica muchas fórmulas son rápidas y eficientes con pocos datos de entrada (inputs), pero cuando se someten a muchos datos (varias decenas de miles de filas) algunas consumen más recursos de lo esperado. Un ejemplo claro es combinar dos funciones asesinas de Excel (REDUCE & APILARV); trabajando de manera independiente y aisladas son muy eficientes, pero nada más combinarlas y colocar un input muy grande y todo Excel se ralentiza, APILARV y APILARH usan mucha memoria para realizar movimientos en el Array, y entre mas grande el Array mas demorado es el movimiento, a esto súmale colocarla dentro de una función de iteración ¡Todo se vuelve lento! En este video te doy varias alternativas para que no combines estas dos funciones. Espero te guste el video. Gracias a Leonard Ochea “Leo Rumano” por la solución mas veloz.
Tutorial para descargar los archivos de Excel Hecho Fácil: • Como Descargar Archivo...
Inicia la membresía al canal: / @excelhechofacil
Videos para miembros: • * SOLO PARA MIEMBROS *
¿Quieres patrocinar este proyecto? Cómprame un café aquí: www.excelhechofacil.com/p/rega...
Te estaré muy agradecido.
#Excel #TrucosExcel #FormulasExcel
Vídeo tutorial súper interesante para comprobar la eficiencia de distintas funciones y ser conscientes de que el rendimiento de los recursos se ve considerablemente afectado dependiendo de la utilización de unas u otras más o menos óptimas.
Fuerte abrazo desde España parcero!!!
REDUCE+VSTACK, eran mi par de funciones preferidas, para resolución de muchos problemas. por ser tan simple de usar. Solo me quedara usarla para data pequeña, donde no se sienta mucho el rendimiento. Habrá que usar las alternativas que muestras y las que hubiera.
Excelente explicación Andres , como siempre. Un abrazo, gracias por compartir.
Muchas gracias Ned! Me alegra que te pases por el canal, gracias de corazón. La Fx de Leo está muy rápida. Saludos amigo.
Lo felicito MAESTRO 👍 excelente e instructivo video,lo felicito señor Moncada 👍👍👍👍👍👍👍👍👍👍
Muchas gracias Miguel, espero que todo te haya gustado. Saludos amigo.
Yo todavía creo que en un futuro próximo , esa clase de problemas se puedan solucionar solo usando la función MAP ,(sin REDUCE y APILANDO CADA ITERACION) , iterando cada fila y DEVOLVER UN VECTOR HORIZONTAL POR CADA ITERACION (lo digo porque se que es posible , los de GOOGLE lo tienen asi y funciona sin problemas ) .
Las explicaciones , a tope de detalles , como siempre . Eres una maquina !
Ojalá algún día las funciones de interacción a excepción de "reduce con trucos" arrojen Arrays multidimensional. Gracias amigo, tu fx es muy veloz. La mejor de las tres. Un abrazo Leo parcero.
Buenas Leo, pero cómo haces eso,? la función map sólo se puede utilizar por una columna no con varias, no? por favor nos puedes dejar tu fórmula detallada? muchas gracias de antemano
@@sofiafisacvarela2070 , fácil . La función MAP admite , si se necesita , varias columnas(matrices , vectores ) de entrada , pero en este caso el mapeo lo hacemos por solo una columna , pero una columna de índices , bajo cuales vamos a extraer toda una fila (con INDICE)
Te pongo un ejemplo sobre la misma estructura de los datos del video , simplemente que la rezumo hasta la fila 100
=MAP(A2:A100;LAMBDA(a;TOROW(SORT(TOCOL(B1:G1);TOCOL(INDICE(B2:G100;a;0));1))))
Mi separador de argumentos es el punto y coma , si el suyo es la coma , cambia esto en la formulación . También uso la versión en Español .
Se hace un MAPeo a la secuencia de números dada por el rango A2:A100 (1 , 2 , 3 ...... 99 ) Estos datos se asigna con el LAMBDA a la variable "a" (que indica el numero de fila de datos a analizar . Con la función INDICE ( B2:G100; a ; 0) se trae toda la fila correspondiente al numero "a" y se ordena la cabecera B1:G1 , bajo estos números de esta fila . He tenido que hacer unas pequeños truquitos en transponer las filas en columnas ya que en Google Sheet no hay una función ORDENARPOR como en EXCEL . La función que ordena en Google Sheet es SORT y solo puede ordenar por COLUMNA , por esto modifico las filas en columnas con TOCOL y luego el resultado lo muestro en FILA con TOROW .
Este mapeo con una devolución de mas de un elemento por fila , en excel (todavía) no se puede conseguir y para esto se recurre al parche de REDUCE con un APILAR en vertical que como bien lo explica Andres , gasta bastante recursos cuando se trata de rangos mas grandes de datos .
Si se quiere algo mas dinámico
=LET(d;B2:G100;c;B1:G1;MAP(SEQUENCE(FILAS(d));LAMBDA(a;TOROW(SORT(TOCOL(c);TOCOL(INDICE(d;a;0));1)))))
d => el rango de datos
c => el rango de cabecera (deben tener el mismo numero de columnas)
Espero que se me ha entendido . Saludos !
¡Muchas muchas, Muchísimas gracias !!
Muchas gracias Eduardo, de corazón muchas gracias por tremendo detalle y aprecio a mi trabajo y el proyecto. Desde la distancia hasta México un abrazo fuerte. Saludos cordiales.
Pues no sé por qué pero a mí no me funciona ninguna función he probado a reducir la matriz de entrada a 500 filas por si pesaba muchísimo y me ordenador no era capaz pero aún así no me funciona pero en teoría tengo todas las funciones porque utilizo office 365, ¿por qué puede ser?
Agradeceríamos que detallarais la versión de Leo Rumano (para los que somos mucho más inexpertos y no sabemos cómo aplicarla)
👏👏👏👌
👍🤗
excelente video
Gracias!
Hola Andrés, estoy en la ciudad de Cúcuta, ¿usted ofrece un programa de formación presencial en Excel Avanzado?
Este año en septiembre es la segunda formación, aun no la organizo. Virtual dependiendo de los temas a tratar. Si gustas me envías un correo y te dejo información. Saludos.
✅ Enviado
Andres hola, tengo en la Columna A 100 registros, pero en algunas filas está vacío.
Uso esta formula en la Celda B1,
=LET(matriz,A1:A1000,filaActual,FILA(),BYROW(matriz,LAMBDA(v,SI(v="",INDICE(A1:A20,SI(FILA()=1,1,FILA()-1)),v))))
Para rellenar los vacíos con el elemento inmediatamente anterior que no sea vació, pero siempre se me rellena con el dato de la celda A1.
Me podrías ayudar con la corrección de esta formula
Muchas gracias
Aqui la respuesta a tu pregunta: ua-cam.com/video/0ODv2LDPVDo/v-deo.html Saludos y espero te sirva.
Maldición... no entiendo nada.
Esto solo me dice que debo estudiar más...
Ánimo! Ánimo! Ánimo! Intenta practicar un poco. Saludos y cualquier pregunta que tengas con gusto coméntala. Un abrazo.
Maestro de maestros te tengo un problema: Tengo una base de transacciones bancarias con las siguientes columnas: Banco, Numero de cuenta, Fecha de transacción, (hay varias trasacciones en un mismo día) valor débito, valor credito. Supon que sean 5 bancos diferentes con 5 cuentas cada banco. En la hoja dos esta el saldo inicial de cada cuenta bancaria. Como hallo el saldo acumulado de cada transacción, es decir por cada fila de registro de la base teniendo en cuenta el orden del dia segun la fecha, la cuenta, el banco y el saldo inicial con el empieza cada cuenta que esta en la segunda hoja. Una columna llamado saldo creada al lado de esta tabla que muestra el saldo que va quedando por cada transacción efectuada. Sumando o restando al saldo dependiendo si es un debito o crédito. Vi que una posible solución es con scan, let y posiblemente archivo makarray pero despues de varias semanas me resultó imposible anidarlas. Ayuda pls. Gracias de antemano, eres un genio!