Este código fará o truque:
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
Ele lê os dados de Folha1 e grava os resultados em Folha2 , assumindo que os dados originais estão nas colunas A, B and C
.
Ele pára quando há mais de 10 células vazias na coluna C
.