Thursday, August 30, 2007

Excel: VLookup + DSum insieme

Il problema del VLookup è che ritorna il primo valore che ritrova.
Il problema del DSum è che è necessario avere il range con i criteri.

La mia necessità è invece questa: fare la somma dei valori di una tabella che hanno il valore di ricerca (= valore prima colonna) uguale a quello indicato da me.
Ho creato questa UDF che consente di scandire la tabella e fare la somma dei valori della colonna indicata:
Parametri ricevuti:
- Lookup_Value = Valore da cercare
- Lookup_Table = Tabella dei valori (la prima colonna contiene la chiave di ricerca
- Column_Index = Colonna contenente i valori da sommare

Valore ritornato:
- Somma dei valori corrispondenti alla chiave passata
- Errore (#VALUE) (se il valore non è individuato)

Public Function TotRange(Lookup_Value As Variant, Lookup_Table As Range, Column_Index As Integer) As Variant
Dim riga As Integer
Dim tot
Dim trovato As Boolean
tot = 0
trovato = False
For riga = 1 To Lookup_Table.Rows.Count
If Lookup_Table.Cells(riga, 1) = Lookup_Value Then
trovato = True
tot = Lookup_Table.Cells(riga, Column_Index) + tot
End If
Next
If trovato Then
TotRange = tot
Else
TotRange = CVErr(10)
End If
End Function

No comments: