On 29/12/2013 07:39, Norman Jones wrote:
>
> Ciao Paolo,
>
> Chiedo scusa.
>
> Quello che mi sfuggiva era il diverso uso dei segni di punteggiatura in
> formule italiane / inglesi. Invece di quattro celle discrete, la mia
> formula si riferiva, erroneamente, a due intervalli estesi!
>
> Dato che si tratta di 4 celle, la formula diventerebbe:
>
> =MIN(SE(T489>0;T489);SE(AC489>0;AC489;SE(AG489>0;AG489;SE(AY489>0;AY489))))
>
> Tuttavia, sarebbe molto pi� veloce scrivere l'UDF di Bruno!
Ciao Paolo,
Come penitenza per il mio errore atroce, posso offrire una versione pi�
generica della UDF fornita da Bruno? Prendendo spinta da Bruno, questa
versione della funzione accetta qualunque combinazione di celle o
intervalli continui e discontinui, e accetta anche valori e altre
funzioni, anzich� quattro celle.:
'=============>>
Public Function MinNotZero(ParamArray anyRng() As Variant) As Variant
Dim dMin As Double
Dim V As Variant
Dim i As Long, j As Long, k As Long
MinNotZero = CVErr(xlErrNA)
For i = LBound(anyRng) To UBound(anyRng)
V = anyRng(i)
If IsArray(V) Then
For j = 1 To UBound(V, 1)
For k = 1 To UBound(V, 2)
If IsNumeric(V(j, k)) Then
If dMin = 0 Then
dMin = V(j, k)
ElseIf V(j, k) < dMin And V(j, k) <> 0 Then
dMin = V(j, k)
End If
End If
Next k
Next j
ElseIf IsNumeric(V) Then
If dMin = 0 Then
dMin = V
ElseIf V < dMin And V <> 0 Then
dMin = V
End If
End If
Next i
If dMin Then
MinNotZero = dMin
End If
End Function
'<<=============
Questa UDF potrebbe essere utilizzata come (per la domanda originale):
=MinNotZero(T489;AC489;AG489;AY489)*2
oppure, ad esempio, come
=MinNotZero(A1:D1;A3;A5;A7;A9:B12;A14:D18;F1;J10)
o
=MinNotZero(PI.GRECO();A1;A3;D5:F5;SOMMA(A5:A6);2,5)
Per rendere questa funzione disponibile:
Alt-F11 per aprire l'editor di VBA
Inserisci | Modulo
Incolla il codice qui sopra nel nuovo modulo di codice.
===
Regards
Norman