Mesclar várias tabelas

0

Eu tenho várias tabelas como esta:

Table A                               Table B
Col Aa    Col Ba     Col Ca         Col Ab   Col Bb   Col Cb   Col Db
  1        Ab1         Ac1            1        Bb1      Bc1      Bd1
  2        Ab2         Ac2            3        Bb3      Bc3      Bd3
  4        Ab4         Ac4            3        Bb3'     Bc3'     Bd3'

Eu gostaria de ter uma tabela resultante assim

Col X       Col Y         Col Z
  1          Ab1           Ac1
  2          Ab2           Ac2
  4          Ab4           Ac4
  1          Bb1           Bd1
  3          Bb3           Bd3'
  3          Bb3'          Bd3'

É basicamente adicionar todas as linhas de várias tabelas, mas decidir manualmente quais colunas em cada tabela devem ser adicionadas e decidir qual coluna da tabela A combina com a coluna da tabela B e em qual coluna da tabela final (e quais colunas não adicionar)

Eu acho que eu poderia copiar, mas eu preferiria não copiar. Eu também poderia alterar as colunas de nome em cada tabela, se necessário. Col Ba = Col Y , Col Ca = Col Z , Col Db = Col Z e assim por diante, mas novamente eu preferiria não fazer isso.

Estou usando o Excel 2016. O uso de relacionamentos não funciona porque, aparentemente, os dados precisam ser exclusivos em cada coluna (sem duplicatas)

    
por kender6 28.03.2017 / 00:30

1 resposta

0

Você pode usar esse código para Intervalos de dados de mesclagem quando tiver a mesma estrutura.

Sub MergeData()

Dim i As Integer
Dim xTCount As Variant
Dim xWs As Worksheet
On Error Resume Next LInput:
xTCount = Application.InputBox( "The number of title rows" , "", "1" )

If TypeName(xTCount) = "Boolean" Then Exit Sub
If Not IsNumeric(xTCount) Then
MsgBox "Only can enter number" 
GoTo LInput
End If
Set xWs = ActiveWorkbook.Worksheets.Add(Sheets(1))
xWs.Name = "Merge Data"

Worksheets(2).Range( "A1" ).EntireRow.Copy Destination:=xWs.Range( "A1" )

For i = 2 To Worksheets.Count
Worksheets(i).Range( "A1" ).CurrentRegion.Offset( CInt(xTCount), 0).Copy _
Destination:=xWs.Cells(xWs.UsedRange.Cells(xWs.UsedRange.Count).Row + 1, 1)
Next
End Sub 
    
por 18.11.2017 / 05:53