У меня есть несколько строк для каждого материала (количество строк будет различаться) с различными значениями для номеров производителей и производителей. Мне нужно преобразовать это в одну строку для каждого материала со всеми номерами производителей и изготовителей в одном ряду.

Пример приведен ниже, так как я не могу прикрепить изображения:

Существующие данные

Material1 Mfgr1 MPN11    
          Mfgr2 MPN12

Material2 Mfgr2 MPN21    
          Mfgr3 MPN22    
          Mfgr4 MPN23

Необходимые данные

Material1 Mfgr1 MPN11 Mfgr2 MPN12    
Material2 Mfgr2 MPN21 Mfgr3 MPN22 Mfgr4 MPN23

1 ответ1

0

Этот код сделает свое дело:

Sub materialsinglerow()
Dim wkb As Workbook
Dim wks, wks1 As Worksheet
Set wkb = ThisWorkbook
Set wks = wkb.Sheets(1)
Set wks1 = wkb.Sheets(2)
continue = True
i = 1
j = 0
k = 2
emptycount = 0
lastmaterial = ""
While continue = True
    material = wks.Cells(i, 1)
    mfgr = wks.Cells(i, 2)
    mpn = wks.Cells(i, 3)
    If material <> "" Then
        j = j + 1
        k = 2
        wks1.Cells(j, 1) = material
        lastmaterial = material
    End If
    If mfgr <> "" Then
        wks1.Cells(j, k) = mfgr
        k = k + 1
        wks1.Cells(j, k) = mpn
        k = k + 1
    Else
        emptycount = emptycount + 1
    End If
    If emptycount > 10 Then
        continue = False
    End If
    i = i + 1
Wend

Он считывает данные из Sheet1 и записывает результаты в Sheet2, предполагая, что исходные данные находятся в столбцах A, B and C

Он останавливается, когда в столбце C больше 10 пустых ячеек.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .