Risolto Cerca verticale con condizione multipla

Mark87

Utente abituale
Original poster
21 Aprile 2018
456
6
18
Milano
365
Visual Basic:
=ESCLUDI(REDUCE("";D3:D50000;LAMBDA(a;v;SE(CONTA.SE(D3:v;v)=1;STACK.VERT(a;LET(n;iw72_db!A2:A50000;FILTRO(n;(SCARTO(n;;3)=v)*(SCARTO(n;;5)=SCARTO(v;;1));"")));a)));1)

Grazie mille. Ho fatto delle piccole modifiche:

1) Ho inserito 50 mila perchè le righe possono essere molte, ti trovi con la modifica? Nel caso posso mettere anche 100 mila in modo che sto più tranquillo?
2) Hai messo un limite per non appensantire troppo la formula?
3) Nella tua formula c'era un .davanti D2000 che mi dava problemi. Ho tolto il punto sia sulla D che sulla A della formula e la formula è andata bene. A te non dava problemi quel punto vicino D3:.D10000
 

Terio

Excel/Vba Expert
Supermoderatore
6 Gennaio 2021
28.437
6.230
2.345
55
Arce
2016, 2019, 365
l'errore che mi esce è generico dicendo che la formula contiene un errore
Nella tua formula c'era un .davanti D2000 che mi dava problemi. Ho tolto il punto sia sulla D che sulla A della formula e la formula è andata bene. A te non dava problemi quel punto vicino D3:.D10000
Stai semplicemente usando una versione non aggiornata di Excel 365 e fai attenzione all'eccezione che ho scritto sopra,
ciao.
 

Mark87

Utente abituale
Original poster
21 Aprile 2018
456
6
18
Milano
365
semplicemente usando una versione non aggiornata di Excel 365 e fai attenzione all'eccezione che ho scritto sopra,
Ora sono preoccupato per questa eccezione. Nel senso tu nel caso hai anche una soluzione?

Comunque a me quando non trova nulla esce la riga senza nulla dentro

È un pc quindi con Excel non all ultimo grido?

Da come ho capito é un qualcosa di dinamico ma se a me non funziona non posso utilizzarlo. È un modo per allargare la tabella man mano... Giusto?

[riuniti i messaggi]​
 
Ultima modifica di un moderatore:

ipolito

Excel Expert
Expert
14 Maggio 2023
3.987
1.556
145
52
Lago di Garda sponda bresciana
365
Ultima modifica:

Terio

Excel/Vba Expert
Supermoderatore
6 Gennaio 2021
28.437
6.230
2.345
55
Arce
2016, 2019, 365
sono preoccupato per questa eccezione
Se non rientri in questo caso, non c'è bisogno di essere preoccupati:
nel caso le coppie nel primo foglio siano in numero inferiore rispetto a quelle del secondo foglio, il filtro accoda un numero di righe errate
Fai le tue prove e, se non ne hai, la soluzione di ipolito @ipolito (ciao) è ottima.
Puoi anche rendere dinamica quella che ti ha fornito Gemini usando, ad esempio, PERRIGA sull'intervallo D3:E7.

Ciao.
P.S.
La formula con AGGREGA, la puoi raffinare leggermente:
=SE.ERRORE(INDICE(iw72_db!$A$2:$A$9999;AGGREGA(15;6;RIF.RIGA($1:$9999)/((iw72_db!$D$2:$D$9999=D3)*(iw72_db!$F$2:$F$9999=E3));CONTA.PIÙ.SE($D$3:D3;D3;$E$3:E3;E3)));"Verificare P/N o S/N")
ma è solo un consiglio, non costituisce soluzione e come consigliato, la stringa in rosso la puoi eliminare se non vuoi un testo nella cella corrispondente alla coppia che non è presente.
 
  • Like
Reactions: Mark87

alfrimpa

VBA Expert
Supermoderatore
18 Dicembre 2015
78.567
8.595
2.445
72
Napoli
Office 365
Mark87 @Mark87

C’è qualche motivo per il quale le mie indicazioni al post 16 sono state ignorate e/o non prese in considerazione?
 

Mark87

Utente abituale
Original poster
21 Aprile 2018
456
6
18
Milano
365
Stiamo aspettando che tu faccia quanto richiesto.

Io per parte mia utilizzando sui due fogli una concatenazione dati ed un CONTA.SE() (in colonne di appoggio) con un banale CERCA.VERT() ho il medesimo risultato ottenuto con le formule da .avatar--xss { width: 21px; height: 21px; line-height: 21px !important; margin-right: 2px; } ipolito @ipolito @ipolito .

Alfrimpa sul primo punto ho risposto in quanto ho allegato l' Excel con la formula che non andava, quindi l' ho fatto.
Il secondo punto è stato generico. Nel senso hai descritto una possibile soluzione (magari sarà anche sicuramente come dici non lo metto in dubbio) però diciamo che era una soluzione alla larga. Era un suggerimento di alto livello per intenderci.

