Compartir a través de

Error en la declaración de variable

Anónimas
2020-05-05T02:49:58+00:00

Programe una función en Excel

=MMESCALAR(MATRIZ,ESCALAR)

pero cuando en el campo de MATRIZ ingreso una función, no me reconoce la variable como matriz, por ejemplo:

=MMESCALAR(MMULT(K5#,G1:G3),J1)

MMULT(K5#,G1:G3), al calcularla por aparte, me da una matriz, que sí me deja usarla como variable, pero si la calculo dentro de la funcion, no me reconoce la matriz

Microsoft 365 y Office | Excel | Para la casa | Windows

Pregunta bloqueada. Esta pregunta se migró desde la Comunidad de Soporte técnico de Microsoft. Puede votar si es útil, pero no puede agregar comentarios o respuestas ni seguir la pregunta.

0 comentarios No hay comentarios

7 respuestas

Ordenar por: Muy útil
  1. Anónimas
    2020-05-05T09:20:01+00:00

    Hola:

    Entonces tienes que comprobar el tipo de objeto recibido en el parámetro MATRIZ, cuando es un rango te funciona, pero cuando es el resultado de una función que devuelve un array variant(1 to X, 1 to Y), debes cambiar tus funciones para que distingan entre uno u otro parámetro, en tu ejemplo podría ser:

        If TypeOf MATRIZ Is Range Then

             X = MATRIZ.Rows.Count

             Y = MATRIZ.Columns.Count

        Else

            X = UBound(MATRIZ, 1) ' Comprueba que el 1 son filas y no columnas, nunca me acuerdo ;-)

            Y = UBound(MATRIZ, 2) ' Si es al reves, pues cambias el 1 por el 2 y viceversa.

            ' También deberías poner un control de errores para verificar que MATRIZ es un array de 2 dimensiones.

        End If

    Espero que te sirva.

    Un saludo

    ¿Le ha resultado útil esta respuesta?

    1 persona ha encontrado útil esta respuesta.
    0 comentarios No hay comentarios
  2. Anónimas
    2020-05-05T08:25:16+00:00

    Hola:

    ¿Has probado de hacerlo sin UDF?

    =MMULT(K5#,G1:G3) * J1

    Un saludo

    Funciona sin la UDF, pero ese solo era una prueba, porque tengo otras funciones que hice, que excel no tiene y presentan el mismo problema con las variables

    ¿Le ha resultado útil esta respuesta?

    0 comentarios No hay comentarios
  3. Anónimas
    2020-05-05T08:11:31+00:00

    Hola:

    ¿Has probado de hacerlo sin UDF?

    =MMULT(K5#,G1:G3) * J1

    Un saludo

    ¿Le ha resultado útil esta respuesta?

    0 comentarios No hay comentarios
  4. Anónimas
    2020-05-05T07:28:53+00:00

    Debieras aclarar un poco los conceptos.

    Si dices Programé (te falta la tilde) estás hablando de una macro, pero después escribes fórmulas.

    Campo es un término que se utiliza en bases de datos (el equivalente en Excel sería la columna). En tu caso MATRIZ es un parámetro de la función MMESCALAR.

    Variable es un término que se utiliza en programación.

    MMESCALAR, no es una función de Excel. 0¿qué es?  ¿Una UDF?

    Sí es una UDF

    El código es:

    Function MMESCALAR(MATRIZ, ESCALAR)

         X = MATRIZ.Rows.Count

         Y = MATRIZ.Columns.Count

         Dim A()

         ReDim A(1 To X, 1 To Y)

         For i = 1 To X

             For j = 1 To Y

                  A(i, j) = (ESCALAR) * MATRIZ(i, j)

             Next j

         Next i

         MMESCALAR = A

    End Function

    Pero cuando uso la función directamente en la hoja de Excel, no me acepta matrices calculadas con alguna otra función

    ¿Le ha resultado útil esta respuesta?

    0 comentarios No hay comentarios
  5. Anónimas
    2020-05-05T06:26:28+00:00

    Debieras aclarar un poco los conceptos.

    Si dices Programé (te falta la tilde) estás hablando de una macro, pero después escribes fórmulas.

    Campo es un término que se utiliza en bases de datos (el equivalente en Excel sería la columna). En tu caso MATRIZ es un parámetro de la función MMESCALAR.

    Variable es un término que se utiliza en programación.

    MMESCALAR, no es una función de Excel. 0¿qué es?  ¿Una UDF?

    ¿Le ha resultado útil esta respuesta?

    0 comentarios No hay comentarios