Una famiglia di software per fogli di calcolo Microsoft con strumenti per l'analisi, la creazione di grafici e la comunicazione dei dati.
Ciao Mauro,
ti ringrazio, hai perfettamente ragione!!
Ho dovuto comunque stravolgere tutta la macro a seguito dei dati "reali" forniti.
Di seguito la nuova macro, preceduta da una precisazione doverosa:
- la macro funziona a patto che i nomi di colonna da "R" a "AB" siano identici ai nomi corrispondenti riportati in colonna G. Un esempio per spiegarmi meglio: la cella S1 riporta "Codice operazioni con estero" mentre poi nelle righe della colonna G a volte trovo la stessa stringa, altre volte "Codice operazioni con l'estero" (quindi con l' in più). Occorre rendere corrispondenti i nomi di colonna con i corrispettivi nomi riportati in colonna G altrimenti la macro non intercetterà quella riga.
- Non ho capito per quale motivo alla riga 38 l'importo viene inserito sia in colonna X che in colonna AA (mentre per le precedenti righe no) e perchè in colonna Z venga riportato "1" anzichè "0729".
Sub CopiaDati()
Dim sh1 As Worksheet
Dim rng1 As Range 'range di celle relativo alla colonna F
Dim lRiga1 As Long 'Ultima riga della base dati
Dim c As Range 'di appoggio per ciclare nel range rng1
Dim i As Integer
Set sh1 = ThisWorkbook.Worksheets("ModelloUNI")
lRiga1 = sh1.Range("A" & sh1.Rows.Count).End(xlUp).Row
With sh1
Set rng1 = .Range("F2:F" & lRiga1)
For Each c In rng1
If c.Value= "001" Then
i = 0
c.Offset(0, 5) = c.Offset(0, -5) 'Colonna K: Codice
c.Offset(0, 6) = c.Offset(0, -4) 'Colonna L: Anno
c.Offset(0, 7) = c.Offset(0, -3) 'Colonna M: Protocollo
c.Offset(0, 8) = c.Offset(0, -2) 'Colonna N: Quadro
c.Offset(0, 9) = c.Offset(0, -1) 'Colonna O: Riga
c.Offset(0, 10) = c.Offset(0, 0) 'Colonna P: Colonna
c.Offset(0, 11) = c.Offset(0, 2) 'Colonna Q: Codice
Else
'Righe successive alla prima
i = i - 1
'Debug.Print c.Offset(0, 0).Value & " - " & c.Offset(0, 1).Value
Select Case c.Offset(0, 1).Value 'Valuta il testo della colonna + 1 della riga corrente
Case Is = "Tipo trasferimento" 'Colonna R
c.Offset(0 + i, 12) = c.Offset(0, 2)
Case Is = "Codice operazioni con l'estero" 'Colonna S + Z
c.Offset(0 + i, 13) = c.Offset(0, 2)
c.Offset(0 + i, 20) = c.Offset(0, 2)
Case Is = "Codice ABI/CAB" 'Colonna T
c.Offset(0 + i, 14) = c.Offset(0, 2)
Case Is = "Cod. id. Internazionale BIC/SWIFT" 'Colonna U
c.Offset(0 + i, 15) = c.Offset(0, 2)
Case Is = "Numero del conto corrente" 'Colonna V
c.Offset(0 + i, 16) = c.Offset(0, 2)
Case Is = "Data" 'Colonna W
c.Offset(0 + i, 17) = c.Offset(0, 2)
Case Is = "Importo" 'Colonna X + AA
c.Offset(0 + i, 18) = c.Offset(0, 2)
c.Offset(0 + i, 21) = c.Offset(0, 2)
Case Else
'Do nothing
End Select
End If
Next c
End With
Set sh1 = Nothing
Set rng1 = Nothing
Set c = Nothing
End Sub
David