come da titolo, sto cercando di trasferire i valori contenuti in alcune righe in una sola colonna,
nel mio caso la colonna A e poi da questa riportare in colonna C i valori unici;
il range oggetto della trasposizione è del tipo come in figura:
(ho nascosto alcune righe per il ridimensionamento dell'immagine,
ma la riga iniziale è la riga 8, mentre non è nota la riga finale)
il codice che ho usato è strutturato come segue:
- Codice: Seleziona tutto
Option Base 1
Sub TRASPONI()
Dim ws1 As Worksheet, ws3 As Worksheet
Dim UC As Long, UR As Long
Dim c As Range
Dim MyArray As Variant
Set ws1 = Sheets("Foglio1")
Set ws3 = Sheets("Foglio3")
With ws3
.Cells.ClearContents
End With
With ws1
For Each c In .Range("C8", .Range("C" & Rows.Count).End(xlUp))
UC = .Cells(c.Row, Columns.Count).End(xlToLeft).Column
MyArray = .Range(.Cells(c.Row, 3), .Cells(c.Row, UC))
UR = ws3.Cells(Rows.Count, 1).End(xlUp).Row
ws3.Range("A" & UR + 1 & ":A" & UR + 5).Value = Application.Transpose(MyArray)
Erase MyArray
Next c
End With
With ws3
.Range("A2:A" & .Cells(Rows.Count, 1).End(xlUp).Row).AdvancedFilter Action:=xlFilterCopy, CopyToRange:=.Range("C2"), Unique:=True
End With
ws3.Select
End Sub
la macro funziona se considero un range senza discontinuità del tipo C8-G15;
ma se aggiungo le colonne H e J, identiche a quelle in giallo, modificando opportunamente
le istruzioni del codice interessate al cambiamento, ottengo un risultato errato in quanto in colonna A
sono riportati tutti i valori del range uno di seguito all'altro, mentre in colonna C, che contiene i valori unici
ottengo il risultato riportato in figura:
nella quale si nota la presenza del numero 5, colore rosso, già presente ad inizio colonna,
che non viene considerato valore unico
e della successiva cella vuota,colore giallo.
comprendo la presenza della cella vuota dovuta alla presenza della colonna vuota nel range di partenza,
e non so come eliminare questo risultato inopportuno, ma non comprendo la presenza del numero 5, considerato 2 volte;
tra l'altro è pure il solo numero doppione che viene inserito in colonna C nonostante ci siano altri doppioni,
colonne H e J.
come devo modificare il codice per ottenere la trasposizione delle righe e con valori unici in colonna?
ciao e grazie