Cómo ReDim Preservar matriz 2D en Excel VBA (2 maneras fáciles)

  • Compartir Este
Hugh West

Un array es una variable que mantiene los mismos tipos de datos. Si sólo hay una fila o una columna de datos, entonces se conoce como array unidimensional. Sin embargo, cuando hay más de una fila y columna, se denomina array 2D. Utilizamos ReDim para redimensionar un array en VBA. Además, utilizamos la función Conservar con la palabra clave ReDim para mantener intactos los datos antiguos. Este artículo le mostrará 2 formas rápidas de " Reserva ReDim " a matriz 2D en Excel VBA .

Descargar el cuaderno de prácticas

Macro para ReDim Conservar 2D.xlsm

2 Enfoques Prácticos para ReDim Preservar Matriz 2D en Excel VBA

Se trata del conjunto de datos base creado a partir de un matriz 2D con tres filas y dos columnas. En primer lugar, crearemos esta matriz. A continuación, añadiremos otra columna a esta matriz. Utilizaremos la función " Reserva ReDim "Además, demostraremos lo que ocurre si no lo utilizamos.

Por defecto, sólo podemos cambiar el tamaño de la última dimensión de la matriz (es decir, las columnas o el límite superior). Vamos a transponer la matriz, a continuación, cambiar la última dimensión, y luego transponer de nuevo a cambiar el tamaño de ambas dimensiones de la matriz 2D en Excel VBA.

1. ReDim Conservar última dimensión Matriz 2D

En primer lugar, definiremos el matriz 2D como dinámico. A continuación, utilizando el ReDim crearemos un array con tres filas y dos columnas. Por último, utilizaremos la sentencia ReDim de nuevo con la tecla Conservar palabra clave para aumentar el límite superior de la matriz bidimensional.

Pasos:

  • Para empezar, pulse ALT+F11 para que aparezca el Módulo VBA También puede hacerlo desde la ventana Desarrollador pestaña → seleccionar Visual Basic .
  • Entonces, desde el Inserte pestaña → seleccionar Módulo Aquí escribiremos el código VBA.

  • A continuación, escriba el siguiente código en el campo Módulo ventana.
 Sub Redim_Preserve_2D_Array_Row() Dim Our_Array() As Variant ReDim Our_Array(1 To 3, 1 To 2) Our_Array(1, 1) = "Rachel" Our_Array(2, 1) = "Ross" Our_Array(3, 1) = "Joey" Our_Array(1, 2) = 25 Our_Array(2, 2) = 26 Our_Array(3, 2) = 25 Range("C6:D8").Value = Our_Array End Sub 

Desglose de código VBA

  • En primer lugar, llamamos al Subprocedimiento " Redim_Preserve_2D_Array_Row ".
  • A continuación, declaramos la variable Nuestra_Matriz como una matriz dinámica.
  • A continuación, definimos el tamaño de la matriz. El límite inferior es 3 el límite superior es 2 y ambos parten de 1 .
  • A continuación, asignamos valores a la matriz.
  • A continuación, introducimos los valores en C6:D8 rango de celdas.
  • Después, ejecutaremos el código.
  • Así que.., Guardar el Módulo y pulse Ejecutar .

  • Como resultado, devolverá los valores a los rangos de celdas definidos. Podemos ver que " Rachel "está en la fila 1 y columna 1 que se definió como ( 1,1 ) en el código VBA.

  • Ahora, vamos a cambiar el tamaño de la matriz.
  • Así que, añade esto al código anterior y elimina el primer Declaración Range.Value Por otra parte, cómo el código se ve como se puede ver en la siguiente instantánea.
 ReDim Our_Array(1 To 3, 1 To 3) Our_Array(1, 3) = "Texas" Our_Array(2, 3) = "Mississippi" Our_Array(3, 3) = "Utah" Range("C6:E8").Value = Our_Array 

  • En este caso, hemos aumentado el límite superior de ( 1 A 2 ) a ( 1 A 3 ) por 1 .
  • A continuación, hemos añadido los valores a la matriz.
  • Ahora, si ejecutamos este código, veremos que los valores anteriores no se conservan. Devolverá en blanco los valores anteriores.

  • Ahora, podemos arreglar esto añadiendo el Conservar palabra clave en el Declaración ReDim .
  • Finalmente, nuestro código completo será este.
 Option Explicit Sub Redim_Preserve_2D_Array_Row() Dim Our_Array() As Variant ReDim Our_Array(1 To 3, 1 To 2) Our_Array(1, 1) = "Rachel" Our_Array(2, 1) = "Ross" Our_Array(3, 1) = "Joey" Our_Array(1, 2) = 25 Our_Array(2, 2) = 26 Our_Array(3, 2) = 25 ReDim Preserve Our_Array(1 To 3, 1 To 3) Our_Array(1, 3) = "Texas" Our_Array(2, 3) = "Mississippi" Our_Array(3, 3) = "Utah" Range("C6:E8").Value =Our_Array End Sub 

  • Ahora, si Ejecutar este código, entonces la salida será así. Por lo tanto, " Reserva ReDim "la última dimensión de un matriz 2D en Excel VBA.. Ahora, el siguiente método le mostrará cómo " Reserva ReDim " y redimensiona ambas dimensiones del array.

