макрос для изменения порядка данных

#vba #excel

#vba #excel

Вопрос:

Я пытался написать макрос для изменения порядка ячеек в строках и столбцах таблиц Stock для получения желаемого результата. К счастью, исходные таблицы, как правило, одинаковы каждый раз (разные имена и значения), и желаемый результат — один и тот же формат..

Вот несколько примеров данных.

       A                        
  

1 Имя
2 описание
3 описание
4 описание
5 описание
6 Идентификатор #: 56284
7 Количество на складе: 34
8 Увеличьте масштаб и настройте

       B
  

1 Имя
2 описание
3 описание
4 описание
5 описание
6 Идентификатор #: 56284
7 Количество на складе: 50
8 Увеличьте масштаб и настройте

И я хотел бы, чтобы выходные данные отображались примерно так (если возможно, на лист2, начинающийся с ячейки B2):

 B    C    E
  

B — строка 1
C — это объединенные строки 2, 3, 4 и 5
E — это ПРОСТО значение запаса в строке 7, т. Е. 50

В одной электронной таблице было бы 4 столбца и 8 строк, которые мне пришлось бы изменить.. Итого получается 32.

Было бы здорово автоматизировать это, поэтому мы будем очень признательны за любую помощь.

Ответ №1:

Позвольте мне прояснить мое понимание. Для каждого столбца требуется следующий формат данных:

     A                                              A
1   Name                                       1   Name
2   Desc1                                      2   Desc1; Desc2; Desc3; Desc4
3   Desc2                      On sheet 2      3   50
4   Desc3                   --------------->
5   Desc4
6   Id#: 56284
7   Quantity in Stock: 50
8   Zoom in and configure
  

В этом случае вы можете использовать следующий код. Предполагается, что ваши данные находятся в A1-D8 на листе 1.

 Sub FormatData()
    Dim col As Integer

    For col = 1 To 4
        With Worksheets(2)
           .Cells(1, col) = Cells(1, col) //Get name
           .Cells(2, col) = Cells(2, col) amp; "; " amp; Cells(3, col) amp; "; " amp; Cells(4, col) amp; "; " amp; Cells(5, col) //Concatenate descriptions into single string
           .Cells(3, col) = Cells(7, col) //Get quantity in stock
        End With
    Next col
End Sub