Pergunta

Tenho uma lista de produtos com o ID e o nome da foto.Uma entrada por foto, em vez de uma entrada por produto e as fotos em colunas conforme necessário.Se o arquivo tivesse apenas algumas entradas, o procedimento manual acho que seria recortar todos os nomes de imagens do mesmo produto, colar (transpor) e remover as entradas sem nomes.Mas como o arquivo possui mais de 100.000 entradas, alguém sabe como fazer isso usando VBA?

EXEMPLO:O que eu tenho...

product_id;  picture_name
1;           picture1.jpg
1;           picture2.jpg
1;           picture3.jpg
2;           picture4.jpg
3;           picture5.jpg
3;           picture6.jpg

O que eu preciso...

product_id;   1st_picture;   2nd_picture;   3rd_picture...
1;            picture1.jpg;  picture2.jpg;  picture3.jpg
2;            picture4.jpg
3;            picture5.jpg;  picture6.jpg

Muito obrigado antecipadamente por sua ajuda.

Foi útil?

Solução

Acho que isso resolve seu problema

  • Compare duas linhas consecutivas, uma por uma
  • Se duas linhas corresponderem, pegue o valor correspondente na 2ª coluna da 2ª linha, coloque o valor próximo à 2ª coluna da 1ª linha e exclua a 2ª linha
  • Se não corresponder, pule a etapa anterior e vá para a comparação das próximas duas linhas.

Aqui está o código

Sub SortPics()
i = 2
Do
Flag = False
VarComp1 = Sheets("YourSheetName").Cells(i, 1).Value
VarComp2 = Sheets("YourSheetName").Cells(i + 1, 1).Value
If VarComp1 = VarComp2 And VarComp2 <> "" Then
    Set VarSec1 = Sheets("YourSheetName").Cells(i, 2)
    Set VarSec2 = Sheets("YourSheetName").Cells(i + 1, 2)
    VarSec1.Offset(0, 1 + j).Value = VarSec2.Value
    Sheets("YourSheetName").Cells(i + 1, 1).EntireRow.Delete
    i = i - 1
    Flag = True
End If
i = i + 1
If Flag = True Then
    j = j + 1
Else
    j = 0
End If 

Loop While VarComp1 <> ""

End Sub
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top