Pregunta

Tengo una lista de productos con la identificación y el nombre de la imagen.Una entrada por imagen, en lugar de una entrada por producto y las imágenes en columnas, ya que la necesito.Si el archivo tenía solo unas pocas entradas, el procedimiento manual supongo que sería reducir todos los nombres de la imagen para el mismo producto, pegar (transponer) y eliminar las entradas sin nombres.Pero, dado que el archivo tiene más de 100,000 entradas, ¿alguien sabe cómo hacerlo usando VBA?

Ejemplo: Lo que tengo ...

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

lo que necesito ...

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

Agradecemos mucho por adelantado por su ayuda.

¿Fue útil?

Solución

Supongo que esto resuelve su problema

  • comparar dos filas consecutivas una por una
  • Si dos filas coinciden, tome el valor correspondiente en la segunda columna de la segunda fila, coloque el valor en la segunda columna de la 1ª fila y elimine la segunda fila
  • Si no coincide con el paso anterior y vaya a la comparación de las siguientes dos filas.

Aquí está el 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 bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top