Condividi:        

[excel] trovare valori non comuni a due colonne

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] trovare valori non comuni a due colonne

Postdi The_jackal » 16/06/08 11:44

Ciao ragazzi chied ancora il vostro aiuto, fiducioso...il mio problema e` ho due colonne di dati
Col A Col b
mela pera
pera banana
pera pera
pesca pera

Vorrei eliminare i valori comuni (colonna A-colonna B) quindi risultato della colonna C dovrebbe essere pesca mela, (...ricordo di averlo fatto una volta (ma ho riprovato e non funziona) sottraendo una colonna all`altra)...ma mi da #VALUE quindi presumo che una cosa del genere sia colpa del fatto che mi ricordo malissimo..
Uso sempre excel 2000 in inglese
Grazie a tutti....
The_jackal
Utente Junior
 
Post: 21
Iscritto il: 29/05/08 12:16

Sponsor
 

Re: [excel] trovare valori non comuni a due colonne

Postdi Anthony47 » 16/06/08 14:52

Quindi vuoi della colonna A mantenere solo i dati che non sono presenti in colonna B?
Per questo puoi usare in C1 la formula
Codice: Seleziona tutto
=CONTA.SE(B:B;A1)
poi copi la formula verso il basso; poi puoi usare la colonna C per filtrare i dati (0 quelli non presenti in B, se vuoi copiarli; >0 quelli presenti in B, se vuoi cancellarne le righe); oppure usi Conta.Se in combinazione con il SE per riportare A1 (se la conta=0) oppure una stringa nulla (se la conta >0), tipo:
Codice: Seleziona tutto
=SE(CONTA.SE(B:B;A1)=0;A1;"")

Ovviamente Conta.se=Countif e Se=If; come separatore dei campi immagino che devi mettere la “virgola”.

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

Re: [excel] trovare valori non comuni a due colonne

Postdi By Sal » 17/06/08 08:23

Ciao anthony, un saluto carissimo, e da molto tempo che non ti leggo, ogni tanto faccio una capatina, però dall'ultima volta è passato proprio molto tempo.
Tempo fa ho avuto anche io il problema di un confronto tra due colonne, e per la verità non trovavo mai nessuna formula che mi soddisfacesse, restava sempre qualcosa da fare, o non riportava tutti i dati, oppure li saltava proprio, ammettendo che alcuni dati erano presenti sulla seconda colonna e non sulla prima, non li prendeva in esame.
Per tagliare la testa al toro, mi sono creato questa UDF, che ti metto a disposizione, per gli usi che ne vorrai fare, ed anche per gli utenti del forum, si tratta della macro per lanciare la UDF e la funzione vera e propria.
Basta inserire il numero delle colonne separate da punti e della colonna del risultato, mettendo il confronto sulle colonne "A-B" ed il risultato sulla "D", basta scrivere nell'InputBox "1.2.4" senza apici ed avrai tutte le voci univoche delle colonne "A-B", nella colonna "D", ecco il codice.

Codice: Seleziona tutto
Sub confronta()
x = InputBox("Inserire le colonne separate dal Punto " & Chr(10) & "le prime due da Comparare la terza per il risultato")
If x = "" Then Exit Sub
Call CnfrCol(x)
End Sub


Public Function CnfrCol(Dat1)
Dim dat(1 To 3)
n = 1
dx = Len(Dat1) + 1
For x = 1 To dx
  c1 = Mid(Dat1, x, 1)
  If c1 = "." Or x = dx Then
    dat(n) = Val(c2)
    c2 = ""
    n = n + 1
  Else
    c2 = c2 + c1
  End If
Next x
x1 = dat(1)
x2 = dat(2)
x3 = dat(3)
n1 = 2

r1 = Cells(Rows.Count, x1).End(xlUp).Row
r2 = Cells(Rows.Count, x2).End(xlUp).Row

If r1 = r2 Then rx = r1
If r1 < r2 Then rx = r2
If r1 > r2 Then rx = r1

For x = 2 To rx
  xa = Cells(x, x1)
  For Z = 2 To rx
    If xa = "" Then Exit For
    If xa = Cells(Z, x2) Then
      If n1 = 2 Then
        Cells(n1, x3) = xa
      Else
        trov = 0
        For y = 2 To n1
          If xa = Cells(y, x3) Then
            trov = 1
            Exit For
          End If
        Next y
        If trov = 0 Then
          Cells(n1, x3) = xa
          n1 = n1 + 1
        End If
      End If
    Else
      trov = 0
      For y = 2 To n1
        If xa = Cells(y, x3) Then
          trov = 1
          Exit For
        End If
      Next y
      If trov = 0 Then
        Cells(n1, x3) = xa
        n1 = n1 + 1
      End If
    End If
  Next Z
