Condividi:        

trovare data con funzione evaluate

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

trovare data con funzione evaluate

Postdi miko » 06/02/25 19:11

Buonasera e saluti a tutti gli utenti
ho il seguente problema

devo trovare la data-stringa:

StrDataArc = Format(DataArc, "D MMMM YYYY - HH:MM") '(DataArc è il valore di una cella)

del tipo "8 agosto 2023 - 20:30", nella colonna "B" le cui righe sono, come importate purtroppo,
alternativamente piene e vuote.

in altri casi, per valori numerici, ho usato il codice seguente:

Codice: Seleziona tutto
Dim CercaIn As String, LastRowB As Long, Number as Integer

'RANGE IN CUI CERCARE
CercaIn = .Range("B3:B18").Address  'OK
   
Number = 8   'cosa cercare

LastRowB = .Evaluate("=Max(If(" & CercaIn & "=" & Number & ",Row(" & CercaIn & "),""""))")    '<<<<<<<<



e tutto funziona perfettamente

se nel precedente codice inserisco

Dim StrDataArc As String

e sostituisco Number con StrDataArc nella linea evidenziata, il codice non funziona.
non capisco il perchè
cosa bisogna modificare?
saluti grazie
windows 10 - office 2013
miko
Utente Senior
 
Post: 530
Iscritto il: 29/12/09 10:44

Sponsor
 

Re: trovare data con funzione evaluate

Postdi Anthony47 » 06/02/25 21:25

Perdona, puoi descrivere come sono i dati da "lavorare" (magari oltre alla descrizione allega anche una immagine) e da questi dati cosa vuoi ottenere? La descrizione di "come hai provato a fare" non dovrebbe essere fondamentale, visto che non ha funzionato
Ciao, ti aspettiamo...
Avatar utente
Anthony47
Moderatore
 
Post: 19575
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: trovare data con funzione evaluate

Postdi miko » 07/02/25 06:53

Buongiorno,
i dati su cui operare sono importati dal web e, stando a quanto risulta dal formato celle di excel, sono tutti in formato generale.
la successiva immagine mostra i dati così come sono importati ed inseriti nel foglio senza alcuna modifica.

Immagine

devo trovare, in colonna "B", la data-stringa di ricerca:

StrDataArc = Format(DataArc, "D MMMM YYYY - HH:MM") 'OK

ad esempio StrDataArc = "28 dicembre 2023 - 13:00"

e determinare il suo numero di riga, in fig. = 16

l'istruzione:

Codice: Seleziona tutto
LastRowB = .Evaluate("=Max(If(" & CercaIn & "=" & StrDataArc & ",Row(" & CercaIn & "),""""))")    '<<<<<

con le opportune modifiche, funziona per le colonne "D", "E", "F" , ma non funziona per le colonne "B", "C" in quanto ottengo sempre LastRowB = 0 (zero)
saluti grazie
windows 10 - office 2013
miko
Utente Senior
 
Post: 530
Iscritto il: 29/12/09 10:44

Re: trovare data con funzione evaluate

Postdi Raffaele53 » 07/02/25 09:04

Se ricerchi un testo, non puoi mettere "MAX" nella formula (Evaluate, potresti usare confronta). Metido FIND
Codice: Seleziona tutto
Sub Cerca()
Dim AArea As Range, StrDataArc As String, Riga As Long, Rg As Object
Set AArea = Range("B3:B18")
StrDataArc = "8 agosto 2023 - 20:30"
Set Rg = AArea.Find(StrDataArc, LookIn:=xlValues, LookAt:=xlWhole)
If Rg Is Nothing Then
    MsgBox "nessuna corrispondenza"
Else
    Riga = Rg.Row
    MsgBox Riga
End If
Set Rg = Nothing
Set AArea = Nothing
End Sub

Oppure col metodo confronta ....Evaluate (Match(StrDataArc, AArea, 0))
Raffaele53
Utente Junior
 
