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:
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:
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.
¡¡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