sono nuovamente a richiedere vs supporto in relazione allo sviluppo di una macro che mi permetta di copiare una selezione di celle da un foglio ad un altro. Cerco di spiegare in breve il risultato che vorrei ottenere:
Foglio2: è il foglio di destinazione nel quale voglio che vengano copiati alcuni dati. In questo foglio sono presenti una lista di nomi, i quali sono sempre nella stessa posizione (F4:F15; F18:F26; F29:F43) .
Foglio1: è la fonte dei dati da copiare e proviene da un report esterno. In questo foglio ho un elenco di voci, tra queste compaiono quelle presenti anche nel foglio2. In corrispondenza di queste voci vi sono dei valori (nelle 2 colonne successive) che dovrò riportare in corrispondenza degli stessi elementi presenti nel foglio2 (nella posizione G4:H15; G18:H26; G29:H43) . Il problema principale è quello di individuare la stessa lista di voci dal foglio1 (in linea con quelle presenti nel foglio2) in quanto nel report che ottengo non sono sempre nello stessa posizione. Indico di seguito la macro di partenza, la quale però non è in grado di riconoscere la posizione della sequenza di voci nel Foglio1.
- Codice: Seleziona tutto
Sub Macro1()
Dim Matrix
Dim Righe1, Righe2, Righe3
Dim Colonne
'cancella i dati precedenti
Foglio2.Range("b4:d15,b18:d26,b29:d43").ClearContents
'assegna un range alla matrice
Matrix = Foglio1.Range("c10:g55")
'indica alla matrice le righe interessate
Righe1 = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
Righe2 = Array(16, 17, 18, 19, 20, 21, 22, 23, 24)
Righe3 = Array(32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46)
'indica alla matrice le colonne interessate
Colonne = Array(Foglio1.Range("f4").Value, Foglio1.Range("f5").Value, Foglio1.Range("f6").Value)
'Colonne = Array(Foglio1.Range("f4"), Foglio1.Range("f5"), Foglio1.Range("f6"))
'copia i range interessati sul foglio2
With Application
Foglio2.Range("b4:d15") = .Index(Matrix, .Transpose(Righe1), Colonne)
Foglio2.Range("b18:d26") = .Index(Matrix, .Transpose(Righe2), Colonne)
Foglio2.Range("b29:d43") = .Index(Matrix, .Transpose(Righe3), Colonne)
End With
End Sub
Volevo mettervi copia del file excel ma non riesco ad allegarla.