Condividi tramite

copiare una colonna se l'intestazione coincide

Anonimo
2013-05-30T13:53:05+00:00

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

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2013-05-30T14:49:45+00:00

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


La risposta è stata utile?

1 persona ha trovato utile questa risposta.
0 commenti Nessun commento

0 risposte aggiuntive

Ordina per: Più utili