Matriz VBA: crear y más

Este tutorial le mostrará cómo crear una matriz usando una matriz en VBA.

Una matriz es una matriz rectangular de números con la misma cantidad de filas y columnas. Puede crear una matriz en VBA rellenando variables de matriz y utilizando VBA Loops.

Creando una matriz en VBA

123456789101112131415 Sub CreateSimpleMatrix ()Dim matrix () como enteroDim x, i, j, k como entero'volver a atenuar el tamaño de la matrizReDim matriz (1 a 3, 1 a 3) como enterox = 1Para i = 1 a 3Para j = 1 a 3matriz (i, j) = xx = (x + 1)Siguiente jSiguiente yo'devuelve el resultado a la hoja de una sola vezRango ("A1: C3") = matrizEnd Sub

Ejecutar el procedimiento anterior devolverá una matriz simple a Rango ("A1: C3") a su hoja de trabajo.

Convertir un vector de fila única en una matriz

Considere la columna de números a continuación. Es posible que en algún momento desee convertir una columna de números en una matriz.

Usando la función a continuación, podemos crear una matriz a partir de la lista de números.

123456789101112131415161718192021 Función Create_Matrix (Vector_Range como rango, No_Of_Cols_in_output como entero, No_of_Rows_in_output como entero) como varianteReDim Temp_Array (1 a No_Of_Cols_in_output, 1 a No_of_Rows_in_output)Dim No_Of_Elements_In_Vector como enteroDim Col_Count como entero, Row_Count como enteroNo_Of_Elements_In_Vector = Vector_Range.Rows.Count'Eliminar condiciones NULLSi Vector_Range no es nada, entonces salga de la funciónSi No_Of_Cols_in_output = 0, salga de la funciónSi No_of_Rows_in_output = 0, salga de la funciónSi No_Of_Elements_In_Vector = 0, salga de la funciónPara Col_Count = 1 a No_Of_Cols_in_outputPara Row_Count = 1 a No_of_Rows_in_outputTemp_Array (Col_Count, Row_Count) = Vector_Range.Cells (((No_of_Rows_in_output) * (Col_Count - 1) + Row_Count), 1)Siguiente Row_CountSiguiente Col_CountCreate_Matrix = Temp_ArrayFunción final

Podemos crear la matriz en nuestra hoja de Excel, llamando a la función anterior.

123 Sub ConvertToMatrix ()Rango ("C1: H2") = Create_Matrix (Rango ("A1: A10"), 2, 6)End Sub

Convertir una matriz en un vector de una sola fila

Alternativamente, es posible que desee convertir una matriz en una sola fila. Considere la matriz a continuación.

Usando la función a continuación, podemos convertir esto en una matriz de una sola dimensión.

12345678910111213141516171819202122 Función Create_Vector (Matrix_Range como rango) como varianteAtenuar No_of_Cols como entero, No_Of_Rows como enteroDim i como enteroDim j como entero'recoger las filas y columnas de la matrizNo_of_Cols = Matrix_Range.Columns.CountNo_Of_Rows = Matrix_Range.Rows.CountReDim Temp_Array (No_of_Cols * No_Of_Rows)'Eliminar condiciones NULLSi Matrix_Range no es nada, entonces salga de la funciónSi No_of_Cols = 0, salga de la funciónSi No_Of_Rows = 0, salga de la función'recorrer la matriz - el primer elementoPara j = 1 a No_Of_Rows'ahora recorre el segundo elementoPara i = 0 a No_of_Cols - 1'asignar a una matriz temporal de una sola dimensiónTemp_Array ((i * No_Of_Rows) + j) = Matrix_Range.Cells (j, i + 1)Siguiente yoSiguiente jCreate_Vector = Temp_ArrayFunción final

Ahora podemos llamar a esta función usando el procedimiento siguiente.

1234567891011 SubgenerateVector ()Dim Vector () como varianteDim k como enteroDim No_of_Elements'obtener la matrizVector = Create_Vector (Sheets ("Sheet1"). Range ("A1: D5"))'recorrer la matriz y completar la hojaPara k = 0 a UBound (Vector) - 1Hojas ("Hoja1"). Rango ("G1"). Desplazamiento (k, 0) .Valor = Vector (k + 1)Siguiente kEnd Sub

Este procedimiento devolverá el siguiente resultado.

Uso de WorksheetFunction.MMULT para crear una matriz de matriz

Considere la siguiente hoja de cálculo.

Podemos usar el procedimiento a continuación para calcular el monto de interés para la cuadrícula anterior en función de la tasa de interés y la cantidad que la persona desea pedir prestada.

123456789101112 Uso secundarioMMULT ()Dim rngIntRate como rangoDim rngAmtLoan As RangeAtenuar resultado () como variante'poblar nuestros objetos de rangoEstablecer rngIntRate = Rango ("B4: B9")Establecer rngAmtLoan = Range ("C3: H3")'use la fórmula MMULT para completar la matriz de resultadosResultado = WorksheetFunction.MMult (rngIntRate, rngAmtLoan)'llenar la hojaRango ("C4: H9") = ResultadoEnd Sub

Observará en la hoja anterior que el procedimiento anterior llena las celdas con valores en lugar de fórmulas; consulte C4 en el gráfico anterior; tiene el valor 200, no una fórmula. Utilizando el Hoja de trabajo Función El método siempre devuelve un valor estático a la hoja de trabajo y no una fórmula. Esto significa que si cambia la tasa de interés o el monto del préstamo, los valores correspondientes en la matriz completa NO cambio.

En lugar de usar el WorksheetFunction.MMULT, puede usar VBA para aplicar la función MMULT a una celda usando el FormulaArray método.

123 Sub InsertMMULT ()Rango ("C4: H9"). FormulaArray = "= MMULT (B4: B9, C3: H3)"End Sub

Observe que ahora, cuando se completa la hoja de cálculo, se usa una fórmula en las celdas.

Va a ayudar al desarrollo del sitio, compartir la página con sus amigos

wave wave wave wave wave