Quota:
Inviato da riccardonard
Grazie ancora Alexsandra, ma non voglio farti "impazzire" per una questione che non è di vitale importanza, visto che hai già risolto brillantemente per il formato numerico.
Tuttavia, se posso approfittare ancora della tua disponibilità, quando avrai del tempo, potresti provare a risolvere la questione utilizzando le stringhe, le più generiche possibili; in tal modo ingloberemmo qualsiasi formato, dal più generico, al più particolare.
Cioè: una funzione VBA che confrontasse i valori di stringa qualsiasi sarebbe valida sia per il formato "123abc" che per il formato "abc123" e ciò mi parrebbe una soluzione universale e definitiva: sempre che sia possibile tecnicamente.
Io credo che la stringa sia valutata in funzione dei caratteri ASCII da cui è composta: ad es. "1" vale 48 nella tabella ASCII, "A" vale 65, per cui è > di "1" e così via.
Grazie ancora.
Cordialmente, Riccardo
|
Ho provato ad elaborare questa formula, scopiazzando qua e là, ma non funziona...............
Chiedo suggerimenti, grazie
Ciao
Function ComparaStringheArea(AreaValori As Range, Criterio As String, Riferimento As String)
' Crietrio può assumere solo i valori: "=", ">", "<", ">=", "<="
Dim cella As Range
'If Criterio = ">" Then MsgBox ("criterio = " & Criterio)
On Error Resume Next
For Each rng In AreaValori
Set cella = Cells(rng.Row, AreaValori.Column)
If Criterio = "=" Then
If StrComp(cella, Riferimento) = 0 Then
Res = Res + 1
End If
ElseIf Criterio = ">=" Then
If StrComp(cella, Riferimento) >= 0 Then
Res = Res + 1
End If
ElseIf Criterio = "<=" Then
If StrComp(cella, Riferimento) <= 0 Then
Res = Res + 1
End If
ElseIf Criterio = "<" Then
If StrComp(cella, Riferimento) < 0 Then
Res = Res + 1
End If
ElseIf Criterio = ">" Then
If StrComp(cella, Riferimento) > 0 Then
Res = Res + 1
End If
End If
Next
ComparaStringheArea = Res
End Function