Domanda

Ho un elenco di prodotti con l'ID e il nome dell'immagine.Una voce per immagine, anziché una voce per prodotto e le immagini in colonne come ne ho bisogno.Se il file aveva solo poche voci, la procedura manuale immagino che sarebbe tagliare tutti i nomi delle immagini per lo stesso prodotto, incollare (trasporre) e rimuovere le voci senza nomi.Ma dal momento che il file ha oltre 100.000 voci, qualcuno sa come farlo usando VBA?

Esempio: Cosa ho ...

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

Cosa ho bisogno ...

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

Grazie mille in anticipo per il tuo aiuto.

È stato utile?

Soluzione

Immagino che questo risolva il tuo problema

    .
  • Confronta due righe consecutive una per una
  • Se le due righe corrispondono, prendi il valore corrispondente nella 2a colonna della 2a riga, inserire il valore in successiva alla 2a colonna della 1a riga ed elimina la 2a riga
  • Se non corrisponde a saltare il passaggio precedente e vai per il confronto delle prossime due righe.

Ecco il codice

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
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top