Skip to content

Instantly share code, notes, and snippets.

@Influexcel
Last active July 26, 2024 08:28
Show Gist options
  • Save Influexcel/db80fe1e21955b7fc079c1c7ac937792 to your computer and use it in GitHub Desktop.
Save Influexcel/db80fe1e21955b7fc079c1c7ac937792 to your computer and use it in GitHub Desktop.
Influexcel
DESVIACION = LAMBDA(Real;Presupuesto;TEXTO(SI.ERROR((Real / Presupuesto) - 1; "---"); "0,00%"));;
PIVOTANDO = LAMBDA(OrigenFilas;OrigenColumnas;Valor;LET(Filas;UNICOS(OrigenFilas);Columnas;TRANSPONER(UNICOS(OrigenColumnas));Importes;SUMAR.SI.CONJUNTO(Valor;OrigenFilas;Filas;OrigenColumnas;Columnas);Cabecera;APILARH("PIVOTANDO";Columnas);Resultado;APILARH(Filas;Importes);Output;APILARV(Cabecera;Resultado);Output));;
AGRUPANDO = LAMBDA(RangoLista;RangoAcumulados;LET(Lista;UNICOS(RangoLista);Acumulados;SUMAR.SI.CONJUNTO(RangoAcumulados;RangoLista;Lista);Cuadro;APILARH(Lista;Acumulados);CuadroOrdenado;ORDENAR(Cuadro;2;-1);CuadroOrdenado));;
TOPRANKING = LAMBDA(RangoLista;RangoValores;Top;[Resto];LET(Filas; RangoLista; Valores; RangoValores; Top; Top; ListaFilas; UNICOS(Filas); ListaValores; SUMAR.SI.CONJUNTO(Valores; Filas; ListaFilas); RangoResultado; APILARH(ListaFilas; ListaValores); RangoOrdenado; ORDENAR(RangoResultado; 2; -1); SumaTotal; SUMA(RangoValores); OutputRanking; TOMAR(RangoOrdenado; Top; ); SumaTotalRanking; SUMA(TOMAR(OutputRanking; ; -1)); SumaResto; SumaTotal - SumaTotalRanking; RangoResto; APILARH("Otras"; SumaResto); Output; APILARV(OutputRanking; RangoResto); SI(Resto = 1; Output; OutputRanking)));;
CHARTEMOJIS = LAMBDA(Valores;Repeticiones;BYROW(Valores;LAMBDA(X;REPETIR("🟦";(X/MAX(Valores)*Repeticiones)))));;
PARETORATIO = LAMBDA(Elementos;Valores;Porcentaje;LET(Agrupados;Influexcel.AGRUPANDO(Elementos;Valores);Acumulados;TOMAR(Agrupados;;-1);Porcentajes;SCAN(0;Acumulados;LAMBDA(X;Y;X+(Y/SUMA(Acumulados))));ElementosPareto;COINCIDIRX(Porcentaje;Porcentajes;1);TotalElementos;FILAS(Agrupados);RatioPareto;ElementosPareto/TotalElementos;RatioPareto));;
PROMEDIOSINCERO = LAMBDA(RangoVentas;[Mínimo];PROMEDIO.SI(RangoVentas;">" & SI(ISOMITTED(Mínimo);0;Mínimo)));;
BUSCARFILASCONERROR = LAMBDA(RangoTabla;(FILTRAR(RangoTabla;BYROW(SI(SI.ERROR(RangoTabla;"#Error#")="#Error#";0;1);LAMBDA(X;SI(PRODUCTO(X)=0;1;0))))));;
WINDOWSUMA = LAMBDA(Dimensión;Valores;BYROW(Dimensión;LAMBDA(X;SUMAR.SI.CONJUNTO(Valores;Dimensión;X))));;
FILTRARCONRANGO = LAMBDA(Tabla;ColumnaFiltro;RangoFiltro;[Inverso]; LET(Inverso; SI(O(ISOMITTED(Inverso); Inverso <> 1); 0; 1); Output; FILTRAR(Tabla; BYROW(ESNUMERO(HALLAR(INDICE(Tabla; ; ColumnaFiltro); UNIRCADENAS(","; VERDADERO; RangoFiltro)));LAMBDA(X;XO(Inverso;X))); "No hay coincidencias"); Output));;
COMBINAR = LAMBDA(Rango;RangoT;[Separador];ENCOL(Rango & Separador & TRANSPONER(RangoT)));;
CONTARCARACTER = LAMBDA(String;Caracter;SI.ERROR(FILAS(FILTRAR(DELETREAR(String); MAYUSC(DELETREAR(String)) = MAYUSC(Caracter))); 0));;
DELETREAR = LAMBDA(String;[Pack];LET(Pck;SI(ISOMITTED(Pack);1;Pack);EXTRAE(String;SECUENCIA(LARGO(String)/Pck;1;1;Pck);Pck)));;
INVERTIRCADENA = LAMBDA(String;EXTRAE(String;SECUENCIA(LARGO(String);1;LARGO(String);-1);1));;
REPETIRMATRIZ = LAMBDA(Matriz;Veces;[MatrizAcumulada];[Indice];SI(Veces = 1; MatrizAcumulada; LET(Indice; SI(ISOMITTED(Indice); 1; Indice + 1); Matriz; APILARH(Matriz); MatrizAcumulada; SI(ISOMITTED(MatrizAcumulada); Matriz; MatrizAcumulada); VecesResto; Veces - 1; MatrizOriginal; Matriz; MatrizAcum; APILARV(MatrizAcumulada; Matriz); RepetirMatriz(MatrizOriginal; VecesResto; MatrizAcum; Indice))));;
TABLAABC = LAMBDA(Items;Importes;LET(ItemsUnicos; UNICOS(Items); Acumulados; SUMAR.SI.CONJUNTO(Importes; Items; ItemsUnicos); ItemsAcumulados; ORDENAR(APILARH(ItemsUnicos; Acumulados); 2; -1); Porcentajes; SCAN(0; TOMAR(ItemsAcumulados; ; -1); LAMBDA(x;y; x + (y / (SUMA(Acumulados))))); ABC; SI.CONJUNTO(Porcentajes < 0,5; "A"; Porcentajes < 0,8; "B"; VERDADERO; "C"); Output; APILARH(TOMAR(ItemsAcumulados; ; 1); ABC); Output));;
CADENADESDEHASTA = LAMBDA(Cadena;CaracterDesde;CaracterHasta;LET(Desde;ENCONTRAR(CaracterDesde;Cadena)+1;Hasta;ENCONTRAR(CaracterHasta;Cadena;Desde+1);EXTRAE(Cadena;Desde;Hasta-Desde)));;
FILTRAPIDO = LAMBDA(Rango;Valor;[ColumnaFiltro];[ColumnaOutput];LET(ColumnaFiltro;SI(ISOMITTED(ColumnaFiltro);1;ColumnaFiltro);ColumnaOutput;SI(ISOMITTED(ColumnaOutput);SECUENCIA(COLUMNAS(Rango);1;1;1);ColumnaOutput);Output;FILTRAR(ELEGIRCOLS(Rango;ColumnaOutput);ELEGIRCOLS(Rango;ColumnaFiltro)=Valor;"Nada");Output));;
LEYBENDFORD = LAMBDA(Rango;LET(Primer;1*IZQUIERDA(Rango;1);Secuencia;SECUENCIA(9;1;1;1);Conteo;BYROW(Secuencia;LAMBDA(X;FILAS(FILTRAR(Primer;Primer=X;0))));Peso;100*Conteo/SUMA(Conteo);Peso));;
EXTRAEDESDEHASTA = LAMBDA(Cadena;[CaracterDesde];[CaracterHasta];LET(Desde; SI(ISOMITTED(CaracterDesde); 1; ENCONTRAR(CaracterDesde; Cadena) + 1); Hasta; SI(ISOMITTED(CaracterHasta); LARGO(Cadena) + 1; ENCONTRAR(CaracterHasta; Cadena; Desde + 1)); EXTRAE(Cadena; Desde; Hasta - Desde)));;
PORTRAMOS = LAMBDA(rImportes;vTramos;vRedondeo; LET(vMaximo; REDOND.MULT(MAX(rImportes); vRedondeo); vId; SECUENCIA(vTramos; 1; 1; 1); vBloque; REDOND.MULT(vMaximo / vTramos;100); vDesde; (vId - 1) * vBloque; vHasta; vId * vBloque; vBloqueText; vDesde & " - " & vHasta; vImportesBloque; COINCIDIRX(IMPORTES; vDesde; -1); vSuma; BYROW(vId; LAMBDA(X; SUMA(FILTRAR(rImportes; vImportesBloque = X; 0)))); vCuenta; BYROW(vId; LAMBDA(X; CONTAR(FILTRAR(rImportes; vImportesBloque = X; 0)))); Output; APILARH(vBloqueText; vSuma; vCuenta); Output));;
SUSTITUTRON = LAMBDA(Palabras;RangoCaracteres;REDUCE(Palabras;RangoCaracteres;LAMBDA(_previo;_iteración;SUSTITUIR(_previo;_iteración;DESREF(_iteración;0;1)))));;
SIMBOLOMONEDA = LAMBDA(_moneda; LET(_siglas;{"USD";"EUR";"JPY";"GBP";"CHF";"CAD";"AUD";"CNY";"MXN";"RUB";"INR";"BRL";"ZAR";"KRW";"ARS";"HKD";"SGD";"NZD";"CLP";"COP";"PHP";"IDR";"ILS";"KWD";"MYR";"NGN";"NOK";"DKK";"SEK";"TRY";"HUF";"PLN";"AED";"SAR";"KZT";"VES";"RON";"THB";"PEN";"TWD";"UYU";"DOP";"GTQ";"PAB";"GHS";"KES";"MDL";"JMD";"EGP";"TZS";"UGX";"MGA";"MZN";"KHR";"FJD";"LAK";"BTN";"BWP";"GMD";"LRD";"MWK";"MUR";"SCR";"SRD";"ZMW";"VES"}; _simbolos;{"$";"€";"¥";"£";"Fr";"C$";"A$";"¥";"$";"₽";"₹";"R$";"R";"₩";"$";"HK$";"S$";"NZ$";"$";"$";"₱";"Rp";"₪";"د.ك";"RM";"₦";"kr";"kr";"kr";"₺";"Ft";"zł";"د.إ";"﷼";"₸";"Bs.S";"lei";"฿";"S/.";"NT$";"$U";"RD$";"Q";"B/.";"₵";"KSh";"L";"J$";"ج.م";"Sh";"USh";"Ar";"MT";"៛";"FJ$";"₭";"Nu.";"P";"D";"L$";"MK";"₨";"₨";"$";"ZK";"Bs.S"};SI.ERROR(INDICE(_simbolos;COINCIDIR(_moneda;_siglas;0));"$")));;
A2C = LAMBDA(_matriz;_columna;LET(_rango; SI(ESNUMERO(_columna); _matriz; EXCLUIR(_matriz; 1)); _titulos; TOMAR(_matriz; 1); _numColumna; SI(ESNUMERO(_columna); _columna; COINCIDIRX(_columna; _titulos)); _output; ELEGIRCOLS(_rango; _numColumna); _output));;
RANGOCOLUMNAS =LAMBDA(_matriz;_nombrescolumnas;LET(_nomCol; ESPACIOS(DIVIDIRTEXTO(_nombrescolumnas; ";")); _output; EXCLUIR(REDUCE(""; _nomCol; LAMBDA(_previo;_nuevo; APILARH(_previo; A2C(_matriz; _nuevo)))); ; 1); _output));;
ENTRELAZARMATRICES = LAMBDA(_matriz1;_matriz2;[_vacíos];LET(_columnas;MAX(COLUMNAS(_matriz1);COLUMNAS(_matriz2));AJUSTARFILAS(ENCOL(TRANSPONER(SI.ERROR(APILARH(_matriz1;_matriz2);SI(ISOMITTED(_vacíos);"";_vacíos)));;VERDADERO);_columnas)))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment