#excel #function
#excel #функция
Вопрос:
Картинка стоит тысячи слов. Допустим, на одном листе у меня есть следующая таблица:
Используя эту информацию, я хочу программно сгенерировать таблицу, подобную этой (своего рода расплавление длинной таблицы в широкую форму) на другом листе:
Как вы можете этого добиться?
Комментарии:
1. @A.S.H Я не думаю, что это плохой вопрос. Я задал вопрос, потому что я не эксперт Excel. Я могу сделать это в R за секунду, но мне было любопытно, можно ли это сделать в «excel» так же эффективно, как я работал с электронной таблицей Excel.
2. Когда я комментировал, я не заметил, что это был очень старый пост, возрожденный из-за нового ответа.
Ответ №1:
Использование VBA:
Range("G1:K99").Clear
For Each xx In Range("A:A")
If xx.Value = "" Then Exit Sub
Range("G1").Offset(xx.Value, 0) = xx.Value
For e = 1 To 99
If Range("G1").Offset(xx.Value, e) = "" Then
Range("G1").Offset(xx.Value, e) = xx.Offset(0, 1).Value
Exit For
End If
Next
Next
Таблица, созданная из столбца «G». Если вам нужен другой лист:
Sheets(2).Range("G1: ...
добавьте листы раньше…
Без VBA, следуя схеме:
Добавление формул:
M2 -> =IFERROR(MATCH(L2;$A$1:$A$8;);"")
N2 -> =IFERROR(MATCH(L2;INDIRECT("$A" amp; (M2 1) amp; ":$A$8");) M2;"")
O2 -> =IFERROR(MATCH(L2;INDIRECT("$A" amp; (N2 1) amp; ":$A$8");) N2;"")
P2 -> =IFERROR(INDEX($B$1:$B$8;M2);"") Autocomplete also columns to R
и автозаполнение …