Eu tenho 2 folhas no Excel, cada uma com 10 linhas. Existe algum tipo de fórmula / macro de "junção cruzada" no Excel que permite criar uma terceira planilha com todas as linhas com junção cruzada (100 linhas no total).
fonte
Eu tenho 2 folhas no Excel, cada uma com 10 linhas. Existe algum tipo de fórmula / macro de "junção cruzada" no Excel que permite criar uma terceira planilha com todas as linhas com junção cruzada (100 linhas no total).
Se o uso do OLEDB não for uma opção abaixo, a função poderá ser usada para gerar produtos cruzados
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 que a função acima é adicionada ao módulo vba, Para produzir produtos cruzados A1:B5
e C1:D5
selecionar células de destino (por exemplo, E1: H25), insira a fórmula e use ctrl + shift + enter
=Cross_Product_range(A1:B5,C1:D5)
Você poderia fazer isso facilmente com o Power Query (se você o tiver com sua versão do Excel):
Configure uma conexão de dados para cada uma das tabelas que você deseja combinar: Selecione a tabela no Excel e escolha "Da tabela / intervalo" em "Dados" na faixa de opções. Isso exibirá o editor do Power Query.
Para voltar ao Excel, clique na pequena seta no botão "Fechar e carregar", selecione "Fechar e carregar em" e depois em "Somente conexão". Caso contrário, você terminará com uma cópia da sua tabela no Excel ...
Faça o mesmo para a segunda tabela.
O painel "Consultas e conexões" agora deve estar aberto à direita da janela. Caso contrário, clique em "Dados -> Consultas e conexões" na faixa de opções.
As duas tabelas devem ser listadas como consultas.
A próxima etapa é fazer uma consulta de junção cruzada combinando as duas e retornar o resultado ao Excel:
Clique com o botão direito do mouse em uma das consultas no painel "Consultas e conexões" e selecione "Referência". Isso abrirá o editor Power Query novamente e criará uma terceira consulta que está apontando para uma de suas tabelas.
Agora escolha "Adicionar coluna -> Coluna personalizada" na faixa de opções do Power Query ... A fórmula para a nova coluna será o nome da segunda consulta - ou seja, os dados a serem cruzados. Se não houver espaço no nome, digite-o diretamente (por exemplo, = Tabela2, caso contrário, ele deverá ser = # "Tabela 2".
Agora você deve ter uma nova coluna denominada "Personalizado" com "Tabela" em cada célula. Clique no pequeno símbolo no cabeçalho da coluna para expandir cada tabela.
Tudo indo bem, você está pronto! Clique em "Fechar e carregar" e a tabela de junção cruzada deve aparecer em uma nova planilha.
Uma coisa a observar: essa junção cruzada não será atualizada automaticamente quando você alterar os dados de origem. Você precisará clicar com o botão direito do mouse e selecionar "Atualizar" para executar novamente a consulta de junção cruzada.
Provavelmente é mais direto do que estou fazendo parecer!