Свойства в один столбец - VBA

Формулировка задачи:

Добрый день! Имеется excel файл напечатанного ниже формата:Строка "1" - Заголовки информации о товаре; Начиная со строки "2", построчно идут разные товары;Столбцы от "A" до "С" - uid, наименование, категория - товара; // эти значения должны остаться не тронутыми; Начиная от столбца "D" - идут свойства товара, в каждом новом столбце, новое свойство; - Для разных товаров могут быть заполнены значения свойства товара либо значения свойства товара будут отсутствовать. Напишите пожалуйста макрос который создаст новую страницу "Необходимый результат", на эту страницу скопирует скопирует Столбцы от "A" до "С" и рядом в столбце "D" создаст столбец "для всех свойств" - то бишь это необходимо для того чтобы рядом с товаров все свойства товара и его значения размещались в одной ячейке столбца "D" и название + значения свойства разделялись символом двоеточие ":", а сами свойства разделялись точкой с запятой ";". Пример файла исходник прикладываю в файле во вложении. В оригинале строк тысячи, а столбцов сотни (редактировать придётся часто).

Код к задаче: «Свойства в один столбец - VBA»

textual
Sub pr()
    Dim i&, j&
    a = Cells(1, 1).CurrentRegion.Value
    For i = 2 To UBound(a)
        For j = 4 To 6
            If Not IsEmpty(a(i, j)) Then a(i, j) = a(1, j) & ":" & a(i, j)
            If j > 4 Then a(i, 4) = a(i, 4) & IIf(IsEmpty(a(i, 4)) Or IsEmpty(a(i, j)), "", ";") & IIf(IsEmpty(a(i, j)), "", a(i, j))
        Next
    Next
    a(1, 4) = "Свойства"
    Sheets.Add
    Cells(1, 1).Resize(UBound(a), 4) = a
End Sub

11   голосов, оценка 3.909 из 5


СОХРАНИТЬ ССЫЛКУ