Next x
For x = 2 To rx
  xa = Cells(x, x2)
  For Z = 2 To n1
    If xa = "" Then Exit For
    trov = 0
    For y = 2 To n1
      If xa = Cells(y, x3) Then
        trov = 1
        Exit For
      End If
    Next y
    If trov = 0 Then
      Cells(n1, x3) = xa
      n1 = n1 + 1
    End If
  Next Z
Next x
   
End Function


Un saluto ed a rileggerci, Ciao By Sal
A rileggerci By Sal
Avatar utente
By Sal
Utente Junior
 
Post: 83
Iscritto il: 27/08/06 14:40

Re: [excel] trovare valori non comuni a due colonne

Postdi The_jackal » 17/06/08 11:34

La macro e` davvero spettacolare...ma purtroppo non mi porta al risultato sperato...e che comincio a pensare sia piu` dificile di quanto pensassi da ottenere...
Cioe` io devo ottenere le stringhe univoche contenute nella prima colonna e non nella seconda
Esempio
Colonna A Colonna B
A B
B A
B B
C B
C B

Nella colonna C idealmente dovrebbe comparire il valore C (contenuto nella prima ma non contenuto nella seconda colonna)....
La seconda formula proposta da Anthony non la posso usare perche` anche mettendo in ordine alfabetico i valori, non otterrei il risultato sperato.....
The_jackal
Utente Junior
 
Post: 21
Iscritto il: 29/05/08 12:16

Re: [excel] trovare valori non comuni a due colonne

Postdi archimede » 17/06/08 11:46

The_jackal ha scritto:io devo ottenere le stringhe univoche contenute nella prima colonna e non nella seconda
Supponendo che i tuoi dati siano in A1:B5:

1) seleziona C1:C5
2) inserisci la formula
Codice: Seleziona tutto
=IF(ISERROR(MATCH(A1:A5;B1:B5;0));A1:A5;"")
3) premi CTRL-SHIFT-ENTER

HTH.

Alessandro
archimede
Moderatore
 
Post: 2851
Iscritto il: 07/11/02 12:41
Località: Genova

Re: [excel] trovare valori non comuni a due colonne

Postdi The_jackal » 17/06/08 12:50

