Excel e gli applicativi Microsoft Office Valore massimo di una matrice con cerca verticale

Login Registrati
Stai vedendo 11 articoli - dal 1 a 11 (di 11 totali)
  • Autore
    Articoli
  • #36519 Score: 0 | Risposta

    mflauto
    Partecipante
      1 pt

      Buongiorno a tutti,

       ho una tabella di dati (nominata DB) e un foglio indice (Index) dove è presente una tabella pivot; ora vorrei calcolare il valore massimo dei Km percorsi di un determinato mezzo con la funzione cerca verticale ma non so come fare.

      In allegato il file di esempio.

      Allegati:
      You must be logged in to view attached files.
      #36521 Score: 0 | Risposta

      vecchio frac
      Senior Moderator
        272 pts

        Credo tu intenda che il valore si riferisce alla tabella in DB. La formula SOMME.SE potrebbe fare al caso tuo.
        In cella I2 del foglio DB (sotto l'etichetta "Percorsi") e trascinata in basso:

        =SOMMA.SE($C$2:$C$8;C2;$G$2:$G$8)
        #36522 Score: 0 | Risposta

        mflauto
        Partecipante
          1 pt

          Ciao vecchio frac,

          forse mi sono spiegato male; io vorrei che sul folder Index apparisse nella cella E2 il valore massimo pescato dalla colonna del folder DB quando nella cella B1 del folder Index seleziona una targa.

          #36523 Score: 1 | Risposta

          vecchio frac
          Senior Moderator
            272 pts

            Ah, ecco. Allora una formula matriciale (inserisci  la formula, poi Ctrl-Shift-Invio):

            Cella E2 del foglio Index: =MAX(SE(DB!C2:C10=B1;DB!G2:G10))
            #36524 Score: 0 | Risposta

            mflauto
            Partecipante
              1 pt

              Grazie!

              #36525 Score: 1 | Risposta

              Aldo Ercolini
              Partecipante
                19 pts

                Se ti puo' interessare versione senza formula ma con il VBA.

                Allegati:
                You must be logged in to view attached files.
                #36543 Score: 0 | Risposta

                mflauto
                Partecipante
                  1 pt

                  Buongiorno Aldo,

                   ti ringrazio, molto utile, mi spieghi però qual è il comando per fargli capire alla routine che deve prendere i chilometri

                  dalla colonna "G".

                  ption Explicit
                  
                  Private Sub Worksheet_Change(ByVal Target As Range)
                  
                  Dim CL As Object
                  Dim X As Long, Y As Long, URIGA As Long
                  
                  URIGA = Sheets("DB").Cells(Rows.Count, 1).End(xlUp).Row
                  
                  If Intersect(Target, Sheets("Index").Range("B1")) Is Nothing Then
                      Exit Sub
                  Else
                      For Each CL In Sheets("DB").Range("C2:C" & URIGA)
                  
                          If CL.Value = Sheets("Index").Range("B1").Value Then
                              X = CL.Offset(0, 4).Value
                              
                              If X > Y Then
                                  Y = X
                              End If
                              
                          End If
                          
                      Next
                  End If
                  
                  
                  Sheets("Index").Range("E2").Value = Y
                  
                  X = 0
                  Y = 0
                  
                  End Sub
                  
                  
                  #36547 Score: 1 | Risposta

                  vecchio frac
                  Senior Moderator
                    272 pts

                    mflauto ha scritto:

                    mi spieghi però qual è il comando per fargli capire alla routine che deve prendere i chilometri

                    dalla colonna "G".

                    Se posso permettermi rispondo io al posto di Aldo...
                    La riga di codice è questa:

                    X = CL.Offset(0, 4).Value

                    la quale preleva il valore della cella che si trova quattro colonne a destra di quella che è stata trovata per effetto dell'istruzione precedente la quale si ferma quando il confronto tra valore cercato e valore in elenco ha successo. Poiché la colonna di confronto (CL) è la numero 3 (la C: il range è determinato dall'istruzione For Each CL In Sheets("DB").Range("C2:C" & URIGA) ), il valore restituito è quello della settima colonna, la numero 7, che è la G appunto.

                    #36548 Score: 0 | Risposta

                    mflauto
                    Partecipante
                      1 pt

                      Grazie,

                       avevo intuito che quello era il valore, ma avendo cambiato il nome del database la routine non partiva   

                      #36549 Score: 0 | Risposta

                      mflauto
                      Partecipante
                        1 pt

                        Scusami vecchio frac, un'ultima cosa se nella colonna "G" non ci sono chilometri VBA mi da errore, mentre invece con la funzione

                        =MAX(SE('2023'!C2:C1000=B5;'2023'!G2:G1000)) mi restituisce zero e va bene, ma meglio se mi restituisse un campo vuoto.

                        #36550 Score: 1 | Risposta

                        vecchio frac
                        Senior Moderator
                          272 pts
                          =SE(MAX(SE(DB!C2:C10=B1;DB!G2:G10))=0;"";MAX(SE(DB!C2:C10=B1;DB!G2:G10)))

                          Sempre matriciale, restituisce un campo vuoto se il risultato è zero.
                          Il codice non dà errore ma zero. Comunque sostituisci l'istruzione che inserisce il valore in E2 con questa:

                          Sheets("Index").Range("E2").Value = IIf(Y = 0, "", Y)

                           

                        Login Registrati
                        Stai vedendo 11 articoli - dal 1 a 11 (di 11 totali)
                        Rispondi a: Valore massimo di una matrice con cerca verticale
                        Gli allegati sono permessi solo ad utenti REGISTRATI
                        Le tue informazioni: