Condividi:        

Excel confronta colonne e restituisci valori allineati

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

Excel confronta colonne e restituisci valori allineati

Postdi Stellaris » 31/07/18 12:39

Ciao a tutti,
nuovo nuovo nel forum e subito mi lancio con una richiesta di aiutino. Non prendetemi però in giro perchè può essere per voi banale ma io sono veramente ottuso :oops: .
Allego un file di esempio (https://www.dropbox.com/s/rq7hrvhaqu57q ... xlsx?dl=0) e vado a spiegarvi cosa vorrei fare.
Forse serve una macro (ma mi dovreste dire anche come fare :undecided: ).
Ho due tabelle che per comodità ho messo in un solo file riportato nell'esempio e che corrispondono alle colonne A,B,C e E,F. Nella prima ho dunque tre colonne: Nome, Cognome, Stanza.
Nella seconda ho due colonne: Nome, Telefono.
Come nell'esempio vorrei confrontare A,B,C verso E,F per ottenere quattro colonne H,I,J,K (o anche più se considero che possono aumentare le colonne da confrontare perchè magari aggiungo altri valori (riga uno, dove posso aggiungere il campo email)) allineate con le righe corrispondenti dalle colonne.
Come se volessi ordinare in ordine alfabetico la colonna A, espandere la selezione, ma integrare anche i dati presenti nella colonna F.
Ho cercato nel forum, ho trovato cose simili ma quel tanto diverse che per uno come me mi hanno mandato in tilt. Sorry!
Help, help :mmmh: come faccio??
Grazie mille,
Franco
Stellaris
Newbie
 
Post: 3
Iscritto il: 31/07/18 12:11

Sponsor
 

Re: Excel confronta colonne e restituisci valori allineati

Postdi Anthony47 » 31/07/18 13:09

La struttura dati che hai pubblicato non si presta a grandi elaborazioni, comunque il mio suggerimento e' che usi "Cerca.Vert" per cercare nella tabella del telefono e aggiungere il dato alla tabella originale.
Es, in D2 inserisci la formula
Codice: Seleziona tutto
=CERCA.VERT(A2;E:F;2;0)

Poi copia verso il basso per avere il "telefono" anche degli altri nominativi

E se non risolvi con questo spunto allora pubblica una struttura dati piu' realistica.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19221
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Excel confronta colonne e restituisci valori allineati

Postdi Stellaris » 31/07/18 15:23

Non ci riesco. Forse perchè quello che voglio fare è più complesso di come ho pensato.
Allego un nuovo file con una struttura più vicina al mio obiettivo.
Una serie di dati, da confrontare con una seconda serie per ottenere una terza serie di dati "merged" tra le prime due, allineati e con i campi uguali copiati dalla serie dove erano presenti nella serie dove mancavano.
Ecco il link:
https://www.dropbox.com/s/rq7hrvhaqu57q ... .xlsx?dl=0
Stellaris
Newbie
 
Post: 3
Iscritto il: 31/07/18 12:11

Re: Excel confronta colonne e restituisci valori allineati

Postdi Anthony47 » 01/08/18 23:38

Ho speso mezz'ora a cercare di capire quale e' la logica dietro dati cosi' organizzati; ho concluso che non c'e'. Mi limito quindi a rispondere a come passare dalle due tabelle alla tabella riepilogativa, cosi' come sono state presentate; cosa che si puo' fare tramite questa macro:
Codice: Seleziona tutto
Sub ConsSolida()
Dim DT1 As Range, DT2 As Range, Out1 As Range
Dim myC As Range, cOut As Long, aAa, bBb
'
Set DT1 = Sheets("Foglio1").Range("A2")     '<<< Il primo intervallo
Set DT2 = Sheets("Foglio1").Range("E1")     '<<< Il secondo intervallo
Set Out1 = Sheets("Foglio2").Range("A1")    '<<< L'area di output
'
Set DT1 = Range(DT1, DT1.Offset(100, 0).End(xlUp))
Set DT2 = Range(DT2, DT2.Offset(100, 4).End(xlUp))
'Copia il "secondo" blocco:
DT2.Copy Out1
'Controlla il primo blocco, preleva Numero o aggiunge riga:
For Each myC In DT1
    aAa = Application.Match(myC, Application.WorksheetFunction.Index(DT2, 0, 1), 0)
    bBb = Application.Match(myC.Cells(1, 2), Application.WorksheetFunction.Index(DT2, 0, 2), 0)
    If IsError(aAa) Then aAa = 0
    If IsError(bBb) Then bBb = 999
    If (aAa = bBb Or myC.Cells(1, 2) = "") And aAa <> 0 Then
        Out1.Cells(aAa, 3) = myC.Offset(0, 2).Value
    Else
        myC.Resize(1, 3).Copy Out1.Offset(1000, 0).End(xlUp).Offset(1, 0)
        Beep
    End If
Next myC
End Sub

Il codice va messo in un "Modulo standard" del vba; per questo, partendo da Excel:
-premi Alt-F11 per aprire l'editor delle macro
-Menu /Inserisci /Modulo
-Copia il codice e inseriscilo nel frame vuoto del modulo cosi' creato
Le righe marcate <<< vanno personalizzate come da commento.

Successivamente, quando i dati di partenza sono pronti bisogna avviare la Sub ConsSolida:
-premere At-F8, scegliere ConsSolida dall'elenco delle macro disponibili, premere Esegui.

Ribadisco che i dati mi sembrano anarchici e ingestibili; quando si preparano dei dati per la loro elaborazione automatica in genere si parte da una "anagrafica" (i dati fissi, quali Stanza /Numero /Piano) e ad essi si agganciano i dati variabili (es le persone o i servizi), potendo cosi' associare ai dati variabili i dati fissi.
In questi dati non vedo nulla di simile, ne' vedo una gerarchia chiara con cui essi andrebbero riorganizzati.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19221
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Excel confronta colonne e restituisci valori allineati

Postdi Stellaris » 03/08/18 08:27

Grazie mille Anthony. Hai perfettamente ragione, i dati così sono ingestibili. Hai fatto un lavoro enorme per darmi una mano, e ti ho fatto pure perdere tempo. Mi dispiace. Però mi hai dato anche enormi spunti di lavoro. Sia con il suggerimento di usare "Cerca.Vert" (grazie al quale sono riuscito a mettere un po di ordine e le cui enormi potenzialità mi erano prima sconosciute) sia con la macro che mi permette di risolvere tante cose. Ci sto lavorando e piano piano sono convinto che con i preziosi consigli che mi hai dato ne verrò a capo.
Insomma...grazie mille.
Stellaris
Newbie
 
Post: 3
Iscritto il: 31/07/18 12:11


Torna a Applicazioni Office Windows


Topic correlati a "Excel confronta colonne e restituisci valori allineati":


Chi c’è in linea

Visitano il forum: Nessuno e 59 ospiti