Post: 54
Iscritto il: 03/10/24 13:06

Re: trovare data con funzione evaluate

Postdi Raffaele53 » 07/02/25 10:10

Codice: Seleziona tutto
Sub Confronta()
Dim LastRowB As Long, StrDataArc As String, CercaIn As Range
Set CercaIn = Range("B1:B18")
StrDataArc = "20 agosto 2023 - 20:30"
LastRowB = Application.WorksheetFunction.Match(StrDataArc, CercaIn, 0)
MsgBox LastRowB
Set CercaIn = Nothing
End Sub
Raffaele53
Utente Junior
 
Post: 54
Iscritto il: 03/10/24 13:06

Re: trovare data con funzione evaluate

Postdi Anthony47 » 07/02/25 13:16

Le proposte d i Raffaele, vedi sopra, sono certamente applicabili facilmente al tuo contesto.
Volendo mantenere il tuo approccio, tramite Evaluate, l'istruzione va scritta tenendo presente che StrDataArc nel caso in oggetto contiene una stringa, quindi va inserita tra Virgolette; quindi, ad esempio:

Codice: Seleziona tutto
LastRowB = Evaluate("=Max(If(" & CercaIn & "=""" & StrDataArc & """,Row(" & CercaIn & "),""""))")

Questa viene tradotta (supponendo che CercaIn e' impostata come "B1:B100") in
Codice: Seleziona tutto
Evaluate(=Max(If(B1:B100="18 agosto 2023 - 20:30",Row(B1:B100),"")))

mentre nella tua formulazione veniva:
Codice: Seleziona tutto
Evaluete(==Max(If(B1:B100=18 agosto 2023 - 20:30,Row(B1:B100),"")))
Avatar utente
Anthony47
Moderatore
 
Post: 19575
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: trovare data con funzione evaluate

Postdi miko » 08/02/25 05:20

Buongiorno.
grazie ad entrambi delle spiegazioni esaustive e macro tutte perfettamente funzionanti.
alla prossima...
saluti
windows 10 - office 2013
miko
Utente Senior
 
Post: 530
Iscritto il: 29/12/09 10:44

Re: trovare data con funzione evaluate

Postdi miko » 09/02/25 12:05

Buongiorno e buona domenica,
applicando la soluzione con Evaluate mi chiedevo se é possibile modificarla
per quanto di mia conoscenza usando Min oppure Max la funzione Evaluate restituisce la prima oppure l'ultima riga
contenente l'occorrenza cercata, nell'ipotesi che vi siano più righe contenenti lo stesso valore.
ma se sappiamo che nel range esiste 1 sola occorrenza si potrebbe scrivere:

LastRowB = Evaluate("=If(" & CercaIn & "=""" & StrDataArc & """,Row(" & CercaIn & "),""""))") '<<<<

senza introdurre il MaX iniziale?
se si come si scrive l'istruzione?
grazie
windows 10 - office 2013
miko
Utente Senior
 
Post: 530
Iscritto il: 29/12/09 10:44

Re: trovare data con funzione evaluate

Postdi Anthony47 » 09/02/25 17:52

Userai la stessa istruzione, con MAX (o volendo con MIN); perche' quell'EVALUATE restituisce una matrice di valori, da cui bisogna estrarre il singolo valore che interessa
Avatar utente
Anthony47
Moderatore
 
Post: 19575
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: trovare data con funzione evaluate

Postdi miko » 20/02/25 15:20

buona sera a tutti
non sapevo che EVALUATE restituiva una matrice di valori,
ora capisco l'uso di Min e Max.
il codice funziona, grazie
windows 10 - office 2013
miko
Utente Senior
 
Post: 530
Iscritto il: 29/12/09 10:44


Torna a Applicazioni Office Windows


Topic correlati a "trovare data con funzione evaluate":


Chi c’è in linea

Visitano il forum: Marius44 e 43 ospiti