Función LET para Excel 2013

Resuelto

Señores maestros del código VBA, me gustaría saber si hay rectificaciones que aportar.

3 respuestas

  1. Hola,

    Al levantarme, acabo de hacer una prueba: asignar a la variable "tbl" el rango A1:A10 y mostrar ese rango:

     =LET_2013(tbl;A1:A10;tbl)

    mientras que la función nativa de Excel devuelve el rango. En la celda C5, la fórmula con LET_2013 y en la celda D5, la fórmula con la función LET:

    Daniel


    1. Aparentemente, la función no contempló el caso de una tabla de varios valores. Funciona con valores únicos como:

       =LET_2013("tbl";RAÍZ(4);"tbl")

      Estoy viendo si puedo modificarlo, pero, normalmente, una función VBA solo puede escribir en la celda donde está insertada.

      Daniel

    2. @danielc0

      Por cierto, con Copilot, esto funciona, al menos para un rango de celdas:

      Public Function LET_2013(ParamArray Arguments() As Variant) As Variant On Error GoTo Erreur Dim i As Long, Dernier As Long Dim NomRecherche As String Dernier = UBound(Arguments) ' Parejas nombre/valor + resultado final If Dernier < 2 Or (Dernier Mod 2) <> 0 Then LET_2013 = CVErr(xlErrValue) Exit Function End If NomRecherche = CStr(Arguments(Dernier)) ' Búsqueda del nombre solicitado For i = 0 To Dernier - 1 Step 2 If StrComp(CStr(Arguments(i)), NomRecherche, _ vbTextCompare) = 0 Then If IsObject(Arguments(i + 1)) Then LET_2013 = Arguments(i + 1).Value Else LET_2013 = Arguments(i + 1) End If Exit Function End If Next i LET_2013 = CVErr(xlErrName) Exit Function Erreur: LET_2013 = CVErr(xlErrValue) End Function

      Al menos, funciona con Excel 365. A probar con Excel 2013.

      Daniel

  2. Hola Daniel

    He cambiado según tu código, pero como todavía no entiendo nada de VBA, confío en ti.

    No busco una función muy complicada mientras sea más legible para cálculos medianamente complejos.

    Sin embargo, para la parte de descripción seguramente cometí un error al guardar, porque, además de las 9 casillas visibles, no tengo ninguna explicación en la ventana fx. ¿Tienes un manual?

    Atentamente

    1. Un ejemplo para asignar la variable "tbl" al rango A1:A10 y mostrarlo:

       =LET_2013("tbl";A1:A10;"tbl") =LET_2013("tbl";RACINE(A1:A10);"tbl")

      Por el contrario, no funciona para:

       =LET_2013("tbl";A1:A10;RACINE("tbl"))

      Estoy mirando, pero me da la impresión de que va a haber un montón de casos particulares

      Daniel

    2. @danielc0

      En realidad, me supera por completo. Por ejemplo, cuando entro:

       =LET_2013("tbl";A1:A10;"tbl"*2)

      La fórmula devuelve "#N/A" sin que se ejecute el código VBA. Lo dejo. Si no tienes una respuesta aquí, haz la pregunta en otro foro.

      Daniel

  3. Hola,

    Daniel, te lo agradezco.

    Al final yo también abandono; no funciona correctamente. voy a continuar con LO Calc.

    Atentamente