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

copia dati fra fogli, confrontando 3 condizioni e tralasciando le celle vuote

Ultimo Aggiornamento: 17/06/2020 16:31
Post: 9
Registrato il: 12/04/2020
Età: 46
Utente Junior
2010
OFFLINE
29/04/2020 08:24

buongiorno, avrei bisogno di qualche suggerimento per sviluppare una formula, allego un esempio di cosa dovrei ottenere...GRAZIE

PS. la formula verrà utilizzata su un foglio di calcolo di google,lo indico nel caso in cui non tutte le funzioni di excel 2010 fossero utilizzabili
Post: 3.885
Registrato il: 03/04/2013
Utente Master
Excel 2000 - 2013
OFFLINE
29/04/2020 10:53

Buona giornata, @Corbe88;
personalmente trovo diverse criticità.

@Corbe88, scrive:
- 1

... tralasciando le celle vuote ...


- 2

PS. la formula verrà utilizzata su un foglio di calcolo di google,lo indico nel caso in cui non tutte le funzioni di excel 2010 fossero utilizzabili.


- 3

... IN C(ID CLIENTE=8080) ...



1) Quello che con Formule si riesce a fare è un Report che comprende anche le Celle Vuote; vedi immagine in allegato.

Ovviamente basterebbe eliminare le Formule che fanno riferimento alle "Celle vuote" ma ritengo sia un lavoro inutile; come puoi ben vedere dal tuo esempio le "Celle vuote" di "GENNAIO" sono diverse da quelle di "FEBBRAIO".

2) Non ho la più pallida idea se le Formule siano compatibili con un foglio di calcolo di Google

3) Non vedo come si possa eseguire questa verifica

Nell'immagine in allegato è proposta una possibile soluzione con Formule.



Giuseppe

Windows XP - Excel 2000
Windows 10 - Excel 2013
Post: 9
Registrato il: 12/04/2020
Età: 46
Utente Junior
2010
OFFLINE
29/04/2020 11:18

Buongiorno cerco d spiegarmi meglio:

celle vuote:
intendevo che la formula non tenesse conto delle celle vuote del foglio 1 presenti nell'intervallo da trasportare nel foglio 2


IN C(ID CLIENTE=8080):

la formula deve trasportare i dati solo se prima ha confrontato nel foglio1 le tre condizioni e tutte e tre sono soddifatte:

foglio1!c=xxxxx(xxxxx lo modifico io di formula formula)
foglio1!f=xxxxxx(xxxxx lo modifico io di formula formula)
foglio1!g=xxxxx(xxxxx lo modifico io di formula formula)

spero di essere stato più chiaro

per i fogli di google verificherò io


grazie!!!!!
Post: 3.886
Registrato il: 03/04/2013
Utente Master
Excel 2000 - 2013
OFFLINE
29/04/2020 12:34

Ti eri spiegato benissimo e credevo di aver chiarito quelle che ritenevo, e ritengo, delle criticità; in ogni caso cerco di essere più esaustivo.

@Corbe88, scrive:

... intendevo che la formula non tenesse conto delle celle vuote del foglio 1 presenti nell'intervallo da trasportare nel foglio 2  ...

@GiuseppeMN, pensavo di aver risposto chiaramente:

Quello che con Formule si riesce a fare è un Report che comprende anche le Celle Vuote; vedi immagine in allegato.
Ovviamente basterebbe eliminare le Formule che fanno riferimento alle "Celle vuote" ma ritengo sia un lavoro inutile; come puoi ben vedere dal tuo esempio le "Celle vuote" di "GENNAIO" non sono diverse da quelle di "FEBBRAIO"


@Corbe88, scrive:

... IN C(ID CLIENTE=8080):
la formula deve trasportare i dati solo se prima ha confrontato nel foglio1 le tre condizioni e tutte e tre sono soddifatte: ...

