Mershik, еще раз - решение RAN не в power query а в использовании макроса VB и кто вам сказал что я его не беру - просто еще не успел проверить. Проблема, с которой я столкнулся не лежит в плоскости различий операционных систем, а в принципиальном подходе - в случае необходимости я открою EXCEL в VM на маке.
Но ведь один вариант Вас уже не устроил - потому что Мас ) И получилось, что человек зря потратил своё время, пытаясь Вам помочь. А вот разместили бы Вы свою тему в нужном месте...
Или я туплю или чего-то не понимаю... Где решение в power query? RAN предложил решение написать макрос - я его решение попробую чуть позже сегодня - этот функционал есть на маке - кто время зря тратил? У вас, Юрий М, есть предложение по решению? вы можете как-то мне помочь?
Sub ConvertTablica()
Dim i As Long
Dim iLastRow As Long
Dim iLR As Long
iLastRow = Range("A3").End(xlDown).Row
iLR = 14
For i = 4 To iLastRow
Cells(i, "A").Copy Cells(iLR, "A")
Range("B3:D3").Copy
Cells(iLR, "B").PasteSpecial xlPasteFormats, Transpose:=True
Cells(iLR, "B").PasteSpecial xlPasteValues, Transpose:=True
Range("B" & i & ":D" & i).Copy
Cells(iLR, "C").PasteSpecial xlPasteFormats, Transpose:=True
Cells(iLR, "C").PasteSpecial xlPasteValues, Transpose:=True
iLR = iLR + 3
Next
iLastRow = Cells(Rows.Count, "B").End(xlUp).Row
With Range("A14:A" & iLastRow)
.SpecialCells(xlCellTypeBlanks).FormulaR1C1 = "=R[-1]C"
.Value = .Value
End With
Range("A14:A" & iLastRow).Borders.Weight = xlThin
End Sub
Кирилл Демидов, Макроса в вашем файле так и не увидел. Вот адаптированный для вашего файла макрос
Код
Sub ConvertTablica()
Dim i As Long
Dim iLastRow As Long
Dim iLR As Long
iLastRow = Range("A3").End(xlDown).Row
iLR = 40
For i = 2 To iLastRow
Cells(i, "A").Copy Cells(iLR, "A")
Range("B1:Q1").Copy
Cells(iLR, "B").PasteSpecial xlPasteFormats, Transpose:=True
Cells(iLR, "B").PasteSpecial xlPasteValues, Transpose:=True
Range("B" & i & ":Q" & i).Copy
Cells(iLR, "C").PasteSpecial xlPasteFormats, Transpose:=True
Cells(iLR, "C").PasteSpecial xlPasteValues, Transpose:=True
iLR = iLR + 16
Next
iLastRow = Cells(Rows.Count, "B").End(xlUp).Row
With Range("A40:A" & iLastRow)
.SpecialCells(xlCellTypeBlanks).FormulaR1C1 = "=R[-1]C"
.Value = .Value
End With
Range("A40:A" & iLastRow).Borders.Weight = xlThin
End Sub
Андрей VG написал: а зачем вам Power Pivot для решения именно этой задачи? К чему привлекать не нужные сущности?
Я знаю как эту задачу решить в PowerBI с помощью нехитрых манипуляций с M-language - но технически я хотел бы решить ее с помощью решения внутри EXCEL и без привлечения PowerQuery/PowerBI/PowerPivot - так как в конечном случае это будет делать не очень технически подкованный специалист, которому проще запустить макрос, чем разбираться в многомерных моделях
Я просто бигдатой занимаюсь - вот когда винда научиться без танцев с бубнами запускать все необходимые сервисы (Apache Spark, RMQ, Kafka и т.п.) - я с радостью к ней вернусь.