Помогите сделать следующее: есть три столбца со значениями: a b c d e f x y z
Нужно преобразовать их в один столбец, но чтобы значения, стоявшие на одной строке, встали друг под другом в том же порядке, например: a b c d e f x y z
Надеюсь понятно объяснил. Очень нужна помощь! Помогите.
Ввели в C9 и протянули вниз: =ИНДЕКС($A$1:$D$3;ЦЕЛОЕ((СТРОКА()-СТРОКА($8:$8)-1)/ЧИСЛСТОЛБ($A$1:$D$3))+1;ОСТАТ((СТРОКА()-СТРОКА($8:$8)-1);ЧИСЛСТОЛБ($A$1:$D$3))+1)
Формула массива (ФМ) вводится Ctrl+Shift+Enter Memento mori
Sub СтрокиВСтолбец()
Dim cl As Range
Dim s As String
Dim arr
With ActiveSheet
For Each cl In .UsedRange.Cells
If cl.Text <> "" Then
s = s & " " & cl.Text
End If
Next
arr = Split(s)
End With
Workbooks.Add
Cells(1).Resize(UBound(arr) - 1) = WorksheetFunction.Transpose(arr)
End Sub
МатросНаЗебре, Вы немного не так сделали. У вас получается, что макрос переносит значение из одной ячейки в столбец, а у меня в примере речь идет про несколько отдельных столбцов.
=ЕСЛИОШИБКА(ИНДЕКС(A$1:D$3;ОСТАТ(ЧСТРОК(D$9:D9)-1;СЧЁТЗ(A$1:A$3))+1;ЦЕЛОЕ((ЧСТРОК(D$9:D9)-1)/СЧЁТЗ(A$1:A$3))+1);"") одной формулой (21-й эксель): =LET(таб_;A1:D3;чс_;ЧСТРОК(таб_);чк_;ЧИСЛСТОЛБ(таб_);инд_;ПОСЛЕД(чс_*чк_)-1;ИНДЕКС(таб_;ОСТАТ(инд_;чс_)+1;ОТБР(инд_/чс_)+1)) или покороче, но помедленней: =ФИЛЬТР.XML("<l><i>"&ОБЪЕДИНИТЬ("</i><i>";1;ТРАНСП(A1:D3))&"</i></l>";"//i")