Перетворити кілька рядків в один рядок для одного матеріалу


0

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

Приклад подано нижче, оскільки я не в змозі вкласти зображення:

Існуючі дані

Material1 Mfgr1 MPN11    
          Mfgr2 MPN12

Material2 Mfgr2 MPN21    
          Mfgr3 MPN22    
          Mfgr4 MPN23

Необхідні дані

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

Ласкаво просимо до Супер Користувача. На жаль, ми не є сервісом написання коду. Замість того, щоб просто просити код для виконання певного завдання, покажіть нам, що ви намагалися до цього часу (включаючи будь-який код, який у вас зараз є) і де ви застрягли, щоб ми могли допомогти вам у вирішенні вашої конкретної проблеми. Питання, які запитують лише код, занадто широкі і, ймовірно, можуть бути зупинені або закриті .
DavidPostill

Чи записи вже упорядковані (матеріали, виробники та номери деталей у порядку, який ви хочете, всі згруповані в суміжні записи), чи завдання включає в себе пошук відповідних записів для консолідації даних? Чи кожне поле наразі знаходиться в окремому стовпчику чи все в одній комірці на рядок? Чи вказаний матеріал лише один раз, як показано, чи включений до кожного запису? Ви хочете, щоб результат мав кожне поле в окремому стовпчику або все в одній комірці на рядок, або кожен mfgr & MPN в одній клітині? Які приблизні кількості (загальна кількість записів, матеріалів, максимум MPN на матеріал)?
fixer1234

@David, я зараз це роблю вручну, і мені не дуже добре писати макроси.
Раві

@ Fixer1234, так, усі записи прослідковуються як Матеріал, Виробники, MPN з великою кількістю інших полів, між якими я можу видалити. Якщо Матеріал однаковий для перших 3 рядків, то Код матеріалу з’явиться лише один раз (у першому записі). Також кожне поле знаходиться в окремому стовпці, і результат також повинен бути в окремому стовпці. Загальна кількість записів може працювати в тисячу рядків з макс. MPN / матеріал як 5-6
Раві

Відповіді:


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.

Він зупиняється, коли в колонці більше 10 порожніх комірок C.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.