Tag Archives: Transpor dados

Transpor dados no VBA – Invertendo Linhas e Colunas

Transpor Dados
Transpor Dados

Muito útil em seu formato tradicional no Excel, a função de transposição de dados permite trocar facilmente linhas por colunas de uma área de dados no Excel.

Para desenvolvedores VBA essa necessidade é um pouco rara, mas não menos importante, principalmente quando manipulamos muitos dados em arrays e controles. Bom, surgiu a necessidade e encontrei um código muito bem feito que efetua a tarefa.

A função recebe um Array de Variants de 2 dimensões como um argumento e retorna o mesmo já transposto.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Function Array2DTranspose(avValues As Variant) As Variant
    Dim lThisCol As Long, lThisRow As Long
    Dim lUb2 As Long, lLb2 As Long
    Dim lUb1 As Long, lLb1 As Long
    Dim avTransposed As Variant
    If IsArray(avValues) Then
        On Error GoTo ErrFailed
        lUb2 = UBound(avValues, 2)
        lLb2 = LBound(avValues, 2)
        lUb1 = UBound(avValues, 1)
        lLb1 = LBound(avValues, 1)
        ReDim avTransposed(lLb2 To lUb2, lLb1 To lUb1)
        For lThisCol = lLb1 To lUb1
            For lThisRow = lLb2 To lUb2
                avTransposed(lThisRow, lThisCol) = avValues(lThisCol, lThisRow)
            Next
        Next
    End If
    Array2DTranspose = avTransposed
    Exit Function
ErrFailed:
    Debug.Print err.description
    Debug.Assert False
    Array2DTranspose = Empty
    Exit Function
    Resume
End Function

Perfeita para trabalhar com dados, principalmente aqueles retornados em Recordsets ADO ou DAO.

Abraços e bom profeito!

Tomás Vásquez