Confrontare due colonne excel ed estrarre gli elementi univoci in una terza colonna

Anonimo
2023-09-02T11:30:47+00:00

Buonpomeriggio a tutti;

è già ormai piu' di qualche settimana che provo a trovare una soluzione da solo ma la mia poca conoscenza di excel non mi permette di trovare una soluzione.

Come già spiegato nel titolo ho un file excel con due colonne piene di valori. I valori che sono presenti nella colonna B e mancano nella colonna A vorrei mi fossero riportati in una terza colonna.

Ho fatto un miliardo di tentativi senza esito, ora mi sono arenato sulla seguente formula:

=INDIRETTO(TESTO(MIN(SE(($A$3:$B$5000<>"")*(CONTA.SE($E$2:E2;$A$3:$B$5000)=0);RIGHE($3:$5000)*100+COLONNE($A:$B);7^8));"R0C00");)&""

per praticità vi invio il mio file sperando possa aiutarvi a capire.

https://we.tl/t-OMu5I5k9rG

Potreste darmi una mano?

Grazie in anticipo

Michele

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Eleuterio Tedeschi 18,750 Punti di reputazione Moderatore volontario
2023-09-03T15:45:09+00:00

Si Eleuterio tutto corretto!!!

Non so come, ma avevo inserito il calcolo manuale delle formule, percui non visualizzavo il risultato corretto.

Dunque problema risolto anche se non posso attuarlo :-(.

Dato il numero elevato di righe da calcolare, l'elaborazione diventa lunga e macchinosa freezando il foglio per alcuni minuti.

Provero' a lavorare con qualche riga VBA.

Grazie ancora.

Michele

Prova allora con il VBA, anche se trasformando tutto in tabelle si sarebbe potuto fare anche con Power Query.

Ecco il codice, dovrebbe essere veloce lavorando con gli array e senza scomodare per ora il Dictionary:

Sub Doppioni() 

Dim arrA, arrB, varB, lngR As Long 

    arrA = Range("A3:A" & Cells(Rows.Count, 1).End(xlUp).Row) 

    arrB = Range("B3:B" & Cells(Rows.Count, 2).End(xlUp).Row) 

    With Application 

        .ScreenUpdating = False 

        .Calculation = xlCalculationManual 

    End With 

    Range("C3:C65000").ClearContents 

    lngR = 3 

    For Each varB In arrB 

        If IsError(Application.Match(varB, arrA, 0)) Then 

            Cells(lngR, 5).Value = varB 

            lngR = lngR + 1 

        End If 

    Next varB 

    With Application 

        .ScreenUpdating = True 

        .Calculation = xlCalculationAutomatic 

    End With 

End Sub

Ciao.

La risposta è stata utile?

1 persona ha trovato utile questa risposta.
0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Eleuterio Tedeschi 18,750 Punti di reputazione Moderatore volontario
2023-09-02T11:47:34+00:00

Per prima cosa trasforma tutto in numero, ti posizioni in B4, premi CTRL+SPAZIO e converti usando il triangolo di avviso:

poi metti in E3

=SE.ERRORE(INDIRETTO("B"&AGGREGA(15;6;SE(NON(CONTA.SE($A$3:$A$1057;$B$3:$B$1057));RIF.RIGA($B$3:$B$1057));RIF.RIGA(A1)));"")

e la tiri in basso fino ad avere celle vuote,

ciao.

La risposta è stata utile?

1 persona ha trovato utile questa risposta.
0 commenti Nessun commento

10 risposte aggiuntive

Ordina per: Più utili
  1. Eleuterio Tedeschi 18,750 Punti di reputazione Moderatore volontario
    2023-09-02T14:03:59+00:00

    Ciao Eleuterio,

    grazie per aver risposto.

    Purtroppo anche dopo la conversione in numeri, ed utilizzando la formula da te suggerita non riesco ad avere gli unici nella colonna E.

    Pensando ad un errore di batitura ho provato a sostituire l'ultimo riferimento riga da A1 ad A3 ma non era quello l'ostacolo.

    Grazie ancora per il tuo tempo.

    Michele

    Premesso che non fa differenza, per ora, non hai chiesto gli univoci.

    Ti assicuro che la formula funziona, ma non sapendo quale versione stai usando, se non riesci confermala con CTRL+SHIFT+ENTER, vedrai comparire le parentesi graffe a contornare la formula se l'hai fatto correttamente.

    Ciao.

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Gianfranco55 25,190 Punti di reputazione Moderatore volontario
    2023-09-02T13:39:38+00:00

    Ciao

    non devi scrivere RIGHE()

    ma RIF.RIGA()

    =INDIRETTO(TESTO(MIN(SE(($A$3:$B$9000<>"")*(CONTA.SE($E$2:E2;$A$3:$B$9000)=0);RIF.RIGA($3:$9000)*100+RIF.COLONNA($A:$B);7^8));"R0C00");)&""

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2023-09-02T12:43:02+00:00

    Ciao Eleuterio,

    grazie per aver risposto.

    Purtroppo anche dopo la conversione in numeri, ed utilizzando la formula da te suggerita non riesco ad avere gli unici nella colonna E.

    Pensando ad un errore di batitura ho provato a sostituire l'ultimo riferimento riga da A1 ad A3 ma non era quello l'ostacolo.

    Grazie ancora per il tuo tempo.

    Michele

    La risposta è stata utile?

    0 commenti Nessun commento