Alt+F11, там пишите макрос, который будет смотреть столбцы справа на наличие значений и, если найдет, добавит строку, внесёт это значение.
В принципе, ничего сложного. Других путей тут как бы нет (в смысле, без VBA)
UPD:Sub Обработка()
Dim row As Long, column As Long, i As Long
row = 1 ' строка, с которой начинаем обработку
column = 1 ' столбец с id
Do While Len(Cells(row, column).Value) <> 0
i = 2
Do While Len(Cells(row, column + i).Value) <> 0
Rows(row + i - 1 & ":" & row + i - 1).Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Cells(row + i - 1, column).Value = Cells(row, column).Value
Cells(row + i - 1, column + 1).Value = Cells(row, column + i).Value
Cells(row, column + i).Value = ""
i = i + 1
Loop
row = row + 1
Loop
End Sub
На 150 тыс. может на пару минут растянуться, но, главное, свою задачу выполнит.
Если часто будете использовать решение: можно оптимизировать, считав всё это в память для вычислений