Una famiglia di software per fogli di calcolo Microsoft con strumenti per l'analisi, la creazione di grafici e la comunicazione dei dati.
Cerco di riepilogare:
Dati iniziali del foglio1 di un file excel costituito da più fogli
Codice Descrizione DatoAnnoN DatoAnnoN-1 DatoAnnoN-2 Parametro
xxx Mele 100 200 150 1
xxy Banane 75 1
xxz Pere 125 300 1
xyx Albicocche 0
xyy Fragole 115 135 1
xyz Ciliege 65 90 1
xzx Angurie 25 1
xzy Arance 26 72 1
xzz Ananas 0
yxx Pompelmi 80 35 1
Dopo l'applicazione del filtro valore 1 nella colonna Parametro spariscono le righe Albicocche e Ananas. L'esigenza di questo foglio,condiviso con altri operatori, è mostrare tutti i prodotti con la presenza di almeno un valore nelle tre colonne C, D ed E.
Poichè i dati delle colonne Codice e DatoAnnoN vanno caricati in un altro software si propone una nuova esigenza, creare un file .csv (formato richiesto dall'applicativo esterno) per importare i dati. Questo applicativo richiede la presenza delle 2 colonne predette senza righe vuote (nell'esempio vanno eliminate le righe Fragole, Angurie e Pompelmi dopo l'applicazione del primo filtro).
Attualmente il problema viene risolto nel seguente modo:
dopo aver filtrato i dati del file excel iniziale con il valore 1 nella colonna Parametro eseguo:
1) copio i valori compresi nell'area da Codice a DatoAnnoN e li riporto in un altro file excel nel foglio1, quindi partendo dal mio esempio ho:
Codice Descrizione DatoAnnoN
xxx Mele 100
xxy Banane 75
xxz Pere 125
xyy Fragole
xyz Ciliege 65
xzx Angurie
xzy Arance 26
yxx Pompelmi
- elimino la colonna Descrizione perchè non richiesta per l'importazione dei dati; inoltre come da te individuato sopra elimino le righe senza un valore nella colonna DatoAnnoN. Questo l'ottengo con la selezione dei dati e l'applicazione del filtro automatico. Poi posiziono il cursore nella colonna DatoAnnoN e filtro tutti le celle Non Vuote. Copio i dati filtrati e applico incolla speciale, valore nel foglio2;
- elimino il foglio1 e il foglio3, e salvo il foglio2 con il formato .csv utile all'importazione dei dati.
Quello che chiedevo se esiste un modo per automatizzare i punti 1, 2 e 3 partendo dal file iniziale di excel magari cliccando un pulsante o un'icona. Non so se con macro o VBA.
Saluti.
Registrando una macro mentre fai quanto hai esposto.... ;-) Puoi poi assegnare un pulsante di scelta rapida alla tua macro, vedi il punto 5 qui: http://www.maurogsc.eu/excel/xlsdoveinserirecodice.aspx
Se invece vuoi una cosa *già fatta* ma che dovrai comunque adattare al tuo contesto:
Public Sub m()
Dim csv As Workbook
Dim sh As Worksheet
Dim lRiga As Long
Set sh = ThisWorkbook.Worksheets("Foglio1")
With sh
lRiga = .Range("A" & .Rows.Count).End(xlUp).Row
.Range("A1").AutoFilter Field:=6, Criteria1:="1"
.Range("A1").AutoFilter Field:=3, Criteria1:="<>"
.Range("A1:A" & lRiga & ",C1:C" & lRiga).SpecialCells(xlCellTypeVisible).Copy
Set csv = Workbooks.Add(xlWBATWorksheet)
csv.Worksheets(1).Range("A2").PasteSpecial
Application.DisplayAlerts = False
csv.SaveAs Filename:="C:\tuaCartella\NomeFile.csv", FileFormat:=xlCSV
csv.Close
Application.DisplayAlerts = True
.Range("A1").AutoFilter
End With
Set csv = Nothing
Set sh = Nothing
End Sub
Al link indicato prima trovio come fare per utilizzare le macro.