Trovare la data associata a un valore negativo (Microsoft Excel)
Stuart ha una serie di letture in un foglio di lavoro. Nella prima colonna ha le date associate alle letture e nella seconda colonna ha le letture effettive. Stuart vorrebbe avere una formula che restituisca la prima data in cui una lettura è diventata negativa. In altre parole, la formula dovrebbe cercare il primo valore negativo nella seconda colonna e quindi restituire la data associata a quel valore.
Possono esserci più valori negativi nella seconda colonna, ma è necessaria solo la data associata al primo valore negativo.
Ci sono molti modi per affrontare questo problema. Tutti i metodi presumono che le date nella colonna A siano in ordine crescente e che le letture nella colonna B non siano in alcun tipo di ordine distinguibile. (In altre parole, le letture potrebbero rimbalzare sopra e sotto lo 0 in una determinata data.)
A condizione di avere un certo controllo sul layout del foglio di lavoro, è possibile aggiungere una colonna di lavoro intermedia nella colonna C, utilizzata per indicare quando un valore è negativo. Metti semplicemente una formula come questa nella colonna C, a destra di ogni lettura:
=IF(B1<0,A1,"")
Questa formula restituisce la data nella colonna A se il valore in B è inferiore a 0 (negativo), altrimenti non restituisce nulla. Tutto quello che devi fare è cercare il valore minimo nella colonna C:
=MIN(C:C)
Formatta il risultato come una data e rappresenta la data in cui le letture sono diventate inizialmente negative.
Un altro approccio consiste nel rinunciare all’uso della colonna intermedia e utilizzare una formula di matrice per determinare la data. Supponendo che i dati siano compresi nell’intervallo A1: B42, è possibile utilizzare una delle seguenti formule:
=MIN(IF(B1:B42<0,A1:A42,"")) =OFFSET($A$1,MATCH(TRUE,$B$1:$B$42<0,0)-1,,,) =INDEX(A:A,MIN(IF(B1:B42<0,ROW(B1:B42)))) =INDEX(A1:A42,MATCH(TRUE,B1:B42<0,0)) =INDIRECT("A"&MIN(IF(B1:B42<0,ROW(B1:B42))),TRUE)
Ricorda che queste sono tutte formule di matrice, quindi devi inserire quella che scegli premendo Maiusc + Ctrl + Invio. Formatta il risultato come una data ed è la risposta che cerchi.
Se preferisci, puoi anche usare una semplice macro per determinare la data:
Function GetFirstNegative(rngdata) Dim c As Variant For Each c In rngdata If c < 0 Then GetFirstNegative = c.Offset(0, -1) Exit Function Else GetFirstNegative = "All Data is Positive" End If Next End Function
Nel tuo foglio di lavoro, useresti questa funzione definita dall’utente in questo modo:
=GetFirstNegative(B1:B42)
_Nota: _
Se desideri sapere come utilizzare le macro descritte in questa pagina (o in qualsiasi altra pagina dei siti ExcelTips), ho preparato una pagina speciale che include informazioni utili.
ExcelTips è la tua fonte di formazione economica su Microsoft Excel.
Questo suggerimento (12321) si applica a Microsoft Excel 2007, 2010, 2013 e 2016.
Puoi trovare una versione di questo suggerimento per la vecchia interfaccia del menu di Excel qui: