Como posso criar uma “Cross-Join” no excel?

5

Eu tenho 2 folhas no Excel, cada uma com 10 linhas. Existe algum tipo de fórmula "cross-join" / macro no Excel que me permite criar uma terceira folha com todas as linhas cruzadas (100 linhas no total).

    
por Espo 08.02.2010 / 10:42

2 respostas

5

Este artigo contém um script que pode ajudar:

Precisa de uma junção cruzada das linhas de dois folhas de excel

    
por 08.02.2010 / 11:09
0

Se o uso de OLEDB não for uma opção, a função abaixo pode ser usada para gerar um produto cruzado

Option Base 1

Function Cross_Product_range(r1 As Range, r2 As Range) As Variant
    Cross_Product_range = Cross_Product_array(r1.Value, r2.Value)
End Function

Function Cross_Product_array(a1 As Variant, a2 As Variant) As Variant
    On Error GoTo ErrorHandler
    Dim TempArray(), k, m
    ReDim TempArray(UBound(a1) * UBound(a2), UBound(a1, 2) + UBound(a2, 2))
    k = 1
    For i = 1 To UBound(a1)
        For j = 1 To UBound(a2)
            m = 1
            For u = 1 To UBound(a1, 2)
                TempArray(k, m) = a1(i, u)
                m = m + 1
            Next
            For u = 1 To UBound(a2, 2)
                TempArray(k, m) = a2(j, u)
                m = m + 1
            Next
            k = k + 1
        Next
    Next
    Cross_Product_array = TempArray
    Exit Function
    ErrorHandler:
    Debug.Print Err
End Function

Uma vez acima, a função é adicionada ao módulo vba, Para produzir produto cruzado de A1:B5 e C1:D5 , selecione as células alvo (digamos E1: H25) e insira a fórmula e use ctrl + shift + enter

=Cross_Product_range(A1:B5,C1:D5)
    
por 25.09.2013 / 17:32