2

У меня есть две таблицы table1: список уникальных идентификаторов (размер списка 3) и table2: список элементов (размер списка 3).

Как я могу создать третий список, где для каждой строки в таблице 1 он добавляет все строки из таблицы 2 с уникальным идентификатором против него. Таким образом, используя приведенные выше примеры чисел, мы должны получить 9 строк по 3 строки для каждого уникального идентификатора из таблицы table1.

Надеюсь, что это имеет смысл, я также надеюсь, что ниже читается!

Таблица 1:

UID Header
UID1
UID2
UID3

Таблица 2:

Header1      Header2
Name1        Value1       
Name2        Value2
Name3        Value3

Ожидаемый результат:

UIDH    Header1      Header2
UID1    Name1        Value1       
UID1    Name2        Value2
UID1    Name3        Value3
UID2    Name1        Value1       
UID2    Name2        Value2
UID2    Name3        Value3
UID3    Name1        Value1       
UID3    Name2        Value2
UID3    Name3        Value3

1 ответ1

0

Это именно то, что вы просили

Option Explicit
Sub OoohEckPirates()

Dim table1Start As Integer
table1Start = 2                     ' UPDATE ME

Dim table2Start As Integer
table2Start = 7                     ' UPDATE ME

Dim resultsTableStart As Integer
resultsTableStart = 12              ' UPDATE ME


'Create the header
Range("A11").Value = "UID Header"   ' UPDATE ME
Range("B11").Value = "Name Header"  ' UPDATE ME
Range("C11").Value = "Value Header" ' UPDATE ME 

Dim header1Row As Integer
Dim header2Row As Integer
Dim resultsRow As Integer

Dim col  As Integer
col = 65                             'UPDATE ME - 65 = A, 66 = B, 67 = C. So, if your first column is A, set it to 65

Dim currentUid As String

header1Row = table1Start
resultsRow = resultsTableStart
Do While (Range("A" & header1Row).Value <> "")
    currentUid = Range("A" & header1Row).Value
    header2Row = table2Start

    Do While (Range(Chr(col) & header2Row).Value <> "")
            Range(Chr(col) & resultsRow).Value = currentUid
            Do While (Range(Chr(col) & header2Row).Value <> "")

                 Range(Chr(col + 1) & resultsRow).Value = Range(Chr(col) & header2Row).Value
                 col = col + 1
            Loop
    col = 65
    header2Row = header2Row + 1
    resultsRow = resultsRow + 1
    Loop


    header1Row = header1Row + 1
Loop

End Sub

Прежде чем запустить его, сделайте резервную копию, хотя, чтобы быть уверенным,

Как добавить VBA в MS Office?

До

После

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