Come dicevo io non sono così bravo da riuscire a vedere un'unica formula utilizzando le funzioni native di Excel e quindi provo tramite una FDU (funzione definita dall'utente) tramite VBA e con l'ausilio delle Dictionary.
Il file dovrà essere salvato in formato xlsm e in un modulo standard del progetto VBA.
Vedi qui un file di esempio (con i tuoi dati originari):
https://www.dropbox.com/s/eia7y7qiodk0r1p/consiglio%20per%20calcolo%20media%20filtrata.xlsm?dl=0
Questa la FDU presente nel Modulo1
'---
Function MediaSenzaRipetizioni(IntervalloCodici As Range, IntervalloValori As Range) As Double
Dim i As Long
Dim arrCodici As Variant, arrValori As Variant
Dim dictValoriCodici As Object, dictContaCodici As Object
Dim strCod As String
Dim valCod As Double
Dim objDict As Variant
Dim strKey As String
Dim SommaMediaCodiciUnivoci As Double
Dim bArrVerticale As Boolean
Dim idArr As Long
Set dictValoriCodici = CreateObject("Scripting.Dictionary")
Set dictContaCodici = CreateObject("Scripting.Dictionary")
arrCodici = IntervalloCodici.Value
arrValori = IntervalloValori.Value
If UBound(arrCodici, 1) > UBound(arrCodici, 2) Then
bArrVerticale = True
idArr = 1
Else
bArrVerticale = False
idArr = 2
End If
For i = LBound(arrCodici, idArr) To UBound(arrCodici, idArr)
If bArrVerticale Then
strCod = arrCodici(i, 1)
valCod = arrValori(i, 1)
Else
strCod = arrCodici(1, i)
valCod = arrValori(1, i)
End If
If Not dictValoriCodici.Exists(strCod) Then
dictValoriCodici.Add strCod, valCod
dictContaCodici.Add strCod, 1
Else
dictValoriCodici(strCod) = dictValoriCodici(strCod) + valCod
dictContaCodici(strCod) = dictContaCodici(strCod) + 1
End If
Next i
For Each objDict In dictValoriCodici.keys
SommaMediaCodiciUnivoci = SommaMediaCodiciUnivoci + _
dictValoriCodici(objDict) / dictContaCodici(objDict)
Next objDict
MediaSenzaRipetizioni = SommaMediaCodiciUnivoci / dictValoriCodici.Count
End Function
'---
L'argomento IntervalloCodici rappresenta l'intervallo di celle dove sono presenti i codici.
L'argomento IntervalloValori rappresenta l'intervallo di celle dove sono presenti i valori numerici.
Gli intervalli, composti ciascuno da almeno due celle, devono avere identica dimensione e entrambi devono essere o intervalli verticali (1 colonna per tot righe) o intervalli orizzontali (1 riga per tot colonne).
Meglio di questo mi sa che non sono in grado di fare :)
Prova a vedere come funziona se vuoi.