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

Differenza tra due elenchi.

Ultimo Aggiornamento: 21/03/2018 20:39
Post: 124
Registrato il: 24/12/2016
Utente Junior
Excel per Mac vers. 16.17
OFFLINE
18/03/2018 00:58

Ciao, ho un elenco (elenco A) di iscritti ad un'attività di volontariato di un'Associazione (circa 400 persone). Tutte queste persone devono fare la domanda di socio all'Associazione. Al momento di queste 400 persone solamente 150 (elenco B) hanno richiesto l'adesione a socio, mancano le altre 250. Devo mandare un'avviso, tramite mail solamente a queste 250 persone, è possibile? Devo "sottrarre" l'Elenco B dall'Elenco A. Grazie.
Post: 5.349
Registrato il: 14/11/2004
Utente Master
Office 2019
OFFLINE
18/03/2018 08:37

Confronta Elenchi
Ciao eccoti una macro che fa il lavoro

Sub Mancanti()
Dim sh1 As Worksheet, sh2 As Worksheet, sh3 As Worksheet
Dim r, c, x, y, d1, d2, rng1, rng2, tt As Boolean

Set sh1 = Worksheets("Elenco A")
Set sh2 = Worksheets("Elenco B")
Set sh3 = Worksheets("Elenco C")
sh3.Activate
Range("E2:F1000").ClearContents
r = sh1.Cells(Rows.Count, 5).End(xlUp).Row
Set rng1 = sh1.Range("E2:F" & r)
r = sh2.Cells(Rows.Count, 5).End(xlUp).Row
Set rng2 = sh2.Range("E2:F" & r)
r = 2
c = 5
For x = 1 To rng1.Count
    d1 = rng1(x, 1)
    d2 = rng1(x, 2)
    tt = False
    For y = 1 To rng2.Count
        If d1 = rng2(y, 1) And d2 = rng2(y, 2) Then tt = True: Exit For
    Next y
    If tt = False Then
        sh3.Cells(r, c) = d1
        sh3.Cells(r, c + 1) = d2
        r = r + 1
    End If
Next x
End Sub


nel foglio "Elenco C" vengono scritti i nominativi mancanti, ho messo un pulsante sul Foglio "Elenco C" per lanciare la macro.

Ciao By Sal
se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
Post: 124
Registrato il: 24/12/2016
Utente Junior
Excel per Mac vers. 16.17
OFFLINE
18/03/2018 11:14

Ciao. scusami, ma uso excel per mac e le macro.....non riesco a farle funzionare. all'inizio mi avevate già consigliato macro ma ....ripeto...non riesco a farle funzionare. Va ben lo stesso. Mi spiace.... E' possibile con le formule matriciali? Grazie
Post: 3.678
Registrato il: 21/06/2013
Città: NAPOLI
Età: 70
Utente Master
Excel 365
OFFLINE
18/03/2018 12:08

Alex le macro funzionano anche su Mac.

Devi andare nell'editor di VBA inserire un modulo e copiarvi il codice di by Sal.

Alfredo
Post: 125
Registrato il: 24/12/2016
Utente Junior
Excel per Mac vers. 16.17
OFFLINE
18/03/2018 12:27

scusa Alfredo ma ho qualche difficoltà io....me ne avete suggerite altre (in passato ho eseguito esattamente quello che mi hai appena suggerito) e non riesco a farle funzionare...scusatemi....ora ci riprovo ma ..... Tra l'altro il file di esempio che mi ha mandato Sal a me non funziona.
Post: 3.679
Registrato il: 21/06/2013
Città: NAPOLI
Età: 70
Utente Master
Excel 365
OFFLINE
18/03/2018 12:39

Io non ho il Mac ma hai abilitato su questo le macro?

Guarda qui

http://www.forumexcel.it/forum/51-imparando-excel-amp-vba-tutorial-di-excel/5037-corso-sul-vba-di-excel

Ripeto le macro su Mac funzionano; bisogna solo trovare il modo.

L'unica differenza è che su Mac non si possono inserire controlli ActiveX sul foglio.

Prova ad inserire una forma o un controllo modulo ed associa la macro a questi.
[Modificato da alfrimpa 18/03/2018 13:05]

Alfredo
Post: 5.350
Registrato il: 14/11/2004
Utente Master
Office 2019
OFFLINE
18/03/2018 19:08

Confronta Elenchi
Ciao, la macro, lanciala direttamente, senza premere sul pulsante, che come ha detto Alfredo che Saluto essendo una forma non funziona.

Premi alt+F8 dovrebbe comparire l'elenco delle macro seleziona la macro e premi esegui.

non so il pulsante Alt sul mac quale sia dovrebbe essere cmd.

Ciao By Sal [SM=x423051]
se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
Post: 126
Registrato il: 24/12/2016
Utente Junior
Excel per Mac vers. 16.17
OFFLINE
18/03/2018 20:27

la macro funziona però....scusami...ma ho dovuto modificare il file. Al posto di Elenco A, B e C devo mettere i nomi nuovi dei fogli. E' sufficiente entrare nella macro e cambiarli vero? poi devo cambiare anche gli intervalli delle celle? Grazie
Post: 5.351
Registrato il: 14/11/2004
Utente Master
Office 2019
OFFLINE
19/03/2018 11:14

Confronta Elenchi
Ciao Si puoi fare cosi,ecco perche cerchiamo dei file quanto più uguali agli originali, in modo che poi non si debbano variare fogli od intervalli.

Ciao By Sal [SM=x423051]

se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
Post: 127
Registrato il: 24/12/2016
Utente Junior
Excel per Mac vers. 16.17
OFFLINE
19/03/2018 19:50

Ciao. Immagino, ti allegherei volentieri il file originale ma sono 350 persone con tutti i dati, dall'indirizzo mail all'indirizzo di casa, compreso data e luogo di nascita e codice fiscale. Capite che purtroppo non posso divulgare. Ho cercato di mandarvi il file più aggiornato possibile ma.....
Comunque grazie.
Post: 3.266
Registrato il: 28/06/2011
Città: AGORDO
Età: 70
Utente Master
2013
OFFLINE
20/03/2018 12:31

>>>ti allegherei volentieri il file originale ma sono 350 persone
Ciao a tutti
Fai una copia del files, in ogni colonna dove ci sono dati sensibili nella riga2 scrivi A1 (tranne in colonna N. & Tessera n°)
Adesso trascina sino in fondo queste celle e il files non è più sensibile nei dati (solo per vedere la struttura)
Excel 2013
Post: 128
Registrato il: 24/12/2016
Utente Junior
Excel per Mac vers. 16.17
OFFLINE
20/03/2018 19:33

Grazie del suggerimento.
Ho allegato il file.
Faccio parte di un'Associazione che organizza delle attività (Foglio "Iscritti"). A queste attività possono partecipare SOLO i soci (Foglio "Soci"). Quest'ultimo elenco lo estraggo dal gestionale dell'Associazione provinciale. Possibilmente vorrei "produrre" un elenco (Foglio "NON Soci") in cui ci siano i nominativi di coloro che non sono ancora soci (Foglio "Iscritti" - Foglio "Soci") per poter loro inviare la comunicazione di associarsi, onde evitare di spedire le comunicazioni a tutti. Specifico che ho un mac con excel per Mac. Grazie.
Post: 3.269
Registrato il: 28/06/2011
Città: AGORDO
Età: 70
Utente Master
2013
OFFLINE
20/03/2018 23:15

Mi è sembrato giusto fare il confronto...
Trà "iscritti" colonna C=Indirizzo email .... e trà "Soci" colonna R=E-mail
Dovrebbe essere giusto (anche se aumentano le righe), inserisci il codice in un MODULO
vb
Option Explicit
Sub Trova()
Application.ScreenUpdating = False
Dim Strg As String, Rg As Object, Area As Range
Dim X As Long, Rr As Long, Ur1 As Long, Ur2 As Long, Nr As Long, Val As Long
Ur1 = Sheets("NON Soci").Range("A" & Rows.Count).End(xlUp).Row
If Ur1 > 1 Then Sheets("NON Soci").Range("A2:Z" & Ur1).Clear 'ClearContents
Ur1 = Sheets("Iscritti").Range("A" & Rows.Count).End(xlUp).Row ' quanti sono
Ur2 = Sheets("Soci").Range("A" & Rows.Count).End(xlUp).Row ' quanti sono
Set Area = Sheets("Soci").Range("R1:R" & Ur2) ' colonna E-mail
'per tutti gli inscritti, cerco "Indirizzo email" della colonna C
Nr = 2
For X = 2 To Ur1
Set Rg = Area.Find(Sheets("Iscritti").Cells(X, 3), LookIn:=xlValues, LookAt:=xlWhole)
If Rg Is Nothing Then
    Sheets("Iscritti").Range(Sheets("Iscritti").Cells(X, 1), Sheets("Iscritti").Cells(X, 28)).Copy
    Sheets("NON Soci").Cells(Nr, 1).PasteSpecial
    Nr = Nr + 1
End If
Next X
MsgBox "Trovati... " & Nr - 1 & " NON soci"
Application.ScreenUpdating = True
Set Area = Nothing
Set Rg = Nothing
End Sub
[Modificato da raffaele1953 20/03/2018 23:22]
Excel 2013
Post: 129
Registrato il: 24/12/2016
Utente Junior
Excel per Mac vers. 16.17
OFFLINE
21/03/2018 19:15

Caspita !!!!! Grazie !!!!
Funziona. Ne trova un po' di più della differenza fra i due elenchi: L'elenco Iscritti è composto da 335 ragazzi. L'elenco "Soci" aggiornato ad oggi è composto da 271 ragazzi. La differenza dovrebbe essere 64, invece l'elenco "NON Soci" riporta 171 ragazzi. E' comunque un ottimo risultato, anche perchè se riesco nella mia "ignoranza" di excel a modificarlo, ho 4/5 altri elenchi da filtrare cosi. Grazie.
Post: 130
Registrato il: 24/12/2016
Utente Junior
Excel per Mac vers. 16.17
OFFLINE
21/03/2018 19:19

Forse ho capito il motivo: la ricerca è effettuata sulla mail. é possibile per cognome e nome? perchè ci sono parecchie mail uguali in quanto un genitore iscrive due o tre figli. A me serve la mail perchè devo mandare delle comunicazioni ma la ricerca va fatta sui nomi e cognomi. Grazie
Post: 3.271
Registrato il: 28/06/2011
Città: AGORDO
Età: 70
Utente Master
2013
OFFLINE
21/03/2018 19:34

Nel Tuo allegato, ho copiato la colonna C (Iscritti 335 utenti)
Nella colonna R (Soci 201 utenti) eliminando tutte le righe in più
Se modifichi questa riga MsgBox "Trovati... " & Nr - 2 & " NON soci"
Trovati 134 non soci (335-201=134). Il VBA è giusto, casomai le EMAIL sono scritte errate (oppure con spazi finali).

Dovresti mettere in Soci, colonna AA cella AA2 la formula che unisce Cognome + Nome =C2&D2 e trascinarla giù
vb
Option Explicit
Sub Trova()
Application.ScreenUpdating = False
Dim Strg As String, Rg As Object, Area As Range
Dim X As Long, Rr As Long, Ur1 As Long, Ur2 As Long, Nr As Long, Val As Long
Ur1 = Sheets("NON Soci").Range("A" & Rows.Count).End(xlUp).Row
If Ur1 > 1 Then Sheets("NON Soci").Range("A2:Z" & Ur1).Clear 'ClearContents
Ur1 = Sheets("Iscritti").Range("A" & Rows.Count).End(xlUp).Row ' quanti sono
Ur2 = Sheets("Soci").Range("A" & Rows.Count).End(xlUp).Row ' quanti sono
Set Area = Sheets("Soci").Range("AA1:AA" & Ur2) ' colonna E-mail
'per tutti gli inscritti, cerco "Indirizzo email" della colonna C
Nr = 2
For X = 2 To Ur1
Strg = Sheets("Iscritti").Cells(X, 4) & Sheets("Iscritti").Cells(X, 5)
Set Rg = Area.Find(Strg, LookIn:=xlValues, LookAt:=xlWhole)
If Rg Is Nothing Then
    Sheets("Iscritti").Range(Sheets("Iscritti").Cells(X, 1), Sheets("Iscritti").Cells(X, 28)).Copy
    Sheets("NON Soci").Cells(Nr, 1).PasteSpecial
    Nr = Nr + 1
End If
Next X
MsgBox "Trovati... " & Nr - 2 & " NON soci"
Application.ScreenUpdating = True
Set Area = Nothing
Set Rg = Nothing
End Sub
[Modificato da raffaele1953 21/03/2018 19:49]
Excel 2013
Post: 131
Registrato il: 24/12/2016
Utente Junior
Excel per Mac vers. 16.17
OFFLINE
21/03/2018 20:39

Grande !!!!
Direi ottimo!!!!
diciamo che siamo passati a 89 da 171, un grande risultato. Secondo la matematica dovrebbero essere 64 ma qualcuno credo sia perchè nell'elenco soci ho anche altri nominativi della stessa età che non sono nell'elenco iscritti e che non riesco a togliere dall'elenco soci. E' un problema di filtri del gestionale. Va benissimo cosi. Grazie !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Ultima domanda, se dovessi utilizzarlo per filtrare altri elenchi che dovrò costruire il prossimo mese è sufficiente che sostituisca i nome degli elenchi e i range? Grazie !!!!
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]
Confronto tra due listini (6 messaggi, agg.: 06/02/2018 14:30)
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 02:03. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com