No probabilmente non riesco a spiegarvi quello che voglio fare....io non devo confrontare singolamente le celle a 2 a 2...io avendo un`elenco di clienti dell`ultimo anno nella colonna A e un elenco di tutti i clienti degli anni precedenti nella colonna B devo vedere quali sono i clienti Nuovi aggiunti....(puo`essere che un cliente sia ripetuto piu` volte in una delle due colonne o in entrambe...)
Quindi se un cliente e` presente nella colonna A (ultimo anno) e nell colonna B, lui non dovrebbe comparire nell`elenco che dovrei ottenere nella colonna C...
Grazie ancora per l`aiuto....
The_jackal
Utente Junior
 
Post: 21
Iscritto il: 29/05/08 12:16

Re: [excel] trovare valori non comuni a due colonne

Postdi The_jackal » 17/06/08 13:01

Risolto

=IF(ISERROR(MATCH(A8,B:B,0)),A8:A12,"")

Comparo i vlori delle singole celle della colonna A con tutti i valori della colonna B...

certo ottengo vari doppioni nei risultati, ma applico poi un filtro avanzato e dovrei trovare quelli univoci...

Grazie Archimede per il prezioso aiuto!!
The_jackal
Utente Junior
 
Post: 21
Iscritto il: 29/05/08 12:16

Re: [excel] trovare valori non comuni a due colonne

Postdi Anthony47 » 17/06/08 13:45

A solo scopo didattico mi permetto di commentare che la formula da te adottata, quella di Archimede e la mia producono lo stesso risultato.
In quella di Archimede avresti dovuto usare “virgola” come separatore di campi; l’ uso della formula “a matrice” (la stessa formula applicata su piu’ celle e confermata con Contr-Shift-Enter) rende quella soluzione piu’ elegante.

Un saluto a BySal; ogni tanto faccio anche io un giro sul tuo blog, spero che tu trovi il tempo per contribuire ancora.

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

Re: [excel] trovare valori non comuni a due colonne

Postdi The_jackal » 17/06/08 14:50

Effettivamente e` vero...sicuramente non lo faccio apposta...e` solo che le mie conoscenze di Excel sono quelle che sono...non a caso vi chiedo le cose (e voi mi rispondete sempre...:) )
Grazei ancora
The_jackal
Utente Junior
 
Post: 21
Iscritto il: 29/05/08 12:16

Re: [excel] trovare valori non comuni a due colonne

Postdi By Sal » 18/06/08 05:13

Ciao chiedo venia, non avevo letto con attenzione il post, e mi sono confuso, con la ricerca dei dati comuni alle due colonne, invece si volevano i dati non comuni, per farmi perdonare e visto che puo anche servire la cosa opposta ho modificato l'UDF, adesso cerca i dati non comuni di due colonne, ecco il codice.

Codice: Seleziona tutto
Sub confrontaNC()
x = InputBox("Inserire le colonne separate dal Punto " & Chr(10) & "le prime due da Comparare la terza il risultato")
If x = "" Then Exit Sub
Call sCnfrCol(x)
End Sub

Public Function sCnfrCol(Dat1)
Dim dat(1 To 3)
Dim Trovato
Trovato = 0
n = 1
dx = Len(Dat1) + 1
For x = 1 To dx
  c1 = Mid(Dat1, x, 1)
  If c1 = "." Or x = dx Then
    dat(n) = Val(c2)
    c2 = ""
    n = n + 1
  Else
    c2 = c2 + c1
  End If
Next x
x1 = dat(1)
x2 = dat(2)
x3 = dat(3)
n1 = 2

r1 = Cells(Rows.Count, x1).End(xlUp).Row
r2 = Cells(Rows.Count, x2).End(xlUp).Row

If r1 = r2 Then rx = r1
If r1 < r2 Then rx = r2
If r1 > r2 Then rx = r1

For x = 2 To rx
  xa = Cells(x, x1)
  Trovato = 0
  For Z = 2 To rx
    If xa = "" Then Exit For
    If xa = Cells(Z, x2) Then
      Trovato = 1
      Exit For
    End If
  Next Z
  If Trovato = 0 And xa <> "" Then
    Cells(n1, x3) = xa
    n1 = n1 + 1
  End If
Next x
For x = 2 To rx
  xa = Cells(x, x2)
  Trovato = 0
  For Z = 2 To rx
    If xa = "" Then Exit For
    If xa = Cells(Z, x1) Then
      Trovato = 1
      Exit For
    End If
  Next Z
  If Trovato = 0 And xa <> "" Then
    Cells(n1, x3) = xa
    n1 = n1 + 1
  End If
Next x
   
End Function


Ancora un saluto ed alla prossima Ciao By Sal
A rileggerci By Sal
Avatar utente
By Sal
Utente Junior
 
Post: 83
Iscritto il: 27/08/06 14:40

Re: [excel] trovare valori non comuni a due colonne

Postdi By Sal » 18/06/08 05:27

Ciao Ancora un intervento e credo di aver finito, sempre a causa della mia fretta nel leggere, mi sono reso conto che the_jackal, vuole i dati non comuni solo della prima colonna sulla seconda, e non i dati non comuni nelle due colonne, l'UDF controlla i dati non comuni delle due colonne, allora si semplifica ancora, togliendo la parte che controlla i dati sulla seconda colonna, lasciando la macro di lancio che e la stessa, il codice diventa:

Codice: Seleziona tutto
Public Function sCnfrCol(Dat1)
Dim dat(1 To 3)
Dim Trovato
Trovato = 0
n = 1
dx = Len(Dat1) + 1
For x = 1 To dx
  c1 = Mid(Dat1, x, 1)
  If c1 = "." Or x = dx Then
    dat(n) = Val(c2)
    c2 = ""
    n = n + 1
  Else
    c2 = c2 + c1
  End If
Next x
x1 = dat(1)
x2 = dat(2)
x3 = dat(3)
n1 = 2

r1 = Cells(Rows.Count, x1).End(xlUp).Row
r2 = Cells(Rows.Count, x2).End(xlUp).Row

If r1 = r2 Then rx = r1
If r1 < r2 Then rx = r2
If r1 > r2 Then rx = r1

For x = 2 To rx
  xa = Cells(x, x1)
  Trovato = 0
  For Z = 2 To rx
    If xa = "" Then Exit For
    If xa = Cells(Z, x2) Then
      Trovato = 1
      Exit For
    End If
  Next Z
  If Trovato = 0 And xa <> "" Then
    Cells(n1, x3) = xa
    n1 = n1 + 1
  End If
Next x
End Function


Ciao ancora By Sal
A rileggerci By Sal
Avatar utente
By Sal
Utente Junior
 
Post: 83
Iscritto il: 27/08/06 14:40


Torna a Applicazioni Office Windows


Topic correlati a "[excel] trovare valori non comuni a due colonne":


Chi c’è in linea

Visitano il forum: Nessuno e 72 ospiti