› Excel e gli applicativi Microsoft Office › Valore massimo di una matrice con cerca verticale
-
AutoreArticoli
-
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.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)Ciao vecchio frac,
forse mi sono spiegato male; io vorrei che sul folder Index apparisse nella cella E2 il valore massimo pescato dalla colonna G del folder DB quando nella cella B1 del folder Index seleziona una targa.
Se ti puo' interessare versione senza formula ma con il VBA.
Allegati:
You must be logged in to view attached files.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 Submi 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).Valuela 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.
Grazie,
avevo intuito che quello era il valore, ma avendo cambiato il nome del database la routine non partiva
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.
=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) -
AutoreArticoli
