Function Trova2Condiz(WS$, Zona1, cond1, Zona2, cond2, Offset) ' TROVA Risultato di 2 CONDIZIONI in Campo Offset
Numrighe = ContaRighe(WS$, 1, 6) ' 6 è il numero di colonne personalizzabile a piacere e, se le righe sono numericamente uguali in tutte le colonne è sufficiente fare la ricerca righe solo in colonna 1)
For f = 1 To Numrighe
Cella1 = Trim(UCase(Cells(f, Let2Num(Mid$(Zona1, 1, 1)))))
Cella2 = Trim(UCase(Cells(f, Let2Num(Mid$(Zona2, 1, 1)))))
If Cella1 = Trim(UCase(cond1)) And Cella2 = Trim(UCase(cond2)) Then
Cella$ = Cells(f, Offset).Value
Exit For
End If
Next f
Trova2Condiz = Cella$
End Function 'Trova2Condiz
Function ContaRighe(WS$, MinCol, MaxCol) ' Scansiona tutti i campi di WS$ = WorkSheet, da MinCol a MaxCol,
' conteggiando il massimo numero di riga fra tutte le colonne
' Se non si conosce il numero di colonne impegnato nel foglio basta assegnare il numero massimo (WS$; 1, 256)
' Se si vuole solo il numero di righe di un campo, basta assegnare MinCol = MaxCol es. ContaRighe(WS$; 3; 3)
Dim Contatore ' Contatore Utilizzato per le Righe
For COLONNA = MinCol To MaxCol
Ur = Worksheets(WS$).Cells(65536, COLONNA).End(xlUp).Row ' Ur = Ultima riga
valore = Worksheets(WS$).Cells(Ur, COLONNA).Value ' serve per intercettare cella vuota in riga 1 che darebbe
'valore 1 anche per riga vuota; così se devo conteggiare un campo vuoto mi ritorna 0 (Zero) anziché 1
If Ur = 1 And valore = "" Then Ur = 0
If Contatore < Ur Then Contatore = Ur
Next COLONNA
ContaRighe = Contatore ' numero massimo di righe impegnato nelle colonne da MinCol a MaxCol di WS$
End Function
Function Let2Num(LetAZ) 'Restituisce numero corrispondente a LetAZ A-Z; 1-26
If LetAZ < "A" Or LetAZ > "Z" Then
Let2Num = 0
Else
Let2Num = Asc(UCase(LetAZ)) - Asc("A") + 1
End If
End Function
|