Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Преобразовать таблицу. Перенести атрибуты из строк в столцы
 
Здравствуйте всем.

Очередная проба пера и непонимание как правильно. Прошу помощи с решением.
На входе файл вот такого формата

А на выходе видоизмененные данные

Пните как правильно это реализовать? Колонку откуда это начинается мы указываем в макросе ( в данном случае колонка D)
Изменено: Антон - 26 мар 2020 14:37:35
 
Откуда угнали велосипеды? Их нет в первой таблице.
 
Вы полагаете, что потенциальные помощники должны срисовать с форума таблицу к себе на лист?  
 
Цитата
Юрий М написал:
что потенциальные помощники должны срисовать с форума таблицу к себе на лист
Я исправился, сразу почти добавив файл) Но вы опередили меня)
Цитата
vikttur написал:
Откуда угнали велосипеды?
В любой из колонок X1,X2,X3 )  
 
Цитата
Антон написал:
вы опередили меня
Я же шустрый кот )
 
Вся таблица из 4 строк ?
 
Цитата
Андрей_26 написал:
Вся таблица из 4 строк ?
Ну нет конечно.
Просто привел логику, сама таблица 30000 строк и на 70-100 колонок
 

т.е. по факту мы раздвигаем каждую характеристику и вписываем категорию из соответствующей строки и название из шапки
а в шапке прописывается Attr. Group 1|Attribute 1|Attribute value 1
Изменено: Антон - 26 мар 2020 13:03:21
 
растяните формулу из D9
Лень двигатель прогресса, доказано!!!
 
Так наоборот нужно(
Из меньшей таблицы сделать большую.
 
:)  ща прочитал тему сначала понял что не то однозначно макрос
Лень двигатель прогресса, доказано!!!
 
Подожду еще, условия все время меняются.
В первом сообщении было совсем другое.
Вопросы:
  1. Всегда второй столбец должен переезжать в Attr. Group 1, Attr. Group 2 и так далее?
  2. Первых столбцов всегда 3?
F1 творит чудеса
 
Цитата
Максим Зеленский написал:
В первом сообщении было совсем другое.
Согласен, вчера было не совсем правильно расписано. Перечитал, понял что непонятно.
Цитата
Максим Зеленский написал:
Всегда второй столбец должен переезжать в Attr. Group 1, Attr. Group 2 и так далее?
Да, но лучше его просто задать переменной.
Цитата
Максим Зеленский написал:
Первых столбцов всегда 3?
Нет, значение динамическое. (проще всего задавать переменной)  
 
Написал вот такой код, все работает, Хотя 100% неоптимальный.
Код
Sub Add_atribute()
    'определяем начало характеристик
    Dim start As Integer
    start = 12
    'определяем последнюю заполненную колонку справа
    Dim lLastCol As Long
    lLastCol = Cells(1, Columns.Count).End(xlToLeft).Column
    'определяем последнюю заполненную строку
    Dim lLastRow As Long
    lLastRow = Cells(Rows.Count, start).End(xlUp).Row
    'вычисляем размерность массива
    Dim w As Integer
    w = lLastCol - start
    Dim b As Variant
    ReDim b(1 To lLastRow, 1 To w * 3)
    'ReDim b(1 To 5, 1 To 6)
    Dim a As Variant
    Dim y As Integer
    'a = Range(Cells(1, 12), Cells(5, 14))
    a = Range(Cells(1, 12), Cells(lLastRow, lLastCol))
    Count = UBound(a, 2) - LBound(a, 2) + 1
    For x = 2 To UBound(b)
    zz = 0
    ii = 0
    p = 1
        For y = 2 To Count
                'записываем шапку
                ii = ii + 1
                b(1, ii) = "Attr. Group " & p
                ii = ii + 1
                b(1, ii) = "Attribute " & p
                ii = ii + 1
                b(1, ii) = "Attribute value " & p
    
                ' записываем категорию
                zz = zz + 1
                b(x, zz) = a(x, 1)
                ' записываем Год
                zz = zz + 1
                b(x, zz) = a(1, y)
                ' записываем value
                zz = zz + 1
                b(x, zz) = a(x, y)
            p = p + 1
        Next y
    Next x
    Sheets("OUT").Cells(1, 1).Resize(UBound(b), UBound(b, 2)) = b
End Sub
Страницы: 1
Читают тему (гостей: 1)
Наверх