- Codice: Seleziona tutto
Sub RicercaNome()
'dichiarazione delle variabili’:
Dim Trova As Range, Intervallodiricerca As Range
Dim Valore_Ricerca As String, IndirizzoTrovato As String
Dim e As Integer, I As Integer
Dim ur As Integer
Dim Ur1 As Long
'
ur = sh14.Range("A" & (Rows.Count)).End(xlUp).Row
Ur1 = sh2.Range("C" & Rows.Count).End(xlUp).Row
Application.ScreenUpdating = False
'assegnazione dei valori alle variabili:
For e = 3 To Ur1
Valore_Cercato = sh2.Cells(e, "C").Value
'nella prima pagina del foglio attivo
Set Intervallodiricerca = sh14.Columns(1)
'*******************************
'metodo find, qui si cerca il valore esatto (LookAt:=xlWhole)
Set Trova = Intervallodiricerca.Cells.Find(What:=Valore_Cercato, LookAt:=xlWhole)
'trattamento dell’errore possibile: se non si trova nulla
If Trova Is Nothing Then
'qui, cosa fare nel caso in cui il valore non è trovato
ur = sh14.Range("A" & (Rows.Count)).End(xlUp).Row + 1
sh14.Cells(ur, "A").Value = Valore_Cercato
End If
'pulizia delle variabili
Set Intervallodiricerca = Nothing
Set Trova = Nothing
Next e
'
Application.ScreenUpdating = True
'
Ultima_consegna
'
End Sub
Sub Ultima_consegna()
'
Dim e As Integer
Dim Ur1 As Long
Dim Trova As Range, Intervallodiricerca As Range
Dim nome As String
'
Ur1 = sh2.Range("C" & Rows.Count).End(xlUp).Row
Application.ScreenUpdating = False
nome = sh2.Cells(Ur1, "c").Value '<<< Il nome da sondare
sh2.Activate
RigaMax = Evaluate("max(if((c2:c10000&""""=""" & nome & """)and (d2:d10000&""""=""" & nome & """),row(a2:a10000),""""))")
If RigaMax = "0" Then Exit Sub
If sh2.Range("E" & RigaMax).Value = "1" Then
DataMax = Evaluate("max(if((c2:c10000&""""=""" & nome & """),a2:a10000,""""))")
Else
DataMax = Evaluate("max(if((c2:c10000&""""=""" & nome & """),p2:p10000,""""))")
End If
'
Set Intervallodiricerca = sh14.Columns(1)
'*******************************
'metodo find, qui si cerca il valore esatto (LookAt:=xlWhole)
Set Trova = Intervallodiricerca.Cells.Find(What:=nome, LookAt:=xlWhole)
e = Trova.Row
If DataMax = "0" Then
sh14.Cells(e, "B") = "Non ci sono consegne"
Else
sh14.Cells(e, "B") = DataMax
End If
'
Set Intervallodiricerca = Nothing
Set Trova = Nothing
'
End Sub
Buongiorno
Uso il codice ( Sub RicercaNome() ) per cercare se il nominativo è presente, altrimenti lo aggiungo, e il codice ( Sub Ultima_consegna() ) per cercare l'ultima consegna fatta.
Andava tutto bene fino a quando, con lo stesso cognome, mi ritrovo piu nominativi.
Adesso per il Valore_Cercato non posso piu fare la ricerca solo sullacolonna "C", ma dovrei aggiungere anche la colonna "D", che corrisponde al nominativo.
Di conseguenza non ho idea di come posso modificare le stringhe per poter fare la ricerca sul cognome e nome :
[/code]Valore_Cercato = sh2.Cells(e, "C").Value
Set Intervallodiricerca = sh14.Columns(1)
Set Trova = Intervallodiricerca.Cells.Find(What:=Valore_Cercato, LookAt:=xlWhole)[/code]
La stessa cosa per trovare la data dell'ultima consegna relativa al nome cercato:
- Codice: Seleziona tutto
nome = sh2.Cells(Ur1, "c").Value '<<< Il nome da sondare
sh2.Activate
RigaMax = Evaluate("max(if((c2:c10000&""""=""" & nome & """)and (d2:d10000&""""=""" & nome & """),row(a2:a10000),""""))")
If RigaMax = "0" Then Exit Sub
If sh2.Range("E" & RigaMax).Value = "1" Then
DataMax = Evaluate("max(if((c2:c10000&""""=""" & nome & """),a2:a10000,""""))")
Else
DataMax = Evaluate("max(if((c2:c10000&""""=""" & nome & """),p2:p10000,""""))")
End If
Sperando di essermi spiegato, qualcuno ha qualche dritta da darmi?