Michele ha spesso bisogno di vedere la differenza tra i valori di due celle. Può inserire una semplice formula “=A1 – B1” in una cella libera, ma sarebbe molto più semplice se Michele potesse semplicemente selezionare le due celle di interesse e vedere la differenza, come con somme, medie, ecc., nella Barra di stato.
Excel ti consente di personalizzare ciò che appare sulla barra di stato (fai clic con il pulsante destro del mouse sulla barra di stato e scegli la statistica che desideri visualizzare lì), ma non ti consente di visualizzare la differenza tra due celle. Questo ha un po’ senso, se ci pensi: le statistiche disponibili per la visualizzazione sulla barra di stato si basano sul numero di celle selezionate e la “differenza” funziona solo con due celle.
Quindi, la scelta logica successiva è creare una formula (come suggerisce Michele) o utilizzare una macro. Se vuoi seguire il percorso macro, quello che segue è un approccio carino e semplice:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim c As Range
Dim sTemp As String
Dim Count As Integer
Dim Values(2) As Variant
If Target.Cells.Count = 2 Then
sTemp = ""
For Each c In Target
Count = Count + 1
If IsNumeric(c) Then
Values(Count) = c
Else
Values(Count) = 0
sTemp = " (valori non numerici nell'intervallo selezionato"
sTemp = sTemp & "; il risultato potrebbe essere senza significato)"
End If
Next c
Application.DisplayStatusBar = True
Application.StatusBar = "Diff: " & Values(1) - Values(2) & sTemp
Else
Application.StatusBar = False
End If
End Sub
La macro è un gestore eventi, progettato per risiedere nella finestra del codice di un foglio di lavoro specifico (fai clic con il pulsante destro del mouse sulla scheda del foglio di lavoro e scegli Visualizza codice dal menu contestuale risultante). Per utilizzare la macro, seleziona semplicemente due celle. Il risultato viene mostrato sul lato sinistro della barra di stato. Tieni presente che la macro indicherà anche nella barra di stato se una delle celle selezionate contiene qualcosa di diverso da un valore numerico.
Se desideri creare una versione più complessa della macro (e utilizzarla come componente aggiuntivo di Excel), potrebbe piacerti questo articolo sul sito Web di Chandoo.
La macro presentata qui sopra restituisce il valore assoluto della differenza tra due numeri. Se fossi interessato ad avere invece la differenza avendo riguardo a quale dei due numeri sia stato selezionato per primo (in questo caso potresti ottenere anche valori negativi), la seguente variazione può fare al caso tuo:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim c As Range
Dim sTemp As String
Dim Count As Integer
Dim Values(2) As Variant
If Target.Cells.Count = 2 Then
sTemp = ""
For Each c In Target
Count = Count + 1
If IsNumeric(c) Then
Values(Count) = c
Else
Values(Count) = 0
sTemp = " (valori non numerici nell'intervallo selezionato"
sTemp = sTemp & "; il risultato potrebbe essere senza significato)"
End If
Next c
Application.DisplayStatusBar = True
Application.StatusBar = "Diff: " & Values(1) - Values(2) & sTemp
Else
Application.StatusBar = False
End If
End Sub
Se invece vuoi utilizzare la macro in tutti i fogli di lavoro, senza doverla copiare nel foglio codice di ogni singolo foglio di lavoro, puoi utilizzare le seguenti da inserire nella finestra Codice dell’oggetto Questa_cartella_di_lavoro:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
If Selection.CountLarge = 2 Then
Call Workbook_SheetSelectionChange(Sh, Selection)
End If
End Sub
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
Application.StatusBar = False
End Sub
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Dim v As Variant, c As Range
If Target.CountLarge = 2 Then
v = 0
For Each c In Target
If IsNumeric(c) Then
v = c - v
Else
v = -v
End If
Next c
Application.DisplayStatusBar = True
Application.StatusBar = "Diff: " & -v
Else
Application.StatusBar = False
End If
End Sub