Allora, le Formule sono nel Foglio di lavoro "Foglio2"; dove trovo ID CLIENTE nel Foglio di lavoro "Foglio2" da verificare nel Foglio di lavoro "Foglio1" ?

Credo sarebbe opportuno dedicare una Cella nel Foglio di lavoro "Foglio2" dove indicare "ID CLIENTE"; nel caso specifico "8080"

Spero di aver meglio chiarito le mie osservazioni precedentemente espresse in Risposta #2.





Giuseppe

Windows XP - Excel 2000
Windows 10 - Excel 2013
Post: 10
Registrato il: 12/04/2020
Età: 46
Utente Junior
2010
OFFLINE
29/04/2020 12:48

Ciao Giuseppe scusami:
la formula che precedentemente usavo era questa :
=SE.ERRORE(INDICE(Foglio1!B$2:B$100;PICCOLO(SE(Foglio1!$C$2:$C$100="xxxxx";RIF.RIGA($B$2:$B$100)-1);RIF.RIGA($A1)));"")

ma al suo interno confrontava un solo dato questa volta ho bisogno che le condizioni confrontate siano 3.
Nel foglio 2 non trovi id cliente, id cliente , anno e mese sono le condizioni che la formula deve verificare nel foglio1 per poi trasportare nel foglio 2 solo FORNITORE,CATEGORIA,ACQUISTO

grazie

potresti modificarmi la formula
Post: 3.887
Registrato il: 03/04/2013
Utente Master
Excel 2000 - 2013
OFFLINE
29/04/2020 13:48


Buon pomeriggio, @Corbe88;
le Formule a cui avevo pensato sono piuttosto diverse.
Nel Foglio di lavoro "Foglio2":
In Cella "B5":
=SE.ERRORE(INDICE(DB!I$2:I$100;AGGREGA(15;6;RIF.RIGA($B$2:$B$100)-1/((DB!$F$2:$F$100=$A$4)*(DB!$G$2:$G$100=$A$5)*(DB!$C$2:$C$100=8080));RIF.RIGA(A1)));"")
Da copiare nel Range "B5:E5"

In Cella "B6":
=SE.ERRORE(INDICE(DB!M$2:M$100;AGGREGA(15;6;RIF.RIGA($B$2:$B$100)-2/((DB!$F$2:$F$100=$A$4)*(DB!$G$2:$G$100=$A$5)*(DB!$C$2:$C$100=8080));RIF.RIGA(A2)));"")
Da copiare nel Range "B6:E6"

In Cella "B7":
=SE.ERRORE(INDICE(DB!Q$2:Q$100;AGGREGA(15;6;RIF.RIGA($B$2:$B$100)-2/((DB!$F$2:$F$100=$A$4)*(DB!$G$2:$G$100=$A$5)*(DB!$C$2:$C$100=8080));RIF.RIGA(A2)));"")
Da copiare nel Range "B7:E7"

Ecc ...


Se lo ritieni necessario, assieme, possiamo completare la compilazione di tutti i Record del Report.





Giuseppe

Windows XP - Excel 2000
Windows 10 - Excel 2013
Post: 12
Registrato il: 12/04/2020
Età: 46
Utente Junior
2010
OFFLINE
29/04/2020 13:57

ti ringrazio sei stato molto gentile, purtroppo non posso utilizzare la funzione AGGREGA , non viene supportata dai fogli di google, posso sostituirla con un'altra funzione? esempio con PICCOLO(SE o CONFRONTA come ho fatto per la formula che ti ho indicato?

grazie
[Modificato da Corbe88 29/04/2020 14:42]
Post: 3.888
Registrato il: 03/04/2013
Utente Master
Excel 2000 - 2013
OFFLINE
29/04/2020 16:18

Buon pomeriggio, @Corbe88;
la Formula che hai proposto credo debba essere "MATRICIALE" e non mi sembra accetti più condizioni.

