У меня есть несколько таблиц, как это:

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'

И я хотел бы иметь такую таблицу в результате

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

Это в основном добавление всех строк нескольких таблиц, но решение вручную, какие столбцы в каждой таблице следует добавить, и решение о том, какой столбец из таблицы A соответствует тому, какой столбец таблицы B и в каком столбце окончательной таблицы (а какие нет) добавить)

Я думаю, я мог бы просто сделать копирование, но я бы предпочел не делать этого. Я также мог бы изменить имена столбцов в каждой таблице, если это необходимо. Col Ba = Col Y , Col Ca = Col Z , Col Db = Col Z и так далее, но я бы предпочел не делать этого.

Я использую Excel 2016 Использование отношений не работает, потому что, очевидно, данные должны быть уникальными в каждом столбце (без дубликатов)

1 ответ1

0

Вы можете использовать этот код для слияния диапазонов данных, когда имеет ту же структуру.

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 

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .