Buondì a tutti.
Premetto innanzitutto che non sono avvezzo all'utilizzo di forum, pertanto potrei non conoscere (e quindi rispettare) varie usanze alle quali si è soliti attenersi.
Grazie della comprensione!
Espongo subito la domanda:
avrei la necessità di creare una Macro (utilizzo Excel 2019) che possa filtrare dei valori utilizzando come criteri dei valori inseriti in un altro file .xlsx, allego delle immagini per aiutarmi nello spiegare ciò che intendo.
Da un file .xlsx strutturato come segue, vado ad associare a dei Nominativi (ed un Card ID univoco) ad un Punto, in questo caso Punto A, Punto B e Punto C.

* Nomi e Cognomi o eventuali riferimenti sono puramente inventati e casuali *
Dovrei quindi elaborare un Report xlsx (esportato da un software) strutturato come l'immagine sopra, ma senza la colonna con intestazione "Punto", ovvero solamente con la colonna "Nome e Cognome" e la colonna "Card ID".
Avrei necessità che la Macro riesca in autonomia a confrontare i valori che sono presenti nel Report esportato dal software, verificare se il Card ID è presente nel file in cui sono associati i Nominativi ai Punti: se è presente, mantenere Nominativo e Card ID in uno degli elenchi dei vari Punti (come da immagine sotto), mentre se non è presente mantenere sempre il valore ma nell'elenco con intestazione "Altro".

Trascrivo ora il codice VBA che sto utilizzando in questo momento, ovvero l'unica alternativa che sono riuscito a finalizzare:
Sub macro()
Sheets("Tabella").Select
Range("A1").Select
' punto A - array
ActiveSheet.Range("$A$1:$B$1048576").AutoFilter Field:=2
ActiveSheet.Range("$A$1:$B$1048576").AutoFilter Field:=2, Criteria1:=Array( _
"111111", "444444"), Operator:=xlFilterValues
' (esempio)
Cells.Select
Selection.Copy
Sheets("Punto A").Select
Range("A1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Range("A1").Select
' elimina già elaborati
Sheets("Tabella").Select
Range("B2:B1048576").Select
Selection.EntireRow.Delete
ActiveSheet.showalldata
Range("A1").Select
' punto B - array
ActiveSheet.Range("$A$1:$B$1048576").AutoFilter Field:=2
ActiveSheet.Range("$A$1:$B$1048576").AutoFilter Field:=2, Criteria1:=Array( _
"222222", "555555"), Operator:=xlFilterValues
' (esempio)
Cells.Select
Selection.Copy
Sheets("Punto B").Select
Range("A1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Range("A1").Select
' elimina già elaborati
Sheets("Tabella").Select
Range("B2:B1048576").Select
Selection.EntireRow.Delete
ActiveSheet.showalldata
Range("A1").Select
' punto C - array
ActiveSheet.Range("$A$1:$B$1048576").AutoFilter Field:=2
ActiveSheet.Range("$A$1:$B$1048576").AutoFilter Field:=2, Criteria1:=Array( _
"333333"), Operator:=xlFilterValues
' (esempio)
Cells.Select
Selection.Copy
Sheets("Punto C").Select
Range("A1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Range("A1").Select
' elimina già elaborati
Sheets("Tabella").Select
Range("B2:B1048576").Select
Selection.EntireRow.Delete
ActiveSheet.showalldata
Range("A1").Select
' Altro - array
Sheets("Tabella").Select
Cells.Select
Selection.Copy
Sheets("Punto C").Select
Range("A1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Range("A1").Select
' elimina già elaborati
Sheets("Tabella").Select
Cells.Select
Selection.Delete Shift:=xlUp
Range("A1").Select
End Sub
La Macro così funziona, ma il problema è che nel caso ci sia necessità di aggiungere, rimuovere o modificare un Nominativo e Card ID associato ad un Punto, bisogna modificare il codice della Macro.
Per i filtri ho utilizzato degli Array perché originariamente sarebbe strutturata per filtrare più di 1000 Card ID, inseriti fin'ora manualmente
Ho provato a seguire alcune guide online per impostare dei filtri avanzati utilizzando come criteri dei dati inseriti in un altro foglio nello stello file Excel, ma non funziona (cioè: non viene filtrato alcun valore e vengono mantenuti tutti i dati nel primo Punto, e quindi nei successivi non ne sono presenti).
Forse non ho effettuato correttamente le ricerche, ma comunque non sono riuscito a trovare una soluzione a questo.
Vi ringrazio intanto per la paziente lettura.
Rimango quindi in attesa
Grazie in anticipo,
- Gabriele