Ho provato con:
=SE.ERRORE(INDICE(DB!I$2:I$100;PICCOLO(SE(E(DB!$F$2:$F$100=$A$4;DB!$G$2:$G$100=$A$5;DB!$C$2:$C$100=8080);RIF.RIGA($B$2:$B$100)-1);RIF.RIGA(A1)));"")
Da confermare con CTRL+▲ (Maiuscolo)+Invio; funziona ma variando un parametro nel Foglio di lavoro "DB", nel tuo esempio "Foglio1", considera sempre una sola condizione.




Giuseppe

Windows XP - Excel 2000
Windows 10 - Excel 2013
Post: 720
Registrato il: 15/01/2016
Città: ROMA
Età: 51
Utente Senior
2016
OFFLINE
29/04/2020 21:27

Buonasera
intanto un saluto a Giuseppe....

@Corbe la formula che hai chiesto di riformulare te la proposi io ed era fatta per un altro tipo di imput dati ora con questa struttura estrarre i dati come chiedi è fattibile ma non semplicissimo...detto questo bisogna utilizzare 2 colonne di servizio per ogni mese la F e la G (tutte le formule visto che non supporti AGGREGA vanno attivate con CTRL+SHIFT+INVIO)...Quindi in F5 da trascinare a destra fino a G5 e poi in basso fino a riga 14

=SE.ERRORE(SE(INDICE(Foglio1!$I$2:$AB$1000;PICCOLO(SE(((Foglio1!$C$2:$C$1000=8080)*(Foglio1!$G$2:$G$1000="GENNAIO")*Foglio1!$F$2:$F$1000=2020);RIF.RIGA($A$2:$A$1000)-1);RIF.COLONNA(A$1));SCEGLI(RIF.RIGA($A1);1;5;9;13;17))=0;"";INDICE(Foglio1!$I$2:$AB$1000;PICCOLO(SE(((Foglio1!$C$2:$C$100=8080)*(Foglio1!$G$2:$G$1000="GENNAIO")*Foglio1!$F$2:$F$1000=2020);RIF.RIGA($A$2:$A$1000)-1);RIF.COLONNA(A$1));SCEGLI(RIF.RIGA($A1);1;5;9;13;17)));"")

