Una famiglia di software per fogli di calcolo Microsoft con strumenti per l'analisi, la creazione di grafici e la comunicazione dei dati.
Buongiorno a tutti!
vi scrivo perché avrei bisogno del vostro aiuto..
non ho conoscenze di VB, ma così a logica non penso di chiedervi nessuna macro impossibile!
ho due file excel enormi.
il primo è un'estrazione da database e il secondo invece è un foglio utilizzato per analisi. il foglio di analisi non ha tutte le colonne dell'estrazione del database. il foglio di analisi è per la maggior parte tabella vuota (intestazione a parte); la maggior parte delle colonne sono vuote (da riempire appunto con i dati dell'estrazione) e alcune colonne invece hanno delle formule semplici che rimandano alle altre colonne (quelle che riempirà la macro)
la macro di cui avrei bisogno farà:
check della prima riga dei 2 file e ricopiare il contenuto della colonna del database nel file di analisi.
provo a fare un esempio:
se la cella A3 (estrazione db) coincide con la cella A1 del foglio analisi, la macro copierà tutta la colonna (intestazione a parte se possibile) nel foglio di analisi.
vorrei evitare di farlo a mano dato che i file hanno parecchie colonne e l'operazione è da ripetere una volta al mese circa...
vi ringrazio anticipatamente!
ciao
Davide
Ciao Davide,
prova così, però modifica prima i nomi dei fogli e la cartella dove si trova il db.
Il codice va incollato in un modulo normale della cartella che contiene il foglio analisi.
Ciao,
Andrea.
Sub CopiaColonneTraFoglio()
Dim wbSource As Excel.Workbook
Dim wbTarget As Excel.Workbook
Dim shSource As Excel.Worksheet
Dim shTarget As Excel.Worksheet
Dim rHeaderDB As Range, rHeaderAN As Range, rCellDB As Range, rCellAN As Range
Dim sFileDB As String, sFoglioDB As String, sFoglioANALISI As String
Application.ScreenUpdating = False
'---------- modifica secondo le tue esigenze
sFileDB = "C:\Documents and Settings\Andrea.STUDIO\Desktop\DB.xlsx"
sFoglioDB = "Foglio1"
sFoglioANALISI = "Foglio2"
Set wbTarget = ActiveWorkbook
Set shTarget = wbTarget.Sheets(sFoglioANALISI)
With shTarget
Set rHeaderAN = Range(.Cells(1, 1), .Cells(1, .Columns.Count).End(xlToLeft))
End With
Set wbSource = Workbooks.Open(sFileDB)
Set shSource = wbSource.Sheets(sFoglioDB)
With shSource
Set rHeaderDB = Range(.Cells(1, 1), .Cells(1, .Columns.Count).End(xlToLeft))
End With
For Each rCellDB In rHeaderDB
For Each rCellAN In rHeaderAN
If ((Trim(rCellDB.Value) = Trim(rCellAN.Value))) Then
shSource.Columns(rCellDB.Column).Copy shTarget.Columns(rCellAN.Column)
End If
Next
Next
wbSource.Close False
End Sub