Страницы: 1
RSS
Макрос для транспонирования, Сложное транспонирование
 
Подскажите пожалуйста. Могу ли я найти где-то готовый макрос или есть готовое решение в XL. И транспонирование это или нет.  Голову сломал как можно сделать. Прошу помогите. Пример прилагаю.
 
Код
Sub TT()
    Dim r, c, j
    r = 7
    For c = 2 To 9
        For j = 2 To 4
            r = r + 1
            Cells(r, 3) = Cells(1, c)
            Cells(r, 4) = Cells(j, 1)
            Cells(r, 5) = Cells(j, c)
        Next
    Next
End Sub
There is no knowledge that is not power
 
Доброе время суток
Цитата
sergey82 написал: И транспонирование это или нет
Скорее то, что по английски называют unpivot. Вариант на Power Query. Можете попробовать Редизайнер таблиц.
Успехов.
Изменено: Андрей VG - 06.01.2016 14:53:42
 
Поищите еще Редизайнер таблиц есть и другие варианты
Изменено: gling - 06.01.2016 13:52:51
 
Что то у меня не получается. Ставлю строки и открывается чистый лист и все. Таблица у меня очень большая. Вот таблица которая нужно переделать. Хотел бы обратится за помощью написания. Пишите в личку. Прикрепил файл. на первой странице сама таблица на второй странице как нужно сделать. Пишите на почту  
Изменено: sergey82 - 06.01.2016 21:06:14
 
Попробуйте еще раз.
 
Большущие спасибо!
Изменено: sergey82 - 06.01.2016 16:28:40
 
Добрый день, очень нужен запрос наоборот. Есть данные в столбец, нужно транспонировать в строку.
Исходные данные, выделенные жёлтым, нужно сделать в формате, выделенным голубым.
Прилагаю
Код
Sub Trans()
    Dim rngHor As Range
    Dim rngVer As Range
    Dim rngOut As Range
    Dim counter As Long
    Dim lngRow As Long
    Dim cell As Range
 
    Set rngHor = Application.InputBox("Enter Data range", Type:=8)
    Set rngVer = Application.InputBox("Enter Vertical range", Type:=8)
    Set rngOut = Application.InputBox("Enter Output range", Type:=8)
 
    For Each cell In rngVer
        DoEvents
        rngOut(counter + 1, 1).Resize(rngHor.Columns.Count, 1).Value2 = cell
        rngOut(counter + 1, 2).Resize(rngHor.Columns.Count, 1).Value2 = WorksheetFunction.Transpose(rngHor.Rows(lngRow + 1))
        lngRow = lngRow + 1
        counter = counter + rngHor.Columns.Count
    Next
    
    Const lCol As Long = 2 'Номер слобца,где ищем пустые ячейки
    Const lFirstRow As Long = 1 'Номер строки с которой начинаем отчёт
    Dim li As Long, lLastRow As Long, lCalc As Long
        With Application
        'Для ускорения выполнения Отключаем обновление экрна и пересчет формул
        .ScreenUpdating = 0: lCalc = .Calculation: .Calculation = xlManual 'идем циклом по всем ячейкам столбца lCol
            For li = ActiveSheet.UsedRange.Row + ActiveSheet.UsedRange.Rows.Count - 1 To lFirstRow Step -1
                 'Если ячейка пустая - удаляем строку.
                 If Cells(li, lCol) = "" Then Rows(li).Delete
            Next li
    'возвращаем обновление экрна и пересчет формул
     .ScreenUpdating = 1: .Calculation = lCalc
      End With
End Sub
макрос, который быстро работает на больших массивах(преобразует строку в столбец, мне нужен обратный)
Спасибо большое!!!
Страницы: 1
Наверх