Acquista i nostri libri consigliati su Amazon.it
+ Rispondi al messaggio
Pagina 1 di 2 12 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19

Condizione trovare valore in fogli diversi

  1. #1
    Tanzyn non è in linea Novello
    Post
    8
    Like Inviati  
    0
    Like Ricevuti  
    0
    Ciao a tutti, sono nuovo e spero possiate aiutarmi col mio quesito.

    Ho un file con quattro fogli: uno contiene dei codici e dei nomi ad esso associati, negli altri si trovano gli stessi codici (ma sparsi in fogli diversi) e altri nomi. Io ho bisogno di concatenare i nomi dei vari fogli che corrispondono a un certo codice presente in A2 del Foglio4), se il nome non viene trovato deve dare "NO".

    Ho provato a usare questa formula:

    codice HTML:
    =SE.ERRORE(CONCATENA(INDICE(Foglio1!B2:B5;CONFRONTA(A2;Foglio1!A2:A5;0));".";" ";INDICE(Foglio2!B2:B5;CONFRONTA(A2;Foglio2!A2:A5;0));".";" ";INDICE(Foglio3!B2:B5;CONFRONTA(A2;Foglio3!A2:A5;0));".";" ");0)
    Ma ha diversi problemi: come prima cosa nel Foglio3 non trova il codice 56545 e quindi restituisce sempre "0"; inoltre metterebbe comunque un punto e uno spazio alla fine, non trovando il codice nel Foglio3, dando in pratica una stringa del genere

    Marco. pippo.
    invece di:

    Marco. pippo
    Mi servirebbe qualcosa tipo il SOMMA.SE(), ma applicato al concatena.

    Allego il file di esempio con i valori che mi aspetto di ricevere nel Foglio4.

    https://drive.google.com/file/d/188h...ew?usp=sharing

    Grazie

  2. #2
    Sgrubak non è in linea Scribacchino
    Post
    608
    Like Inviati  
    12
    Like Ricevuti  
    15
    Scusa ma vuoi concatenare dei nomi, e poi usi la funzione INDICE, vuoi ottere un no in alternativa e come secondo parametro della funzione SE.ERRORE hai 0. Ci sono parecchie cose che non funzionano già solo così, senza nemmeno aprire il file...

  3. #3
    Tanzyn non è in linea Novello
    Post
    8
    Like Inviati  
    0
    Like Ricevuti  
    0
    Quote Originariamente inviato da Sgrubak Visualizza il messaggio
    Scusa ma vuoi concatenare dei nomi, e poi usi la funzione INDICE, vuoi ottere un no in alternativa e come secondo parametro della funzione SE.ERRORE hai 0. Ci sono parecchie cose che non funzionano già solo così, senza nemmeno aprire il file...
    Erano delle prove, so benissimo che non vanno. Chiedevo appunto se qualcuno avesse qualche idea per ottenere il risultato che mi serve.

  4. #4
    Sgrubak non è in linea Scribacchino
    Post
    608
    Like Inviati  
    12
    Like Ricevuti  
    15
    E i codici saranno univoci per ciascun foglio o possono essere duplicati?
    Devi avere "NO" solo se è vuoto nel primo foglio, o anche se è vuoto in uno qualsiasi degli altri fogli?
    Di sicuro, devi partire dal ragionare concatenando dei CERCA.VERT.

  5. #5
    Tanzyn non è in linea Novello
    Post
    8
    Like Inviati  
    0
    Like Ricevuti  
    0
    I codici sono univoci in ciascun foglio, solo nel Foglio4 dove inserirò la formula si ripetono in quanto rappresenta una sorta di riepilogo.
    Devo avere "NO" anche se è vuoto in uno qualsiasi degli altri fogli.

    Ho provato i cerca verti come suggerisci, nidificato in SE(), O(), E() ma dà errore di troppi argomenti per la funzione e non capisco dov'è l'errore:

    =SE(O(E(CERCA.VERT(A2;Foglio1!$A$2:$B$5;2;FALSO)>0);E(CERCA.VERT(A2;Foglio2!$A$2:$B$5;2;FALSO)>0);E(CERCA.VERT(A2;Foglio3!$A$2:$B$5;2;FALSO)>0));CONCATENA(CERCA.VERT(A2;Foglio1!$A$2:$B$5;2;FALSO));".";" ";(CERCA.VERT(A2;Foglio2!$A$2:$B$5;2;FALSO));".";" ";(CERCA.VERT(A2;Foglio3!$A$2:$B$5;2;FALSO));".";" ");0);"NO"))
    
    Ma non credo comunque che sia la strada giusta. Mi inserirebbe correttamente "NO" quando è vuoto nel primo foglio e in uno degli altri tre, ma poi quando esegue il CONCATENA il CERCA:VERT restituirebbe sempre il #N/D.

  6. #6
    Sgrubak non è in linea Scribacchino
    Post
    608
    Like Inviati  
    12
    Like Ricevuti  
    15
    Quote Originariamente inviato da Tanzyn Visualizza il messaggio
    I codici sono univoci in ciascun foglio
    ...omissis...
    Devo avere "NO" anche se è vuoto in uno qualsiasi degli altri fogli.
    Quindi può essere che proprio non ci sia, o c'è ma è vuota la cella col nome che t'interessa.


    Quote Originariamente inviato da Tanzyn Visualizza il messaggio
    dà errore di troppi argomenti per la funzione e non capisco dov'è l'errore
    Probabilmente nella SE più esterna. È l'unica che accetta al massimo tre argomenti (2 obbligatori e il [se_falso] facoltativo)

    Io farei così:
    Userei tre colonne "di servizio" (immaginiamo di usare le colonne X, Y e Z) per farmi restituire i 3 diversi CERCA.VERT. A questo punto ho in queste colonne tre possibilità da gestire:
    1) Il valore è stato trovato;
    2) il valore è vuoto;
    3) L'errore #N/D perché il valore non c'è.

    Ora, dove mi serve la concatenazione inserirò una formula tipo:
    =SE(SE.ERRORE(O(X1=0;Y1=0;Z1=0);VERO);"No";CONCATENA(X1;". ";Y1;". ";Z1))
    
    Così facendo, se uno dei tre CERCA.VERT è uguale a zero oppure un errore, ottieni [VERO] quindi il SE restituisce "No", altrimenti effettua la concatenazione.

    Va da se che si può sostituire [X1] direttamente con il CERCA.VERT li inserito (e lo stesso vale per [Y1] e [Z1]), ma la formula diventa molto lunga e difficile da leggere.
    Con molte righe, non so nemmeno se può avere impatti sulle prestazioni del ricalcolo del foglio, perché secondo me verrebbero valutate due volte. Bisognerebbe fare qualche test, se si presenta il problema.

  7. #7
    GiuseppeMN non è in linea Scribacchino
    Post
    792
    Like Inviati  
    1
    Like Ricevuti  
    3
    Buona giornata a Tutti.
    Leggo solo ora.

    @Tazyn:
    - quanti Fogli di lavoro devi effettivamente analizzare?

    Voglio dire, se i Fogli di lavoro sono effettivamente tre più il "Riepilogo", nel tuo esempio Foglio4, potresti pensare di avere:
    - Nel Foglio di lavoro Foglio4 utilizza tre Colonne d'appoggio.
    - Nelle Formule potresti utilizzare la Funzione Indiretto.

    (vedi immagine in allegato)

    Nome:   Indiretto.jpg