=SE.ERRORE(INDICE(iw72_db!$A$2:$A$9999;AGGREGA(15;6;RIF.RIGA($1:$9999)/((iw72_db!$D$2:$D$9999=D3)*(iw72_db!$F$2:$F$9999=E3));CONTA.PIÙ.SE($D$3:D3;D3;$E$3:E3;E3)));"Verificare P/N o S/N")
ma è solo un consiglio, non costituisce soluzione e come consigliato, la stringa in rosso la puoi eliminare se non vuoi un testo nella cella corrispondente alla coppia che non è presente.
Terio ho provato anche la tua formula e il risultato è quello sperato. Va benissimo anche questa formula. Grazie

[riuniti i messaggi]​
 

Terio

Excel/Vba Expert
Supermoderatore
6 Gennaio 2021
28.437
6.230
2.345
55
Arce
2016, 2019, 365
ho provato anche la tua formula
È solo quella di Gemini sistemata un po', come ho scritto non vuole essere la soluzione.
Ti ricordo che hai 30 minuti per editare ed integrare i messaggi, per cui ricordalo così eviti che lo faccia io al posto tuo,
grazie.
 
  • Like
Reactions: Mark87

alfrimpa

VBA Expert
Supermoderatore
18 Dicembre 2015
78.567
8.595
2.445
72
Napoli
Office 365
Era un suggerimento di alto livello per intenderci.
E tu ritieni che un paio di “e” commerciali quali operatori di concatenamento un CONTA.SE() ed un CERCA.VERT() siano funzioni di alto livello?

Se lo fossero state di certo non le avrei proposte essendo, come noto, assolutamente negato con le formule.

Come detto per usarle bastano solo due colonne di appoggio sui due fogli.
 

Mark87

Utente abituale
Original poster
21 Aprile 2018
456
6
18
Milano
365
=SE.ERRORE(INDICE(iw72_db!$A$2:$A$9999;AGGREGA(15;6;RIF.RIGA($1:$9999)/((iw72_db!$D$2:$D$9999=D3)*(iw72_db!$F$2:$F$9999=E3));CONTA.PIÙ.SE($D$3:D3;D3;$E$3:E3;E3)));"Verificare P/N o S/N")

Ciao Terio, qui se voglio estendere la tabella per un numero maggiore di righe al posto di mettere 9999 posso inserire anche 99999 uno zero in più vero? Ovviamente su tutte le volte che è presente 9999
 

Terio

Excel/Vba Expert
Supermoderatore
6 Gennaio 2021
28.437
6.230
2.345
55
Arce
2016, 2019, 365
se voglio estendere la tabella per un numero maggiore di righe al posto di mettere 9999 posso inserire anche 99999 uno zero in più vero?
Esattamente, io mi sono limitato a diecimila righe che sembravano sufficienti, ma se te ne servono altre puoi estendere ulteriormente.
Considera che con il 365 AGGREGA non è più una scelta performante, visto che puoi usare FILTRO:
=SE.ERRORE(INDICE(FILTRO(iw72_db!$A$2:$A$99999;(iw72_db!$D$2:$D$99999=D3)*(iw72_db!$F$2:$F$99999=E3));CONTA.PIÙ.SE($D$3:D3;D3;$E$3:E3;E3));"Verificare P/N o S/N")
e potresti ottimizzarla ulteriormente rapportando tutto ad un'unico intervallo con LET e/o renderla dinamica con PERRIGA, ma ritengo sia oltre le tue attuali competenze, per cui non te la propongo nemmeno.
Come puoi leggere, le condizioni (in grassetto) sono le medesime, ma la funzione di recupero degli avvisi di SAP è più snella demandandola ad un'unica funzione, inoltre non è stata usata la gestione dell'errore interno di FILTRO (3° parametro) per via della necessità di intercettare l'errore se il numero di risultati forniti sia al di fuori del numero di coppie PN/SN da restituire.

Ciao.
 
  • Like
Reactions: Mark87

alfrimpa

VBA Expert
Supermoderatore
18 Dicembre 2015
78.567
8.595
2.445
72
Napoli
Office 365
Giusto per non lasciare in sospeso il discorso che facevo al post 16

Sul foglio "Costi_2026"
  1. Inserire due colonne a sinistra
  2. In A3 inserire la seguente formula =F3&G3 e ricopiare in basso fin dove serve
  3. In B3 inserire la seguente formula =A3&CONTA.SE($A$3:$A3;A3) e ricopiare in basso fin dove serve.
Sul foglio "iw72_db"
  1. Inserire due colonne a sinistra
  2. In A2 inserire la seguente formula =F2&H2 e ricopiare in basso fin dove serve
  3. In B2 inserire la seguente formula =A2&CONTA.SE($A$2:$A2;A2) e ricopiare in basso fin dove serve
Tornare la foglio "iw72_db"

ed in C3 inserire la seguente formula =SE.ERRORE(CERCA.VERT(B4;iw72_db!B3:C1896;2;FALSO);"Verificare P/N o S/N") ricopiandola in basso fin dove serve.

Questo il risultato in colonna C sul foglio "Costi_2026"


Mi piacerebbe sapere se queste formule restituiscono, in qualche caso, risultati non corretti.
 
Ultima modifica: