La formula di K e la mia udf restituiscono valori diversi; la udf conta il max dei valori adiacenti uguali, la formula e' l' equivalente di un Conta.Se.
Per k: quella Udf non e' utilizzabile in una formula a matrice, perche' restituisce un valore stringa mentre (per cominciare) la formula matrice richiede un array.
Questa e' abbastanza vicina:
- Codice: Seleziona tutto
Function ContigArr(ByRef MyTarg As Range, ByRef myVals As Range) As Variant
Dim myArr(), myMax As Integer
ReDim myArr(myVals.Count - 1)
For I = 1 To myVals.Count
myVal = myVals.Range("A1").Offset(I - 1, 0).Value
myMax = 0
For Each Cell In MyTarg
aab = Cell.Value
If Cell.Value = myVal Then
ccnt = ccnt + 1
Else
If ccnt > myMax Then myMax = ccnt
ccnt = 0
End If
Next Cell
myArr(I - 1) = myMax
Next I
ContigArr = myArr()
End Function
Richiede che i parametri siano passati come Riferimento, non come valori, e restituisce un array "Orizzontale" con gli N risultati; puoi quindi applicarla su un range di N "colonne" per avere gli N risultati, oppure puoi "pescare" tra i risultati; ad esempio il valore piu' grande lo trovi con, ad esempio,
- Codice: Seleziona tutto
=GRANDE(contigarr(A2:O2;A3:A5);1)
Se vuoi rappresentare i dati in verticale dovrai usare MATR.TRASPOSTA, ad esempio
- Codice: Seleziona tutto
=MATR.TRASPOSTA(contigarr(A2:O2;A3:A5))
Userai Contr-Maiusc-Enter quando vuoi applicare la formula su piu' celle, negli altri casi non e' necessario.
Ciao