Trovare differenze tra gli elenchi (Microsoft Excel)
Non è insolito che le persone conservino le informazioni sui clienti nei fogli di lavoro di Excel. Se hai un foglio di lavoro che contiene i nomi di tutti i tuoi clienti e un altro foglio di lavoro che contiene i nomi dei tuoi clienti attivi, potresti voler usare le capacità di Excel per scoprire chi sono i tuoi clienti inattivi.
Esistono diversi modi per eseguire questa operazione. Il primo è attraverso l’uso di CERCA.VERT. Questa funzione del foglio di lavoro funziona alla grande, a condizione che gli elenchi di clienti siano disposti in ordine alfabetico. Un modo per utilizzare la funzione è aggiungere una colonna di stato a “tutti i client”
foglio di lavoro. Per prima cosa, assicurati di selezionare i tuoi client attivi e di chiamarli “Attivi”. (Il modo in cui si definisce un nome per un intervallo di celle selezionato è trattato in altri ExcelTips.) Quindi, nell’elenco completo dei client, aggiungere una colonna (denominata Stato) a destra dei dati esistenti. Nelle celle della colonna Stato, utilizza la seguente formula:
=IF(ISNA(VLOOKUP(A2,Active,1,FALSE)),"Inactive","Active")
Questa formula presuppone che il nome del cliente sia nella colonna A del foglio di lavoro corrente. Il risultato della formula è “Attivo” o “Inattivo”, a seconda che esista una corrispondenza tra il nome in A2 e i nomi nell’elenco Attivo.
Una volta impostata la colonna Stato, è possibile utilizzare la funzionalità Filtro automatico di Excel per filtrare l’elenco in base alla colonna di stato. È quindi possibile visualizzare facilmente i client inattivi, come desiderato.
Va notato che mentre l’esempio precedente utilizza la funzione del foglio di lavoro CERCA.VERT, è altrettanto facile comporre altre formule che utilizzano funzioni come CERCA.ORIZZ e CONFRONTA. Quello che usi dipende dalle tue preferenze personali e dal modo in cui sono disposti i tuoi dati.
Un’altra soluzione consiste nell’usare una macro per confrontare ogni nome nell’elenco “tutti i client” con i nomi nell’elenco “client attivi”. Se non viene trovata alcuna corrispondenza, il nome può essere tranquillamente aggiunto ai “client inattivi”
elenco. La seguente macro fa proprio questo:
Sub ListInactive() Dim cell As Range Dim SearchRng As Range Set SearchRng = Worksheets("Sheet2").Range("A:A") Counter = 1 'First row on Sheet3 contains headings For Each cell In Worksheets("Sheet1") .Range("A2:A1000") _ .SpecialCells(xlCellTypeConstants) ID = cell 'Client ID NM = cell.Offset(0, 1) 'Client name MatchRow = 0 On Error Resume Next MatchRow = WorksheetFunction.Match(ID, _ SearchRng, 0) On Error GoTo 0 If MatchRow = 0 Then Counter = Counter + 1 Worksheets("Sheet3").Cells(Counter, 1) = ID Worksheets("Sheet3").Cells(Counter, 2) = NM End If Next cell End Sub
La macro fa diverse ipotesi sui dati esaminati.
In primo luogo, si presuppone che il foglio di lavoro “tutti i client” sia il primo foglio di lavoro e che il foglio di lavoro “client attivi” sia il secondo. Inoltre, si presume che il terzo foglio di lavoro sia vuoto e finirà per contenere l’elenco dei client inattivi. Inoltre, si presume che la colonna A contenga un numero ID client univoco e la colonna B contenga il nome del client. Al termine della macro, il terzo foglio di lavoro contiene i numeri di client ei nomi di tutti i client inattivi.
_Nota: _
Se desideri sapere come utilizzare le macro descritte in questa pagina (o in qualsiasi altra pagina dei siti ExcelTips), ho preparato una pagina speciale che include informazioni utili.
ExcelTips è la tua fonte di formazione economica su Microsoft Excel.
Questo suggerimento (2053) si applica a Microsoft Excel 97, 2000, 2002 e 2003.