powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / транспонировать данные
8 сообщений из 8, страница 1 из 1
транспонировать данные
    #37083695
ffflake
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
есть следующий макрос, который копирует данные по условию из одного листа и вставляет в другой, но мне нужно чтобы каждую строку транспонировал, подскажите

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Dim ObrMa As Workbook 
Dim iLastRow As Long
Dim Target_ As Worksheet, sh As Worksheet
Dim i As Integer

Set sh = ActiveSheet

Set Target_ = ObrMa.Sheets("Лист2")
iLastRow = Target_.Cells(Target_.Rows.Count,  1 ).End(xlUp).Row +  1 

For i =  10  To  15 
If sh.Cells(i,  2 ).Text <> "" Then
sh.Rows(i).Copy Target_.Cells(iLastRow,  1 )
iLastRow = Target_.Cells(Target_.Rows.Count,  1 ).End(xlUp).Row +  1 
End If
Next i
...
Рейтинг: 0 / 0
транспонировать данные
    #37083738
ffflake
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
попробовала вот так, но что-то видимо не то
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Dim ObrMa As Workbook 
Dim iLastRow As Long
Dim Target_ As Worksheet, sh As Worksheet
Dim i As Integer

Set sh = ActiveSheet

Set Target_ = ObrMa.Sheets("Лист2")
iLastRow = Target_.Cells(Target_.Rows.Count,  1 ).End(xlUp).Row +  1 

For i =  10  To  15 
If sh.Cells(i,  2 ).Text <> "" Then
sh.Rows(i).Value = Application.Transpose(Target_.Cells(iLastRow,  1 ).Value) ' транспонировать
iLastRow = Target_.Cells(Target_.Rows.Count,  1 ).End(xlUp).Row +  1 
End If
Next i

...
Рейтинг: 0 / 0
транспонировать данные
    #37083839
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ffflake,

а зачем транспонировать в цикле ?
...
Рейтинг: 0 / 0
транспонировать данные
    #37083864
ffflake
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
big-dukeа зачем транспонировать в цикле ?

У меня есть массив
1 1 1 1 1
2 2 2 2 2
3 3 3 3 3

нужно сделать так
1
1
1
1
1
2
2
2
2
2
3
3
3
3
3
...
Рейтинг: 0 / 0
транспонировать данные
    #37083931
Фотография vikttur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если данные точно такие:
Код: plaintext
=ОСТАТ(ЦЕЛОЕ((СТРОКА(1:1)-1)/5+1)-1;5)+1
Транспонировать матрицу любых чисел в строку:
Код: plaintext
=ИНДЕКС($A$1:$E$3;ЦЕЛОЕ((СТРОКА(1:1)-1)/5)+1;ОСТАТ((СТРОКА(1:1)-1);5)+1)
Можно добавить проверку:
Код: plaintext
=ЕСЛИ(СТРОКА(1:1)>СЧЁТ($A$1:$E$3);"";формула)
Можно в формуле делать проверку на количество строк/столбцов. Много чего можно :)
...
Рейтинг: 0 / 0
транспонировать данные
    #37084009
ffflake
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vikttur,
спасибо, очень полезная информация для меня и как вариант можно использовать, но все таки хотелось бы в макросе это как-то реализовать
...
Рейтинг: 0 / 0
транспонировать данные
    #37084526
Algol70
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ffflake посмотрите сайт www.planetaexcel.ru примеры - Использование формул массивов в Excel там смотрите пример2
...
Рейтинг: 0 / 0
транспонировать данные
    #37084550
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ffflake,

почему именно макрос ?
Можно так.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Public Sub CustomTranspose()
Dim iRow As Range
Dim TargetRange As Range
Dim RowOffset As Long
Const SOURCE_AREA_ADDRESS As String = "A1:E3"
Const DEST_CELL_ADDRESS As String = "A10"

    Set TargetRange = Range(SOURCE_AREA_ADDRESS)
    For Each iRow In TargetRange.Rows
        RowOffset = (iRow.Row - TargetRange.Range("A1").Row +  1 ) * TargetRange.Columns.Count - TargetRange.Columns.Count
        iRow.Copy
        Range(DEST_CELL_ADDRESS).Offset(RowOffset,  0 ).PasteSpecial xlPasteValues, , , True
    Next
End Sub
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / транспонировать данные
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]