Más información: VBA para obtener valores únicos de columna en matriz en Excel (3 Criterios)

Lecturas similares

  • Cómo nombrar una matriz de tabla en Excel (con pasos sencillos)
  • Excel VBA para leer archivos CSV en matriz (4 ejemplos ideales)
  • Cómo convertir rango a matriz en Excel VBA (3 maneras)
  • Excel VBA: Eliminar Duplicados de una Matriz (2 Ejemplos)

2. ReDim Preservar Ambas Dimensiones 2D Array en Excel VBA

En este último método, te mostraremos los pasos para redimensionar y " Reserva ReDim " el matriz 2D En este caso, utilizaremos la función Transposición VBA Si intentamos redimensionar el límite inferior de la matriz en el primer método, veremos el mensaje " Subíndice fuera de rango "error". Ahora, sin más preámbulos, veamos cómo podemos solucionarlo y lograr nuestro objetivo.

Pasos:

  • En primer lugar, como se muestra en el primer método , que aparezca el Módulo ventana.
  • En segundo lugar, añada las siguientes líneas de código al primer código.
 Our_Array = Application.Transpose(Our_Array) ReDim Preserve Our_Array(1 To 3, 1 To 4) Our_Array = Application.Transpose(Our_Array) Our_Array(4, 1) = "Monica" Our_Array(4, 2) = 26 Our_Array(4, 3) = "New Mexico" Range("C6:E9").Value = Our_Array 
  • Además, el código del método final tiene el siguiente aspecto.
 Option Explicit Sub ReDim_Preserve_2D_Array_Both_Dimensions() Dim Our_Array() As Variant ReDim Our_Array(1 To 3, 1 To 2) Our_Array(1, 1) = "Rachel" Our_Array(2, 1) = "Ross" Our_Array(3, 1) = "Joey" Our_Array(1, 2) = 25 Our_Array(2, 2) = 26 Our_Array(3, 2) = 25 ReDim Preserve Our_Array(1 To 3, 1 To 3) Our_Array(1, 3) = "Texas" Our_Array(2, 3) = "Mississippi" Our_Array(3, 3) = "Utah" Our_Array =Application.Transpose(Our_Array) ReDim Preserve Our_Array(1 To 3, 1 To 4) Our_Array = Application.Transpose(Our_Array) Our_Array(4, 1) = "Monica" Our_Array(4, 2) = 26 Our_Array(4, 3) = "New Mexico" Range("C6:E9").Value = Our_Array End Sub 

Desglose de código VBA

  • En primer lugar, llamamos al Subprocedimiento " ReDim_Preserve_2D_Array_Both_Dimensions ".
  • A continuación, el resto de los códigos hasta el Transposición VBA son los mismos que en el primer código.
  • Aquí, estamos transponiendo la matriz.
  • Entonces, estamos aumentando el límite superior de la matriz.
  • Después de eso, transponemos la matriz de nuevo. Por lo tanto, en última instancia, cambiará el límite inferior.
  • A continuación, introducimos los valores de la matriz redimensionada conservando los datos antiguos.
  • Por último, escribimos los valores en el rango de celdas C6:E9 .
  • Después de eso, como se muestra en el primer método , Ejecutar este código.
  • Así, podemos visualizar cómo el código preserva un matriz 2D utilizando el botón " Reserva ReDim " y el Transposición VBA función.

Más información: VBA para transponer matriz en Excel (3 métodos)

Cosas para recordar

  • Reserva ReDim no puede cambiar el límite inferior de la matriz. Para ello, tenemos que utilizar la función Transponer función.
  • Sólo podemos utilizar ReDim en matrices dinámicas.

Conclusión

Te mostramos dos formas rápidas de " Reserva ReDim " a 2D matriz en Excel VBA. Si se enfrenta a algún problema con respecto a estos métodos o tiene algún comentario para mí, no dude en comentar a continuación. Además, puede visitar nuestro sitio ExcelWIKI para más artículos relacionados con Excel. Gracias por leer, ¡sigue superándote!

Hugh West es un capacitador y analista de Excel altamente experimentado con más de 10 años de experiencia en la industria. Tiene una Licenciatura en Contabilidad y Finanzas y una Maestría en Administración de Empresas. Hugh tiene una pasión por la enseñanza y ha desarrollado un enfoque de enseñanza único que es fácil de seguir y comprender. Su conocimiento experto de Excel ha ayudado a miles de estudiantes y profesionales en todo el mundo a mejorar sus habilidades y sobresalir en sus carreras. A través de su blog, Hugh comparte su conocimiento con el mundo, ofreciendo tutoriales gratuitos de Excel y capacitación en línea para ayudar a las personas y empresas a alcanzar su máximo potencial.