Matriz bidimensional del rango [cerrado]

Resuelto Siddhartha asked hace 11 años • 1 respuestas

Tengo datos de texto en la hoja de cálculo de Excel en las celdas B6:H14.

Algunas filas tendrán 2 celdas con contenido, mientras que otras tendrán 4 y algunas tendrán 7. ¿Cómo las copio en una matriz bidimensional? Ya conozco las dimensiones y, por lo tanto, estoy de acuerdo con que las dimensiones no se declaren como código dinámico.

¿Necesito usar un bucle (que actualmente planeo usar)?

¿O hay una manera más fácil/elegante?

Siddhartha avatar Aug 28 '13 14:08 Siddhartha
Aceptado

Suponiendo que su hoja de cálculo se vea así

hoja de cálculo

Hay una manera realmente fácil de colocar eso en una matriz 2D.

Dim arr as Variant
arr = Range("B6:H14").Value

La forma más sencilla de imprimir esta matriz en una hoja de cálculo

Sub PrintVariantArr()

    Dim arr As Variant
    arr = Range("B6:H14")

    Range("B16").Resize(UBound(arr, 1), UBound(arr, 2)) = arr

End Sub

O puede iterar/recorrer la matriz

Sub RangeToArray()

    Dim arr As Variant
    arr = Range("B6:H14").Value
    Dim r As Long, c As Long

    r = 16
    c = 2

    Dim i, j
    For i = LBound(arr, 1) To UBound(arr, 1)
        For j = LBound(arr, 2) To UBound(arr, 2)
            Cells(r, c) = arr(i, j)
            c = c + 1
        Next j
        c = 2
        r = r + 1
    Next i

End Sub

Y su matriz se imprimió nuevamente en la hoja de cálculo.

resultado

 avatar Aug 28 '2013 07:08