Obtener valores de rango

El uso más común de VBA es la manipulación de hojas de cálculo de Excel.

Obtener el valor de una celda o rango específico es fundamental para el procesamiento de datos en Excel.

Por ejemplo, cuando se trata de procesar datos con condiciones complejas que no se pueden resolver solo con funciones, es útil usar VBA para obtener los datos y luego procesarlos.

Además, cuando se obtienen datos de fuera de Excel y se procesan en Excel, también se puede usar VBA para obtener esos datos.

En esta página, se explica cómo obtener el valor de un rango específico en una hoja de cálculo usando VBA.

Cómo obtener el valor de un rango

Para obtener el valor de una celda o rango específico, se utiliza la propiedad Range del objeto Worksheet.

Cómo_obtener_el_valor_de_un_rango
Dim ws As Worksheet

' Obtener la hoja de cálculo
Set ws = ThisWorkbook.Worksheets("Sheet1")

' Obtener el valor de la celda A1
Dim cellValue As Variant
cellValue = ws.Range("A1").Value

' Obtener el valor del rango A1:C10
Dim rangeValues As Variant
rangeValues = ws.Range("A1:C10").Value

Como argumento de la propiedad Range, se especifica una dirección como cadena de texto, similar a cómo se haría en una función.

También se puede usar la propiedad Cells de la clase Worksheet para especificar la celda de inicio y la celda de fin del rango.

Obtener
' Obtener los valores del rango desde la celda A1 hasta la celda C10
Dim rangeValues As Variant
rangeValues = ws.Range(ws.Cells(1, 1), ws.Cells(10, 3)).Value

Ejemplo específico para obtener un rango particular

Obtener datos de un rango específico

El siguiente código es un ejemplo de cómo obtener datos de un rango específico de una hoja en un libro de trabajo abierto y devolverlos como una matriz.

Sub GetRangeValues()
    Dim ws As Worksheet
    Dim targetRange As Range
    Dim data As Variant

    ' Obtener la hoja de trabajo
    Set ws = Thisworkbook.Worksheets("Sheet1")

    ' Especificar el rango específico
    Set targetRange = ws.Range("A1:C10")

    ' Obtener los datos del rango como una matriz
    data = targetRange.Value

    ' Procesar los datos de la matriz (aquí simplemente se imprimen)
    Dim i As Long, j As Long
    For i = LBound(data, 1) To UBound(data, 1)
        For j = LBound(data, 2) To UBound(data, 2)
            Debug.Print data(i, j)
        Next j
    Next i
End Sub

Cuando ejecuta este código, los datos del rango A1:C10 de la hoja SalesData se obtienen como una matriz y el contenido de las celdas se muestra en la ventana de depuración en el orden de A1, A2, A3, …

Procesar datos basados en el rango

También puede procesar los datos obtenidos. Por ejemplo, puede filtrar los datos según ciertos criterios y exportarlos a otra hoja.

Sub FilterAndOutputData()
    ' ... (continuar el código anterior)

    ' Filtrar los datos y exportarlos a una nueva hoja
    Dim outputWs As Worksheet
    Set outputWs = wb.Worksheets.Add
    outputWs.Name = "FilteredData"

    Dim outputRow As Long
    outputRow = 1

    ' Exportar solo los datos que cumplen con los criterios
    For i = 1 To UBound(data, 1)
        If data(i, 3) > 1000 Then ' Si el valor en la tercera columna es mayor que 1000
            For j = 1 To UBound(data, 2)
                outputWs.Cells(outputRow, j).Value = data(i, j)
            Next j
            outputRow = outputRow + 1
        End If
    Next i
End Sub

Este código solo exporta a una nueva hoja las filas donde el valor en la tercera columna supera los 1000.

Resumen

Como se mencionó al principio, obtener valores de un rango específico en una hoja de trabajo usando VBA es fundamental para el procesamiento de datos en Excel.

Entre estos, el método que utiliza la propiedad Range es especialmente frecuente.

Por favor, utilice esto como base para crear su propio código VBA adaptado a sus necesidades laborales.

#Símbolo del sistema #Archivo por lotes #Argumentos #Línea de comandos #Comando