1

У меня есть таблица Excel в следующем формате.

ID Date1 Date2 Date3  
1  1/1   1/2   1/3
2  1/2   1/3   1/1
3  1/3   1/2   1/4

Есть ли способ изменить его в этот формат?

ID Date
1  1/1
1  1/2
1  1/3
2  1/2
2  1/3
2  1/1
3  1/3
3  1/2
3  1/4

Я открыт для использования VBA, PowerQuery, PowerPivot, модели данных и т.д. Есть ли технический термин, который я должен использовать при поиске ответов на эту проблему (нормализация, преобразование и т.д.).

Спасибо за любую помощь.

2 ответа2

2

С такими данными, как:

Выберите ячейку и введите:

=ROUNDUP(ROWS($1:1)/3,0)

и в соседней ячейке введите:

=OFFSET($B$2,ROUNDUP(ROWS($1:1)/3,0)-1,MOD(ROWS($1:1)-1,3))

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

1

Если у вас есть целая куча, и вы предпочитаете использовать VBA, это будет работать

Option Explicit

Sub unpivot()
Dim lastrow As Integer
lastrow = Cells(Rows.Count, 1).End(xlUp).Row
Dim lastcol As Integer
lastcol = Cells(1, Columns.Count).End(xlToLeft).Column

Dim r As Integer
Dim c As Integer


For r = lastrow To 2 Step -1

    For c = lastcol To 3 Step -1
        If Cells(r, c) <> "" Then
            Rows(r + 1).Insert
            Cells(r + 1, 1) = Cells(r, 1)
            Cells(r + 1, 2) = Cells(r, c)
            Cells(r, c).Clear
        Else: Rows(r).Delete
        End If
    Next

Next

End Sub

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