Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / транспонировать данные / 8 сообщений из 8, страница 1 из 1
28.01.2011, 10:55
    #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
28.01.2011, 11:08
    #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
28.01.2011, 11:40
    #37083839
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
транспонировать данные
ffflake,

а зачем транспонировать в цикле ?
...
Рейтинг: 0 / 0
28.01.2011, 11:45
    #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
28.01.2011, 12:04
    #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
28.01.2011, 12:33
    #37084009
ffflake
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
транспонировать данные
vikttur,
спасибо, очень полезная информация для меня и как вариант можно использовать, но все таки хотелось бы в макросе это как-то реализовать
...
Рейтинг: 0 / 0
28.01.2011, 14:59
    #37084526
Algol70
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
транспонировать данные
ffflake посмотрите сайт www.planetaexcel.ru примеры - Использование формул массивов в Excel там смотрите пример2
...
Рейтинг: 0 / 0
28.01.2011, 15:03
    #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
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / транспонировать данные / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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