devi ripetere la procedura in F16 cambiando GENNAIO con FEBBRAIO (l'avrei anche potuto rendere dinamico ma si complica notevolmente perchè te lo dico per il futuro le celle unite vanno evitate come le suocere la domenica a pranzo)

in B5 da trascinare in basso fino a B14

=SE.ERRORE(INDIRETTO(TESTO(RESTO(PICCOLO(SE.ERRORE(RIF.COLONNA($F$5:$G$14)*10^6+RIF.RIGA($F$5:$G$14)*1000+RIF.COLONNA($F$5:$G$14)/($F$5:$G$14<>"");10^9);RIF.RIGA(A1));10^6);"r0c000"););"")
per i mesi successivi tipo FEBBRAIO devi cambiare i vari range (f5:g14)in F16:G25 e di conseguenza quelli degli altri mesi con lo stesso criterio

infine in C5 da trascinare a destra fino a E5 e poi in basso fino a riga 14

=SE(INDICE(Foglio1!$I$2:$AB$1000;PICCOLO(SE(Foglio1!$I$2:$AB$1000=$B5;RIF.RIGA($A$2:$A$1000)-1);CONTA.SE($B$5:$B5;$B5));SOMMA(RESTO(RIF.RIGA($A1)-1;5);RESTO(RIF.COLONNA(A$1)-1;3)+2;RESTO(RIF.RIGA($A1)-1;5)*3))=0;"";INDICE(Foglio1!$I$2:$AB$1000;PICCOLO(SE(Foglio1!$I$2:$AB$1000=$B5;RIF.RIGA($A$2:$A$1000)-1);CONTA.SE($B$5:$B5;$B5));SOMMA(RESTO(RIF.RIGA($A1)-1;5);RESTO(RIF.COLONNA(A$1)-1;3)+2;RESTO(RIF.RIGA($A1)-1;5)*3)))
[Modificato da DANILOFIORINI 29/04/2020 21:30]
Post: 13
Registrato il: 12/04/2020
Età: 46
Utente Junior
2010
OFFLINE
30/04/2020 08:21

Grazie Danilo e Giuseppe per la vostra disponibilità.
Ora ci provo...e....mai più celle unite😅
BUONA GIORNATA
Post: 14
Registrato il: 12/04/2020
Età: 46
Utente Junior
2010
OFFLINE
02/05/2020 09:08

Ciao Danilo, ho cercato, da neofita, di comprendere i numeri che penso vengano usati per contare le celle nel foglio1 e ho modificato la formula come vedi in allegato(4 celle per riga e un totale di 15 righe), sul foglio 1 ho indicato in rosso i numeri che riferivano alle nuove celle da trasportare.
ho modificato in "SCEGLI" le celle:

=(SE.ERRORE(SE(INDICE(Foglio1!$I$2:$CE$1000;PICCOLO(SE(((Foglio1!$C$2:$C$1000=8080)*(Foglio1!$G$2:$G$1000="GENNAIO")*Foglio1!$F$2:$F$1000=2020);RIF.RIGA($A$2:$A$1000)-1);RIF.COLONNA(A$1));SCEGLI(RIF.RIGA($A1);1;6;11;16;21;26;31;36;41;46;51;56;61;66;71))=0;"";INDICE(Foglio1!$I$2:$CE$1000;PICCOLO(SE(((Foglio1!$C$2:$C$1000=8080)*(Foglio1!$G$2:$G$1000="GENNAIO")*Foglio1!$F$2:$F$1000=2020);RIF.RIGA($A$2:$A$1000)-1);RIF.COLONNA(A$1));SCEGLI(RIF.RIGA($A1);1;6;11;16;21;26;31;36;41;46;51;56;61;66;71)));""))


nella formula per successiva:

e il *3 con*4 (pensando fossero le colonne)

e il 5 con 15 (pensando fossero le righe)


=SE(INDICE(Foglio1!$I$2:$CE$1000;PICCOLO(SE(Foglio1!$I$2:$CE$1000=$B53;RIF.RIGA($A$2:$A$1000)-1);CONTA.SE($B$5:$B53;$B53));SOMMA(RESTO(RIF.RIGA($A1)-1;15);RESTO(RIF.COLONNA(A$1)-1;4)+2;RESTO(RIF.RIGA($A1)-1;15)*4))=0;"";INDICE(Foglio1!$I$2:$CE$1000;PICCOLO(SE(Foglio1!$I$2:$CE$1000=$B53;RIF.RIGA($A$2:$A$1000)-1);CONTA.SE($B$5:$B53;$B53));SOMMA(RESTO(RIF.RIGA($A1)-1;15);RESTO(RIF.COLONNA(A$1)-1;15)+2;RESTO(RIF.RIGA($A1)-1;15)*4)))

Se guardi nella tabella il mese di gennaio e febbraio sono ok, ma in marzo e aprile vengono scritti dei campi senza che ci sia il riferimento del fornitore(li ho evidenziati di rosso)


Hai qualche suggerimento? ......GRAZIE BUONA GIORNATA
[Modificato da Corbe88 02/05/2020 10:32]
Post: 735
Registrato il: 15/01/2016
Città: ROMA
Età: 51
Utente Senior
2016
OFFLINE
02/05/2020 12:10

Ciao
metti una condizione in più nella formula da colonna C a F

=SE.ERRORE(SE(INDICE(Foglio1!$I$2:$CE$1000;PICCOLO(SE((Foglio1!$I$2:$CE$1000=$B5)*(Foglio1!$I$2:$CE$1000<>"");RIF.RIGA($A$2:$A$1000)-1);CONTA.SE($B$5:$B5;$B5));SOMMA(RESTO(RIF.RIGA($A1)-1;15);RESTO(RIF.COLONNA(A$1)-1;15)+2;RESTO(RIF.RIGA($A1)-1;15)*4))=0;"";INDICE(Foglio1!$I$2:$CE$1000;PICCOLO(SE((Foglio1!$I$2:$CE$1000=$B5)*(Foglio1!$I$2:$CE$1000<>"");RIF.RIGA($A$2:$A$1000)-1);CONTA.SE($B$5:$B5;$B5));SOMMA(RESTO(RIF.RIGA($A1)-1;15);RESTO(RIF.COLONNA(A$1)-1;15)+2;RESTO(RIF.RIGA($A1)-1;15)*4)));"")

guarda che nelle formule che avevi modificato nel conta.se facevi partire da B5 anche gli altri mesi mentre ad esempio per febbraio deve essere

CONTA.SE($B$21:$B21;$B21)
Post: 15
Registrato il: 12/04/2020
Età: 46
Utente Junior
2010
OFFLINE
02/05/2020 12:13

ok grazie ci provo
Post: 16
Registrato il: 12/04/2020
Età: 46
Utente Junior
2010
OFFLINE
02/05/2020 16:39

Danilo per caso devo aggiungere altre formule perchè non trasporta i dati del secondo inserimento😤.
Nel mese di FEBBRAIO il secondo inserimento non non scrive le celle da C a F

GRAZIE
Post: 737
Registrato il: 15/01/2016
Città: ROMA
Età: 51
Utente Senior
2016
OFFLINE
02/05/2020 18:13

Ciao
in effetti per con due inserimenti riporta dati errati bisogna percorrere un altra strada cambiamo la formula da colonna C a F quindi

in C5 da attivare matriciale e trascinare fino a F5 e in basso fino a riga 19

=SE.ERRORE(INDICE(INDIRETTO("Foglio1!I"&PICCOLO(SE((Foglio1!$I$2:$CE$1000=$B5)*(Foglio1!$I$2:$CE$1000<>"");RIF.RIGA($A$2:$A$1000)-1);CONTA.SE($B$5:$B5;$B5))+1&":CE"&PICCOLO(SE((Foglio1!$I$2:$CE$1000=$B5)*(Foglio1!$I$2:$CE$1000<>"");RIF.RIGA($A$2:$A$1000)-1);CONTA.SE($B5:$B5;$B5))+1);CONFRONTA($B5;INDIRETTO("Foglio1!I"&PICCOLO(SE((Foglio1!$I$2:$CE$1000=$B5)*(Foglio1!$I$2:$CE$1000<>"");RIF.RIGA($A$2:$A$1000)-1);CONTA.SE($B5:$B5;$B5))+1&":CE"&PICCOLO(SE((Foglio1!$I$2:$CE$1000=$B5)*(Foglio1!$I$2:$CE$1000<>"");RIF.RIGA($A$2:$A$1000)-1);CONTA.SE($B5:$B5;$B5))+1);0)+RESTO(RIF.COLONNA(A$1)-1;4)+1);"")

Abbiamo messo come range 1000 righe già cosi con soli 2 mesi processati il file diventa lentissimo quindi riduci all'osso le righe da processare
Nel file allegato ti ho fatto GENNAIO e FEBBRAIO......
Post: 17
Registrato il: 12/04/2020
Età: 46
Utente Junior
2010
OFFLINE
17/06/2020 16:31

Ciao Danilo mi chiedevo se confrontando solo 2 parametri la formula risultasse cosi complicata e necessitasse delle colonne di appoggio

o si poteva adattare a quelle che mi avevi suggerito tu ..scrivo di seguito:

=SE.ERRORE(INDICE('foglio1'!X$2:X$100;PICCOLO(SE('Foglio1'!$C$2:$C$100=8034899;RIF.RIGA($B$2:$B$499)-1);RIF.RIGA($A1)));"")

hai qualche suggerimento?
grazie
Vota: 15MediaObject5,00616 6
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 00:25. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com