You are here:--[RISOLTO] Cercare valori su riga da un elenco formula
[RISOLTO] Cercare valori su riga da un elenco formula2019-04-01T15:12:36+02:00

Home Forum Domande su Formule e Funzioni [RISOLTO] Cercare valori su riga da un elenco formula

Tag: 

  • Autore
    Articoli
  • Avatarg.ros
    Partecipante
      Post totali: 14

      Buongiorno,

      avrei bisogno di trovare su ogni riga del Foglio1 almeno il primo numero corrispondente sulla colonna del Foglio2 e che questo numero sia scritto nella prima cella libera alla fine della riga stessa.

      Ho usato la formula  =INDICE(B1:F1;CONFRONTA(Foglio2!A1;B1:F1;0)) ma in questo modo confronto solo il primo numero della colonna nella prima cellaH1 e quindi ho aggiunto una seconda la formula in I1 =INDICE(B1:F1;CONFRONTA(Foglio2!A2;B1:F1;0)) con il secondo numero della colonna cellaH2 e così via.

      Vorrei un’unica formula che comprenda tutti i parametri della colonna li confronti con la riga

      Grazie a chi potrà aiutarmi.

      Allego il file di esempio

      <br />

      http://www.filedropper.com/cerca1_1

      • Questo argomento è stato modificato 5 mesi, 3 settimane fa da Avatar g.ros.
      • Questo argomento è stato modificato 5 mesi, 3 settimane fa da Avatar g.ros. Ragione: ho sbagliato ad inserire il link!
      • Questo argomento è stato modificato 5 mesi, 3 settimane fa da sid sid.
    • BySalvBySalv
      Amministratore del forum
        Post totali: 510

        Ciao g.ros, per qualche formula devo vedere, è risaputo che con le formule non vado troppo in accordo.

        se vuoi con il Vba possiamo risolvere,cioè trovare il primo numero del Foglio1 nella riga 1 e successive che corrisponda all’elenco del Foglio2 “A1:A12” e scriverlo nel Foglio1 nella colonnaG corrispondente alla riga.

        Altrimenti con la formattazione condizionale potresti vedere il risultato immediato, quello che scrivi nel Foglio2 lo vedi immediatamente nel Foglio1, anche la posizione:

        Cattura

        Fai sapere se vuoi una macro lo facciamo subito con le formule devi aspettare.

        Ciao By Sal :bye:

      • Avatarg.ros
        Partecipante
          Post totali: 14

          ciao Sal, anche se capisco che con VBA si ottengono risultati migliori purtroppo devo lavorare con le formule. Intanto ho risolto con questa:
          =SE.ERRORE(INDICE(B2:F2;CONFRONTA(Foglio2!$A2;B2:F2;0));SE.ERRORE(INDICE(B2:F2;CONFRONTA(Foglio2!$A4;B2:F2;0));SE.ERRORE(INDICE(B2:F2;CONFRONTA(Foglio2!$A5;B2:F2;0));SE.ERRORE(INDICE(B2:F2;CONFRONTA(Foglio2!$A6;B2:F2;0));SE.ERRORE(INDICE(B2:F2;CONFRONTA(Foglio2!$A7;B2:F2;0));SE.ERRORE(INDICE(B2:F2;CONFRONTA(Foglio2!$A8;B2:F2;0));SE.ERRORE(INDICE(B2:F2;CONFRONTA(Foglio2!$A9;B2:F2;0));SE.ERRORE(INDICE(B2:F2;CONFRONTA(Foglio2!$A10;B2:F2;0));SE.ERRORE(INDICE(B2:F2;CONFRONTA(Foglio2!$A11;B2:F2;0));SE.ERRORE(INDICE(B2:F2;CONFRONTA(Foglio2!$A12;B2:F2;0));SE.ERRORE(INDICE(B2:F2;CONFRONTA(Foglio2!$A13;B2:F2;0));SE.ERRORE(INDICE(B2:F2;CONFRONTA(Foglio2!$A14;B2:F2;0));SE.ERRORE(INDICE(B2:F2;CONFRONTA(Foglio2!$A15;B2:F2;0));"NESSUNA")))))))))))))
          ma se qualcuno ha qualche soluzione più elegante …
          Grazie molte!

        • BySalvBySalv
          Amministratore del forum
            Post totali: 510

            Ciao Ok Aspettiamo qualche altra soluzione.

            Ciao By Sal :bye:

          • sidsid
            Moderatore
              Post totali: 718

              Ciao
              Non so se ho capito bene la tua esigenza.
              In H1 di foglio1
              =SE.ERRORE(INDICE($B1:$F1;CONFRONTA(INDIRETTO(INDIRIZZO(RIF.COLONNA(A1);RIF.RIGA($A$1);3;1;"Foglio2"));$B1:$F1;0));"NESSUNA")
              Da trascinare a destra e in basso

            • Avatarg.ros
              Partecipante
                Post totali: 14

                Ciao sid, la formula dovrebbe confrontare le celle della riga con tutte le celle della colonna del Foglio2 (e non solo la cella Foglio2.A1).
                grazie

              • sidsid
                Moderatore
                  Post totali: 718

                  Ma è quello che fa, oppure non ho capito la tua esigenza.
                  Per capire bene il risulato finale, potresti inserire manualmente i valori che dovresti ottenere nel range H1:S1 di foglio1?

                • Avatarg.ros
                  Partecipante
                    Post totali: 14

                    con la tua formula (se non ho sbagliato qualcosa) mi dà corretto il valore dalla prima riga ma trascinando la formula sulle altre mi dà “NESSUNA”.

                    Allego il file con i risultati che vorrei ottenere sulla celle verdi.

                    http://www.filedropper.com/esempio

                    <br />

                  • D@niloD@nilo
                    Partecipante
                      Post totali: 48

                      Buongiorno a tutti

                      con questa formula da mettere in G1 e attivare con CTRL+SHIFT+INVIO e poi trascinare in basso ottengo gli stessi risultati inseriti manualmente dall’utente ad eccezione della riga 2 dove dichiara di volere ottenere 24 però il 3 che troviamo in prima e seconda posizione lo abbiamo anche nella lista gialla

                       

                      =SE.ERRORE(INDICE(Foglio2!$A$1:$A$12;CONFRONTA(1;(–(VAL.NUMERO(CONFRONTA(Foglio2!$A$1:$A$12;B1:F1;0))));0));”NESSUNA”)

                    • Avatarg.ros
                      Partecipante
                        Post totali: 14

                        ciao D@nilo, hai ragione, ho sbagliato il valore della riga 2 nell’esempio…mi scuso.

                        Però la tua formula mi dà errore (#NOME?) anche se la lancio con CTRL+SHIFT+INVIO. Dove sbaglio?!

                      • Avatarg.ros
                        Partecipante
                          Post totali: 14

                          sempre per D@nilo, allego esempio risultato.
                          Grazie

                          http://www.filedropper.com/esempio_1

                          <br />

                        • D@niloD@nilo
                          Partecipante
                            Post totali: 48

                            Ciao

                            l’ultimo file scaricato restituisce errore #NOME? come se non riconosce delle formule comunque non ho tempo per indagare ti allego link per scaricare il file precedente con formula inserita e funzionante

                             

                            https://www.dropbox.com/s/j6e5k30v1bp48jo/matr.xlsx?dl=0

                             

                            saluti

                          • Avatarg.ros
                            Partecipante
                              Post totali: 14

                              grazie mille D@nilo, grande!
                              ciao
                              g

                            • Avatarg.ros
                              Partecipante
                                Post totali: 14

                                Non riesco a scrivere [RISOLTO], scusate.

                              • sidsid
                                Moderatore
                                  Post totali: 718

                                  Perdonami ma nel post di apertura tu hai inserito 2 formule: la prima in H1 e la seconda in I1, quindi la tua intenzione era trascinare la formula sulla riga e non sulla colonna. Il parametro che cambiava era l’argomento “valore” della funzione CONFRONTA, che sulla prima formula era A1 di foglio2, mentre nella seconda era A2 di foglio2.
                                  Nel tuo esempio con i risultati inseriti manualmente invece, te trascini verso il basso e non verso destra.

                                • Avatarg.ros
                                  Partecipante
                                    Post totali: 14

                                    Ciao sid, hai ragione l’esempio era molto confuso.
                                    nel primo file ho riportato lo scarso risultato che ero riuscita ad ottenere io: non avendo nidificato la formula ho dovuto “spalmarla” sulle righe perchè confrontavo un elemento alla volta!
                                    In realtà la soluzione di D@nilo è quello che volevo ottenere.
                                    Visto che la discussione è riaperta vi chiedo anche lumi su questa parte della formula:

                                    CONFRONTA(1;(–(VAL.NUMERO(CONFRONTA

                                    che funziona alla grande con:
                                    =SE.ERRORE(INDICE(Foglio2!$A$1:$A$12;CONFRONTA(1;(–(VAL.NUMERO(CONFRONTA(Foglio2!$A$1:$A$12;B1:F1;0))));0));”NESSUNA”)

                                    ma non riesco proprio a capire cosa/come fa!

                                    grazie a tutti, siete super!

                                  • D@niloD@nilo
                                    Partecipante
                                      Post totali: 48

                                      Ciao

                                      Ora sono da cellulare

                                      Stasera col pc ti spiego come funziona

                                    • D@niloD@nilo
                                      Partecipante
                                        Post totali: 48

                                        Ciao

                                        partiamo dal cuore della formula (prendo in esame la prima riga)

                                        CONFRONTA(Foglio2!$A$1:$A$12;B1:F1;0)

                                        e da qui lo stato matriciale in quanto confrontiamo una matrice di dati in un altra

                                        e ci restituisce questa matrice

                                        {1.#N/D.2.3.4.#N/D.#N/D.#N/D.#N/D.#N/D.5.#N/D}

                                        visto che lavoriamo con dei numeri verifichiamo quali sono i dati che ci interessano cosi

                                        VAL.NUMERO(CONFRONTA(Foglio2!$A$1:$A$12;B1:F1;0))

                                        che restituisce la matrice

                                        {VERO.FALSO.VERO.VERO.VERO.FALSO.FALSO.FALSO.FALSO.FALSO.VERO.FALSO}

                                        dove VERO è un numero e falso qualsiasi cosa non è un numero errori compresi

                                        ora mettiamo i due meno davanti che servono a trasformare i VERO in uno e i FALSO in zero

                                        (–(VAL.NUMERO(CONFRONTA(Foglio2!$A$1:$A$12;B2:F2;0))))

                                        ora questa matrice che abbiamo creato la usiamo come matrice del CONFRONTA e il mettiamo come valore da cercare l’uno quindi

                                        CONFRONTA(1;(–(VAL.NUMERO(CONFRONTA(Foglio2!$A$1:$A$12;B1:F1;0))));0) ottenendo

                                        {1.0.1.1.1.0.0.0.0.0.1.0}

                                        che ci troverà la posizione relativa del primo uno che incontra che corrisponde al primo valore della colonna di dati che trova nella riga in oggetto… ora sappiamo che nel caso esempio il primo dato della colonna del foglio due si trova in prima posizione questa matrice la usiamo come argomento RIGA della funzione INDICE

                                        INDICE(Foglio2!$A$1:$A$12;CONFRONTA(1;(–(VAL.NUMERO(CONFRONTA(Foglio2!$A$1:$A$12;B1:F1;0))));0))

                                        il SE.ERRORE non credo abbia bisogno di delucidazioni

                                        Sperando di essere stato chiaro un saluto

                                         

                                        • Questa risposta è stata modificata 5 mesi, 3 settimane fa da D@nilo D@nilo.
                                      • Avatarg.ros
                                        Partecipante
                                          Post totali: 14

                                          Grazie davvero, adesso sono al cell ma domani me la studio bene! Sei stato preziosissimo. Alla prossima. 

                                        • Avatarg.ros
                                          Partecipante
                                            Post totali: 14

                                            Ciao D@nilo, sei stato molto chiaro, grazie. Una bella formula, elegante. Davvero bravo, complementi! un saluto

                                          • D@niloD@nilo
                                            Partecipante
                                              Post totali: 48

                                              Buongiorno

                                              un’altra possibilità per evitare lo stato matriciale G1 da trascinare in basso

                                               

                                              =SE.ERRORE(INDICE(Foglio2!$A$1:$A$12;AGGREGA(15;6;RIF.RIGA($A$1:$A$12)/
                                              (CONFRONTA(Foglio2!$A$1:$A$12;B1:F1;0)>0);1));”NESSUNA”)

                                              • Questa risposta è stata modificata 5 mesi, 3 settimane fa da D@nilo D@nilo.
                                            • Avatarg.ros
                                              Partecipante
                                                Post totali: 14

                                                Grazie! :bye:

                                              • Avatarg.ros
                                                Partecipante
                                                  Post totali: 14

                                                  ciao D@nilo, scusa se ti disturbo ancora ma, quando hai un attimo di tempo, puoi dirmi perchè l’ultima tua formula

                                                  =SE.ERRORE(INDICE(Foglio2!$A$1:$A$12;AGGREGA(15;6;RIF.RIGA($A$1:$A$12)/(CONFRONTA(Foglio2!$A$1:$A$12;B4:F4;0)>0);1));”NESSUNA”)

                                                  che funziona correttamente quando trova una corrispondenza, quando non la trova invece di restituirmi NESSUNA (secondo valore di se.errore) mi restituisce #NOME?

                                                  :scratch:

                                                  grazie!

                                                • D@niloD@nilo
                                                  Partecipante
                                                    Post totali: 48

                                                    Bungiorno

                                                    già sull’altro file che avevi allegato avevi problemi la formula funziona correttamente l’errore nome lo restituisce quando excel non riconosce una funzione di più non so dirti ti allego il link per il file con le due formule inserite e funzionanti

                                                     

                                                    https://www.dropbox.com/s/ywc3qvt0gx8yocg/GROS.xlsx?dl=0

                                                  • Avatarg.ros
                                                    Partecipante
                                                      Post totali: 14

                                                      Buongiorno,

                                                      grazie, gentile e paziente come sempre!

                                                      Si è vero, l’altra formula mi dava errore ma perché con il copia/incolla avevo un – invece di due.

                                                      Questa volta non so proprio cosa sia andato storto, mah.

                                                      Comunque copiandola dal tuo file funziona come dovrebbe.

                                                      grazie ancora. :bye:

                                                       

                                                    Devi essere loggato per rispondere a questa discussione.

                                                    Utilizzando il sito, accetti l'utilizzo dei cookie da parte nostra. maggiori informazioni

                                                    Questo sito utilizza i cookie per fornire la migliore esperienza di navigazione possibile. Continuando a utilizzare questo sito senza modificare le impostazioni dei cookie o cliccando su "Accetta" permetti il loro utilizzo.

                                                    Chiudi