Pagina precedente | 1 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

Traferire dati da un foglio ad altri, nella stessa cartella di lavoro; in base a diversi criteri

Ultimo Aggiornamento: 04/11/2023 06:53
Post: 137
Registrato il: 24/07/2013
Città: SALERNO
Età: 52
Utente Junior
Excel LTSC 2021
OFFLINE
03/11/2023 22:15

Buonasera a tutti
La mia esigenza è di trasferire mediante VBA dei dati da un foglio di lavoro ad altri presenti nella stessa cartella di lavoro, in base a diversi criteri.
Non è facile da spiegare, ma cercherò di farlo con la massima chiarezza e precisione possibile, anche se ciò comporta il doversi dilungare.
Allego anche un file in cui nel foglio 'BASE' sono elencati i dati da trasferire e, negli altri fogli, i dati come vorrei venissero trasferiti!

Ringrazio anticipatamente chi avrà la pazienza di soffermarsi fino alla fine e darmi un riscontro.

PREMESSA:

Ho una cartella di lavoro - 'Cartel1' - con circa 70 di fogli di lavoro:
il primo foglio di lavoro è denominato: 'BASE' (con i dati da trasferire)
i restanti fogli di lavoro - tutti vuoti - sono denominati con nome di persona:
'Antonio'
'Francesca'
'Giuseppe'
'Paolo'
ecc.

Il Foglio 'BASE' consta di più di cinquemila righe (che, per chiarezza espositiva, sono state ridotte a 25 nel file di esempio in allegato) e ha una serie di dati in colonna.
Precisamente: in
colonna 'B' i nomi dei clienti (ognuno con un foglio di lavoro parimenti denominato)
colonna 'C' la categoria di appartenenza del prodotto
colonna 'D' la marca del prodotto
colonna 'E' il modello del prodotto
colonna 'F' la tipologia del documento (TRE tipologie: 'FA', 'F', 'DDT')
colonna 'G' il numero del documento
colonna 'H' la data del documento

I restanti fogli di lavoro sono VUOTI!

ESIGENZA:

Trasferire SELETTIVAMENTE i dati presenti nel foglio 'BASE' negli altri fogli di lavoro a seconda del nome del cliente presente in colonna 'B'...

(ES. n°1: Tutti i dati nel foglio 'BASE', relativi al nome 'Antonio' - presente in colonna 'B' - vengono trasferiti nel foglio di lavoro denominato 'Antonio'
Tutti i dati nel foglio 'BASE', relativi al nome 'Paolo' - presente in colonna 'B' - vengono trasferiti nel foglio di lavoro denominato 'Paolo')

...e a seconda di una delle tre sigle presenti in colonna 'F' e cioè : "FA" - "F" - "DDT" che ho colorato nel file di esempio con diverse tonalità solo per rendere più immediate le distinzioni.

(ES. n°2A: Tutti i dati, nel Foglio! 'BASE' e nell'intervallo 'B5:H5000'
- in cui 'B:B' ="Antonio" e 'F:F'="FA" -
vanno copiati e incollati (incolla valori) nel Foglio! 'Antonio' - intervallo 'B5:H5000')

(ES. n°2B: Tutti i dati, nel Foglio! 'BASE', nell'intervallo 'B5:F5000' (in questo caso è 'F' l'ultima colonna)
- in cui 'B:B' ="Antonio" e 'F:F'="DDT" -
vanno copiati e incollati (incolla valori) nel Foglio! 'Antonio' - intervallo 'K5:O5000')

(ES. n°2C: Tutti i dati, nel Foglio! 'BASE', nell'intervallo 'B5:H5000'
- in cui 'B:B' ="Antonio" e 'F:F'="F" -
NON vanno presi in considerazione!!!)

Grazie
[Modificato da Anthony D'Acunto 04/11/2023 04:57]
Windows 10 - Excel LTSC
Post: 3.122
Registrato il: 10/10/2013
Città: VICENZA
Età: 69
Utente Master
365
OFFLINE
04/11/2023 00:20

Ciao
con le formule

in C1
=STRINGA.ESTRAI(CELLA("nomefile");TROVA("]";CELLA("nomefile");1)+1;30)

in D1
FA
In B5 da tirare a destra fino alla colonna H e in basso
=SE.ERRORE(INDICE(BASE!B$5:B$6000;AGGREGA(15;6;RIF.RIGA($1:$6000)/(BASE!$B$5:$B$6000=$C$1)/(BASE!$F$5:$F$6000=$D$1);RIF.RIGA($A1)));"")

per le altre sigle adegua la cella in rosso
Post: 137
Registrato il: 24/07/2013
Città: SALERNO
Età: 52
Utente Junior
Excel LTSC 2021
OFFLINE
04/11/2023 06:53

Re:
RISOLTO!!!!

federico460, grazie per il tuo tempo ed impegno volti ad una soluzione ECCELLENTE!

Infatti, non solo la tua soluzione riproduce esattamente i risultati da me desiderati ma - di più - permette di ridurre i Fogli di lavoro da 70 a 2:
Il foglio 'BASE' e il Foglio 'Cliente' (Generico), nel quale mi basta inserire manualmente in 'C1' il nome del cliente - in base alla mia esigenza del momento - per visualizzare immediatamente tutti i suoi dati in base alle selezioni predefinite.

Grazie mille per avermi aiutato a ridurre al minimo possibile il tempo da dedicare a questa operazione del mio lavoro
Un abbraccio


federico460, 04/11/2023 00:20:

Ciao
con le formule

in C1
=STRINGA.ESTRAI(CELLA("nomefile");TROVA("]";CELLA("nomefile");1)+1;30)

in D1
FA
In B5 da tirare a destra fino alla colonna H e in basso
=SE.ERRORE(INDICE(BASE!B$5:B$6000;AGGREGA(15;6;RIF.RIGA($1:$6000)/(BASE!$B$5:$B$6000=$C$1)/(BASE!$F$5:$F$6000=$D$1);RIF.RIGA($A1)));"")

per le altre sigle adegua la cella in rosso




Windows 10 - Excel LTSC
Vota: 15MediaObject5,005315MediaObject5,0023 2
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Cerca nel forum
Tag discussione
Discussioni Simili   [vedi tutte]
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 09:19. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com