6 febrero, 2025

GENERAR UN PATRÓN NUMÉRICO CON MATRICES BIDIMENSIONALES EN VBA

Hola a todos!.

Espero que estéis pasando unos buenos días de descanso durante este puente de la Constitución!.

Hoy ha decidido escribir un pequeño post sobre los patrones numéricos y una forma de generar uno en particular. Se trata del siguiente (aunque puede tener muchas variaciones): 123 212 321 o lo que es lo mismo pero visualmente en Excel:

GENERAR UN PATRÓN NUMÉRICO CON MATRICES BIDIMENSIONALES EN VBA

Podéis verlo perfectamente, y además me he permitido utilizar el formato condicional para colorear el área, generando así una secuencia mucho más visual, fijaros en el número 1, (verde) cómo se repita y cruza la diagonal. Esto lo podremos hacer de distintos tamaños, por ejemplo, de 20X20:

GENERAR UN PATRÓN NUMÉRICO CON MATRICES BIDIMENSIONALES EN VBA_1

Y ¿cómo generamos este patrón?, aquí el código:

Option Explicit
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'Declaramos variables
Dim Mensaje As String, Titulo As String, MiArea As Variant
Dim i As Long, j As Long, celda As String
'Con un inputbox determinamos las dimensiones de nuestro cubo
Mensaje = "Introduce un número que será el alto y ancho del cubo que vamos a crear, por ejemplo el 20 para ser 20X20"
Titulo = "AREA DEL CUBO"
MiArea = InputBox(Mensaje, Titulo)
If StrPtr(MiArea) = 0 Then Exit Sub
'Mediante dos bucles anidados generamos una matriz de dos dimensiones
'que realizará la inversión de los dígitos generados en la primera columna
ReDim MiRango(0 To MiArea, 0 To MiArea)
MiRango(0, 0) = 1
For i = 1 To MiArea
MiRango(i, 0) = MiRango(i - 1, 0) + 1
MiRango(0, i) = MiRango(0, i - 1) + 1
For j = 1 To MiArea
MiRango(i, j) = MiRango(i - 1, j - 1)
MiRango(j, i) = MiRango(j - 1, i - 1)
Next j
Next i
'Pasamos los datos desde la celda activa con dobleclick
celda = ActiveCell.Address
Range(celda).Resize(MiArea, MiArea).Value = MiRango
End Sub

Como podéis observar utilizamos una matriz de dos dimensiones (necesaria) para crear esta secuencia, dado que necesitamos tener en cuenta filas y columnas. Las matrices se rellenan mediante dos loop anidados e incrementando +1 en cada fila y columna.

Podemos modificarlos y multiplicarlo por 2, por 3 etc o hacerlo en las diagonales (j) y el patrón sería distinto.

Para que no tengáis que ir modificando el área del cubo, os he creado en la macro un inputbox para indicarlo antes de pasar los datos a la hoja.

Y esto es todo, este es un ejercicio para que veais no solo cómo se puede crear este patrón, sino como podemos rellenar y generar una matriz bidimensional y (importate), pasarla a la hoja.

Descarga el archivo de ejemplo pulsando en: GENERAR UN PATRÓN NUMÉRICO CON MATRICES BIDIMENSIONALES EN VBA

¿Te ha resultado de interés?, puedes apoyar a Excel Signum con una pequeña donación.

Donate Button with Credit Cards

¡¡Muchas gracias!!

Mediante la suscripción al blog, la realización comentarios o el uso del formulario de contacto estás dando tu consentimiento expreso al tratamiento de los datos personales proporcionados según lo dispuesto en la ley vigente (LOPD). Tienes más información al respecto en esta página del blog: Política de Privacidad y Cookies

Comparte este post

Si te ha gustado o tienes alguna duda, puedes dejar aquí tu comentario.

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR
Aviso de cookies