Buongiorno,
devo valorizzare il contenuto di una cella (RISULTATO) in base al contenuto delle informazioni riportate in tre campi distinti della stessa tabella ed
una lista di valori che si trova in un altra tabella in base a dei criteri.
I criteri da utilizzare sono:
Il valore da riportare varia in base a questi criteri e secondo diverse priorità:
Innanzi tutto se il valore della cella nel "CAMPO13" è "descrizione3_campo13",
nella rispettiva riga della colonna AH riporterò come RISULTATO "bloccato".
Solo se
non viene soddisfatta questa condizione, verifico il valore del CAMPO14, se è uguale a "caso1",
il RISULTATO da riportare nella riga della colonna AH sarà prioritariamente il contenuto della rispettiva cella del campo12 solo se questo è diverso da vuoto e diverso
da uno dei valori presenti nella tabella "valori esclusi", altrimenti dovrà essere riportato come RISULTATO il valore presente nel campo13, sempre nel caso in cui quest'ultimo sia diverso
da vuoto e diverso da uno dei valori presenti nella tabella "valori esclusi". Se non è possibile assegnare uno
dei valori del campo12 o del campo13, il valore da riportare come RISULTATO sarà "valore assente".
In tutti i casi in cui il valore
del CAMPO14 è diverso da "caso1", il RISULTATO
da riportare nella riga della colonna AH sarà prioritariamente il contenuto della rispettiva cella del campo13, in seconda priorità il campo12 se il valore da riportare è vuoto o presente nella solita lista di valori da escludere. A cascata se anche il campo12
è un risultato da escludere (perchè vuoto o compreso nella lista valori da escludere), riporterò "valore assente.
Ho provato a fare questo (ad esclusione della ricerca del valore nella tabella "valori da escludere") con il codice sotto riportato... non so come fare la verifica
sulla tabella dei valori da escludere, il file di esempio è qui.
Inoltre questa operazione andrebbe fatta su una lista di oltre 400.000 righe ed ho paura che questa da me abbozzata sia una soluzione snella...
Public Sub m()
Dim wk As Workbook
Dim sh1 As Worksheet
Dim sh2 As Worksheet
Dim lng As Long
Dim lUltRiga As Long
Dim Risultato As String
Dim valore1 As String
Dim valore2 As String
Dim condizione1 As String
Dim condizione2 As String
Set WB = ThisWorkbook
With WB
Set sh1 = .Worksheets("dati")
End With
With sh1
lUltRiga = Range("A" & Rows.Count).End(xlUp).Row
For lng = 2 To lUltRiga
condizione1 = Range("M" & lng).Value
condizione2 = Range("N" & lng).Value
valore1 = Range("L" & lng).Value
valore2 = Range("M" & lng).Value
If condizione1 = "descrizione3_campo13" Then
Risultato = "BLOCCATO"
Range("AH" & lng).Value = Risultato
GoTo fine
End If
If condizione2 = "caso1" Then
Risultato = valore1
If Risultato = "" Then
Risultato = valore2
If Risultato = "" Then
Risultato = "valore non valido"
Range("AH" & lng).Value = Risultato
End If
Range("AH" & lng).Value = Risultato
End If
Range("AH" & lng).Value = Risultato
End If
If condizione2 <> "caso1" Then
Risultato = valore2
If Risultato = "" Then
Risultato = valore1
If Risultato = "" Then
Risultato = "valore non valido"
Range("AH" & lng).Value = Risultato
End If
End If
Range("AH" & lng).Value = Risultato
End If
fine:
Next
End With
Set sh = Nothing
End Sub