Таблица анализа списка Excel

У меня есть лист Excel с первичным ключом в одном столбце и списком атрибутов (с разделителями канала) в другом. Вот пример:

pk1     a | b | c
pk2
pk3     b | d
pk4     e

Это продолжается около 38 тысяч строк.

Я хочу создать таблицу перекрестных ссылок из этих данных, чтобы она выглядела примерно так:

pk1     a
pk1     b
pk1     c
pk3     b
pk3     d
pk4     e

Есть ли простой способ сделать это?

1 ответ

Решение

С VBA эта подпрограмма проанализировала данные в предоставленном вами формате. Может потребовать небольшого обновления в зависимости от структуры столбцов.

Sub Parse()
    Dim thissheet As Worksheet
    Set thissheet = ActiveSheet

    Sheets.Add
    ActiveSheet.Range("A1").Value = "Header 1"
    ActiveSheet.Range("B1").Value = "Header 2"

    Dim pk As Long
    Dim carray() As String

    For x = 0 To thissheet.Range("A65535").End(xlUp).Row

    If InStr(1, thissheet.Range("B2").Offset(x, 0).Value, "|") > 0 Then
    'if cellvalue contains bar
    carray() = Split(thissheet.Range("B2").Offset(x, 0).Value, "|")
    For i = LBound(carray) To UBound(carray)
    ActiveSheet.Range("A2").Offset(pk, 0).Value = thissheet.Range("A2").Offset(x, 0).Value
    ActiveSheet.Range("B2").Offset(pk, 0).Value = Trim(carray(i))
    pk = pk + 1
    Next i
    Else
    'No Bar do this
    ActiveSheet.Range("A2").Offset(pk, 0).Value = thissheet.Range("A2").Offset(x, 0).Value
    ActiveSheet.Range("B2").Offset(pk, 0).Value = thissheet.Range("B2").Offset(x, 0).Value
    pk = pk + 1
    End If
    Next

    End Sub
Другие вопросы по тегам