Visite:  27
Grandezza:  27.3 KB

    Se i Fogli di lavoro sono molti di più opterei per un Codice VBA.


    A disposizione.

    Giuseppe

  8. #8
    Tanzyn non è in linea Novello
    Post
    8
    Like Inviati  
    0
    Like Ricevuti  
    0
    Grazie a entrambi.
    Quote Originariamente inviato da Sgrubak Visualizza il messaggio
    Quindi può essere che proprio non ci sia, o c'è ma è vuota la cella col nome che t'interessa.
    Nnel Foglio4 c'è sempre il codice mentre negli altri fogli il codice è presente solo in uno dei tre.



    Quote Originariamente inviato da Sgrubak Visualizza il messaggio
    Probabilmente nella SE più esterna. È l'unica che accetta al massimo tre argomenti (2 obbligatori e il [se_falso] facoltativo)

    Io farei così:
    Userei tre colonne "di servizio" (immaginiamo di usare le colonne X, Y e Z) per farmi restituire i 3 diversi CERCA.VERT. A questo punto ho in queste colonne tre possibilità da gestire:
    1) Il valore è stato trovato;
    2) il valore è vuoto;
    3) L'errore #N/D perché il valore non c'è.

    Ora, dove mi serve la concatenazione inserirò una formula tipo:
    =SE(SE.ERRORE(O(X1=0;Y1=0;Z1=0);VERO);"No";CONCATENA(X1;". ";Y1;". ";Z1))
    
    Così facendo, se uno dei tre CERCA.VERT è uguale a zero oppure un errore, ottieni [VERO] quindi il SE restituisce "No", altrimenti effettua la concatenazione.

    Va da se che si può sostituire [X1] direttamente con il CERCA.VERT li inserito (e lo stesso vale per [Y1] e [Z1]), ma la formula diventa molto lunga e difficile da leggere.
    Con molte righe, non so nemmeno se può avere impatti sulle prestazioni del ricalcolo del foglio, perché secondo me verrebbero valutate due volte. Bisognerebbe fare qualche test, se si presenta il problema.
    Qui rispondo anche a GiuseppeMN.

    I fogli da analizzare sono effettivamente 4. Avevo pensato anch'io alle tre colonne di servizio, volevo evitare una soluzione di questo tipo per non appesantirne la consultazione, dato che nella versione reale il foglio 4 ha già altre 8 colonne. In ogni caso credo che il problema rimanga: supponendo che X1 sia vuota, in Y1 ho "Marco." e in Z1 ho "pippo.", la formula che hai proposto non trovando niente in X1 mi restituirebbe ". Marco. pippo" col punto+spazio iniziale. Anche mettendo il punto alla fine di ogni nome nei singoli fogli e toglierlo nell'intermezzo fra X, Y e Z (non ". " ma " "), nel caso in cui Y1 fosse vuoto mi restituirebbe doppio spazio fra il nome in X1 e il nome in Z1. Potrei anche soprassedere, ma il risultato del concatena poi va copiato in un altro documento (una web app) e non è proprio bello da vedere.

    Non so se sono riuscito a esprimermi bene.
    Ultima modifica di Tanzyn; 26-01-2021 13:06 

  9. #9
    Sgrubak non è in linea Scribacchino
    Post
    608
    Like Inviati  
    12
    Like Ricevuti  
    15
    Un momento...
    Tu scrivi:
    Quote Originariamente inviato da Tanzyn Visualizza il messaggio
    Devo avere "NO" anche se è vuoto in uno qualsiasi degli altri fogli.
    E poi:
    Quote Originariamente inviato da Tanzyn Visualizza il messaggio
    mentre negli altri fogli il codice è presente solo in uno dei tre.
    E infine:
    Quote Originariamente inviato da Tanzyn Visualizza il messaggio
    supponendo che X1 sia vuota, in Y1 ho "Marco." e in Z1 ho "pippo."
    Qui qualcosa mi sfugge... Quale casistica è quella giusta?


    Quote Originariamente inviato da Tanzyn Visualizza il messaggio
    la formula che hai proposto non trovando niente in X1 mi restituirebbe ". Marco. pippo" col punto+spazio iniziale.
    L'hai provata? A scanso di equivoci, mi quoto da solo, ancora ti sia sfuggito il passaggio:

    Quote Originariamente inviato da Sgrubak Visualizza il messaggio
    Così facendo, se uno dei tre CERCA.VERT è uguale a zero oppure un errore, ottieni [VERO] quindi il SE restituisce "No", altrimenti effettua la concatenazione.
    Quindi no, non restituisce ". Marco. pippo", ma "No", come richiesto nel tuo post #5.

  10. #10
    Tanzyn non è in linea Novello
    Post
    8
    Like Inviati  
    0
    Like Ricevuti  
    0
    Quote Originariamente inviato da Sgrubak Visualizza il messaggio
    Un momento...
    Tu scrivi:
    Quote Originariamente inviato da Tanzyn
    Devo avere "NO" anche se è vuoto in uno qualsiasi degli altri fogli.
    E poi:
    Quote Originariamente inviato da Tanzyn
    mentre negli altri fogli il codice è presente solo in uno dei tre.
    Il codice è presente solo in due dei tre fogli e quando è vuoto in uno dei due deve dare "NO". Probabilmente mi sono espresso male, anche se in realtà il file di esempio che ho postato è corretto, così come il risultato atteso.
    Faccio un esempio concreto: il codice 56545 è presente sia nel Foglio1 che nel Foglio2, con nomi diversi (oltre che nel Foglio4 come riepilogo). Si presentano quindi tre possibili casi:

    1. se il codice 56545 nel Foglio1 ha il nome "Marco" e nel Foglio2 "pippo"="Marco. pippo."
    2. se il codice 56545 nel Foglio1 ha il nome "Marco" e nel Foglio2 invece il nome in colonna B è vuoto="NO"
    3. se il codice 56545 nel Foglio1 ha il nome "Marco" e nel Foglio2 invece non è presente="NO"

+ Rispondi al messaggio
Pagina 1 di 2 12 ultimoultimo

Potrebbero interessarti anche ...

  1. Trovare Valori diversi
    Da m0sc4rd0 nel forum Microsoft Access
    Risposte: 8
    Ultimo Post: 13-04-2020, 19:21
  2. Trovare il valore minimo e il valore massimo in un datatable
    Da ettore71 nel forum Visual Basic .Net
    Risposte: 4
    Ultimo Post: 11-02-2017, 00:17
  3. Eseguire codice su fogli diversi
    Da Ssandro nel forum Microsoft Excel
    Risposte: 7
    Ultimo Post: 25-01-2017, 15:24
  4. VBA Conservare valore variabile tra fogli diversi
    Da attila666 nel forum Microsoft Excel
    Risposte: 6
    Ultimo Post: 10-12-2015, 12:13
  5. Risposte: 16
    Ultimo Post: 23-05-2013, 14:19