gipe72
00lunedì 20 febbraio 2017 20:44
Salve, chiedo scusa per il doppio post, ma ho sbagliato a cliccare.
Comunque inserisco ora il file: nei fogli 1 e 2 sono presenti anche altri dati in altre colonne ma sono irrilevanti rispetto allo scopo di estrapolare i dati duplicati nel foglio 3.
Ciò che desidero è avere nel foglio 3 soltanto i dati doppi delle colonne A dei fogli 1 e 2 ma che mi ricopi anche le giacenze sia del foglio 1 che del foglio 2 dei doppioni.
Nel foglio 3 ho inserito il risultato che vorrei ottenere (non completo, ho riportato soltanto i primi 3 codici doppi).
Spero che qualcuno possa aiutarmi e mi suggerisca una formula (non una macro se possibile) e che me la spieghi passo passo per favore.
Grazie
tanimon
00lunedì 20 febbraio 2017 22:10
ciao
prova in B2 del foglio 3:
=CERCA.VERT(Foglio1!A2;Foglio1!A2:B10;2;FALSO)
poi la adatti per una colonna a destra
e dopo, la trascini in basso per entrambe le colonne B e C
Frank
gipe72
00martedì 21 febbraio 2017 01:13
Ciò che desidero è avere nel foglio 3 soltanto i dati doppi delle colonne A (i codici dei prodotti), che quindi me li riporti in tabella e che mi ricopi anche le loro giacenze dei 2 periodi, come si vede nel foglio 3 che ho preparato (il risultato della presunta funzione).
gipe72
00martedì 21 febbraio 2017 16:35
Qualcuno può aiutarmi?
by sal
00martedì 21 febbraio 2017 17:04
Doppioni
Ciao Giuseppe eccoti la macro che ti trova i doppioni
Sub doppi()
Dim rng1, rng2
Dim r, d1, d2, x, y
Sheets("Foglio3").Select
Application.ScreenUpdating = False
Sheets("Foglio1").Select
r = Cells(Rows.Count, 1).End(xlUp).Row
rng1 = Range("A2:B" & r)
Sheets("Foglio2").Select
r = Cells(Rows.Count, 1).End(xlUp).Row
rng2 = Range("A2:B" & r)
Sheets("Foglio3").Select
r = Cells(Rows.Count, 1).End(xlUp).Row
Range("A2:C" & r).ClearContents
r = 2
For x = 1 To UBound(rng1)
d1 = rng1(x, 1)
For y = 1 To UBound(rng2)
d2 = rng2(y, 1)
If d1 = d2 Then
Cells(r, 1) = d1
Cells(r, 2) = rng1(x, 2)
Cells(r, 3) = rng2(x, 2)
r = r + 1
End If
Next y
Next x
End Sub
ti allego anche il tuo esempio, per far partire la macro premi control+p, altrimenti bisogna creare un pulsante per lanciarla.
Ciao By Sal
DANILOFIORINI
00martedì 21 febbraio 2017 17:47
Buonasera
Foglio3 A2 da trascinare in basso
=SE.ERRORE(INDICE(Foglio1!$A$1:$A$100;PICCOLO(SE(CONTA.SE(Foglio2!$A$1:$A$100;Foglio1!$A$1:$A$100)>0;RIF.RIGA($A$1:$A$100));RIGHE($A$1:A1)));"")
DA CONFERMARE CON CTRL+SHIFT+INVIO
in B2 da trascinare in basso
=SE.ERRORE(CERCA.VERT(A2;Foglio1!$A$2:$B$10;2;0);"")
in C2 da trascinare in basso
=SE.ERRORE(CERCA.VERT(A2;Foglio2!$A$2:$B$10;2;0);"")
gipe72
00martedì 21 febbraio 2017 20:48
Re:
DANILOFIORINI, 21/02/2017 17.47:
Buonasera
Foglio3 A2 da trascinare in basso
=SE.ERRORE(INDICE(Foglio1!$A$1:$A$100;PICCOLO(SE(CONTA.SE(Foglio2!$A$1:$A$100;Foglio1!$A$1:$A$100)>0;RIF.RIGA($A$1:$A$100));RIGHE($A$1:A1)));"")
DA CONFERMARE CON CTRL+SHIFT+INVIO
in B2 da trascinare in basso
=SE.ERRORE(CERCA.VERT(A2;Foglio1!$A$2:$B$10;2;0);"")
in C2 da trascinare in basso
=SE.ERRORE(CERCA.VERT(A2;Foglio2!$A$2:$B$10;2;0);"")
Ciao Danilo, grazie per il tuo intervento.
Allora la prima formula (quella da inserire in A2) non mi funziona (ho excel 2013), confermandola con ctrl+shift+invio nella cella vedo la formula intera non il risultato. Ho aperto il tuo file e ho visto che prima dell'= hai inserito la parentesi graffa (o forse viene fuori in automatico quando la confermi alla fine?) mentre nel post qui sul forum non c'è.
La formula in B2 e quella in C2 invece funzionano bene, avrei però una domanda da porti: per cosa sta quel 2 quasi alla fine della formula? So che lo 0 sta per "risultato esatto" ma non capisco il 2
gipe72
00martedì 21 febbraio 2017 20:51
Re: Doppioni
by sal, 21/02/2017 17.04:
Ciao Giuseppe eccoti la macro che ti trova i doppioni
Sub doppi()
Dim rng1, rng2
Dim r, d1, d2, x, y
Sheets("Foglio3").Select
Application.ScreenUpdating = False
Sheets("Foglio1").Select
r = Cells(Rows.Count, 1).End(xlUp).Row
rng1 = Range("A2:B" & r)
Sheets("Foglio2").Select
r = Cells(Rows.Count, 1).End(xlUp).Row
rng2 = Range("A2:B" & r)
Sheets("Foglio3").Select
r = Cells(Rows.Count, 1).End(xlUp).Row
Range("A2:C" & r).ClearContents
r = 2
For x = 1 To UBound(rng1)
d1 = rng1(x, 1)
For y = 1 To UBound(rng2)
d2 = rng2(y, 1)
If d1 = d2 Then
Cells(r, 1) = d1
Cells(r, 2) = rng1(x, 2)
Cells(r, 3) = rng2(x, 2)
r = r + 1
End If
Next y
Next x
End Sub
ti allego anche il tuo esempio, per far partire la macro premi control+p, altrimenti bisogna creare un pulsante per lanciarla.
Ciao By Sal
Ciao Sal, grazie per la tua risposta ma preferirei evitare di usare macro (se possibile)
DANILOFIORINI
00martedì 21 febbraio 2017 21:37
Ciao
La formula funziona correttamente quando l hai copiata e incollata ti metti sulla barra della formula e la confermi con CTRL+SHIFT+INVIO appariranno le parentesi graffe che confermano che la formula è matriciale una volta attivata la trascini in basso
Per quanto riguarda la seconda domanda il due nella formula del cercaverticale rappresenta la colonna dove andiamo a cercare il dato la matrice è A2:B10 la colonna B è la seconda colonna del range lo zero è pa ricerca esatta del dato
gipe72
00mercoledì 22 febbraio 2017 01:18
Danilo è quello che ho fatto (mettermi nella barra della formula e copia-incolla, poi ho confermato tenendo premuto ctrl+shift e premendo invio) ma al posto del risultato, nella cella vedo la formula intera. Non so che altro dirti, non è che con excel 2013 si conferma questa formula matriciale in un altro modo?
DANILOFIORINI
00mercoledì 22 febbraio 2017 09:02
Ciao
Controlla se hai lasciato uno spazio in fondo alla formula altrimenti riscrivila direttamente nella cella A2 del foglio3
gipe72
00mercoledì 22 febbraio 2017 19:21
Ho inserito la formula nella cella A1 e funziona, grazie Danilo per le formule e la pazienza.
Come mai non funziona nella cella A2 secondo te?
DANILOFIORINI
00mercoledì 22 febbraio 2017 19:53
Ciao
non so che dirti posta il file dove riscontri l'errore e vediamo