Pagina precedente | 1 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

VBA - Trovare riga con funzione Match con più criteri

Ultimo Aggiornamento: 23/01/2021 17:24
Post: 22
Registrato il: 22/04/2017
Città: UDINE
Età: 58
Utente Junior
Excel 2016
OFFLINE
23/01/2021 15:47

VBA - Trovare numero riga con funzione MATCH con più criteri di ricerca - RISOLTO
Sto sviluppando un foglio di lavoro molto più complesso di quello che qui allego, in una tabella devo trovare il numero di riga cercandola con più criteri contenuti nella medesima riga solo in colonne differenti. Esempio:
ColonnaA      ColonaB            ColonnaC
Controllo       Dal                     AL                (<----Intestazioni di colonna)
4000             01/01/2021        15/01/2021
4001             10/02/2021        16/02/2021
4002             10/02/2021        28/02/2021
4003             15/01/2021        31/01/2021

Quindi se i criteri sono "4002 10/02/2021 28/02/2021" dovrebbe restituirmi il valore della riga n. 4 in una variabile per poi poterla poter utilizzare nelle successive righe di programma.

Nel foglio che allego ho elaborato in un Modulo due "Prove" di esempio una la "Prova1" che funziona utilizzando direttamente i riferimenti delle celle del foglio, un'altra la "Prova2" che non mi funziona ed è quella che mi serve utilizza le variabili.

Cortesemente riuscireste a farmi funzionare la Prova2 del mio foglio?

In anticipo ringrazio. Di seguito il codice VBA:

CODICE VBA PROVA 1 - FUNZIONANTE

Sub Prova1()
Riga = Evaluate("=IfError(MATCH(E2&F2&G2,A1:A11&B1:B11&C1:C11,0),"""")")

Range("I2") = Val(Riga)

MsgBox ("Crit1 " & Range("E2") & vbNewLine & _
"Crit2 " & Range("F2") & vbNewLine & _
"Crit3 " & Range("G2") & vbNewLine & _
"Riga " & Riga)
End Sub


CODICE VBA PROVA 2 - NON FUNZIONANTE

Sub Prova2()
Dim Crit1 As Double
Dim Crit2, Crit3 As Date
Dim urR, Riga As Long
Dim Rng1, Rng2, Rng3 As String

Crit1 = Range("E2").Value
Crit2 = Range("F2").Value
Crit3 = Range("G2").Value

urR = Range("A" & Rows.Count).End(xlUp).Row - 1
Rng1 = "A2:A" & urR
Rng2 = "B2:S" & urR
Rng3 = "C2:T" & urR

Riga = Val(Evaluate("=IfError(MATCH(Crit1&Crit2&Crit3,Rng1&Rng2&Rng3,0),"""")"))

Range("I2") = Riga

MsgBox ("Crit1 " & Crit1 & vbNewLine & _
"Crit2 " & Crit2 & vbNewLine & _
"Crit3 " & Crit3 & vbNewLine & _
"Riga " & Riga)
End Sub
[Modificato da LucaT. 23/01/2021 17:31]
Post: 2.361
Registrato il: 21/03/2008
Città: LOCATE VARESINO
Età: 76
Utente Veteran
2007 / 13
OFFLINE
23/01/2021 16:33

ciao


Sub Prova2()
Dim i As Long
Dim cella As Variant
For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
cella = Cells(i, 1).Value
If cella = Range("E2") And Cells(i, 2) = Range("F2") And Cells(i, 3) = Range("G2") Then
Range("J2") = i
Exit For
End If
Next i
MsgBox "Riga di riferimento " & i
End Sub



servono solo quete righe e la funzione logica And
Ciao da locate
excel 2007 / 13
Post: 22
Registrato il: 22/04/2017
Città: UDINE
Età: 58
Utente Junior
Excel 2016
OFFLINE
23/01/2021 17:24

Ottimo locatevaresino, il tuo codice funziona alla perfezione e ho imparato qualcosa di nuovo. 😀

Grazie,

LucaT.
Vota:
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Cerca nel forum
Tag discussione
Discussioni Simili   [vedi tutte]
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 10:27. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com