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: