Condividi:        

[Excel] Confrontare stringhe uno a molti

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

Re: [Excel] Confrontare stringhe uno a molti

Postdi anonimo13 » 01/10/13 10:31

Si, il file è lo stesso, credo siano sbagliate le formule.

Provo a lavorare sul codice che ho postato io e se non riesco modifico il tuo

anonimo13 ha scritto:La mia esigenza è proprio quella di verificare a partire dalla seconda tabella in poi:
- Per la tabella 2: Quali delle righe della tabella 2 è già presente nella tabella 1?
- Per la tabella 3: Quali delle righe della tabella 3 è già presente nella tabella 2?
- ecc ecc ecc...

Nella colonna G ho l'output che sarà "Y" nel caso in cui non è presente nella tabella precedente e "" nel caso in cui è presente nella tabella precedente. Per questo ho utilizzato strcomp(). L'obbiettivo è di comparare ogni singola riga di ogni tabella con le righe della tabella precedente.
anonimo13
Utente Junior
 
Post: 30
Iscritto il: 24/02/12 23:41

Sponsor
 

Re: [Excel] Confrontare stringhe uno a molti

Postdi ricky53 » 01/10/13 10:42

Ciao,
il tuo scrive una sola volta la "Y" per ogni tabella (vedi quanto ti avevo scritto in un mio precedente intervento) ... lo devi modificare e ...

CONSIGLIO: prova il mio esempio e avrai quello che ti occorre.
Perchè hai scritto che lo devi modificare?
Prima provalo così come l'ho scritto e poi lo adatti alla tua situazione reale.


Non voglio convincerti a tutti i costi ma una soluzione proposta va provata .. anche per rispetto di chi ha dedicato del proprio tempo a chi ha posto il quesito ... altrimenti lo spirito dei forum dove va a finire.
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: [Excel] Confrontare stringhe uno a molti

Postdi anonimo13 » 01/10/13 10:51

Il tuo l'ho provato e ci sto lavorando...ci aggiorniamo
anonimo13
Utente Junior
 
Post: 30
Iscritto il: 24/02/12 23:41

Re: [Excel] Confrontare stringhe uno a molti

Postdi ricky53 » 01/10/13 10:55

Ciao,
che risultati hai ottenuto?

Ecco il tuo file con il mio codice e la prova fatta FILE di ESEMPIO
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: [Excel] Confrontare stringhe uno a molti

Postdi anonimo13 » 01/10/13 10:59

ricky53 ha scritto:Ciao,
che risultati hai ottenuto?

Ecco il tuo file con il mio codice e la prova fatta FILE di ESEMPIO



Ho ottenuto esattamente la stessa cosa ma non è ciò di cui ho bisogno. Io devo individuare a partire dalla seconda tabella quali delle righe della tabella non è presente nella tabella precedente. ;)
anonimo13
Utente Junior
 
Post: 30
Iscritto il: 24/02/12 23:41

Re: [Excel] Confrontare stringhe uno a molti

Postdi ricky53 » 01/10/13 11:04

Ciao,
per me "Y" voleva dire "TROVATO".

I non presenti sono indicati con il "-".
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: [Excel] Confrontare stringhe uno a molti

Postdi ricky53 » 01/10/13 11:10

Ciao,
ecco il codice modoficato
scrive "-" per dato trovato (è meglio un "-" piuttosto che cella vuota!)
scrive "Y" per dato non trovato

Codice: Seleziona tutto
Option Explicit
Option Compare Text
Sub Newposition()
    Dim StartRow As Long, EndRow As Long, LastRow As Long, RR_I As Long, RR_F As Long, RR_App As Long
    Dim I As Long, J As Long, X As Long
    Dim Inizio As Double
   
    Columns("H").ClearContents ' <<===== Modifica se occorre
   
    Inizio = Timer
    LastRow = Range("F" & Rows.Count).End(xlUp).Row
    Range("H3:H" & LastRow) = "Y" ' <<===== Modifica se occorre
    RR_App = 1
   
    For X = 3 To LastRow / 60 + 1
        StartRow = Range("F" & RR_App).End(xlDown).Row + 1
        EndRow = Range("F" & StartRow).End(xlDown).Row
        If EndRow > LastRow Then
            GoTo Fine
        End If
        RR_I = StartRow + 60
        RR_F = Range("F" & RR_I).End(xlDown).Row
        RR_App = EndRow
        Range("H" & EndRow + 1 & ":H" & RR_I - 1).ClearContents ' <<===== Modifica se occorre
        For I = StartRow To EndRow
            For J = RR_I To RR_F
                If Cells(I, "C") & Cells(I, "D") & Cells(I, "E") = Cells(J, "C") & Cells(J, "D") & Cells(J, "E") Then
                    Cells(I, "H") = "-" ' <<===== Modifica se occorre
                End If
            Next J
        Next I
    Next X
Fine:
    MsgBox "Elaborazione Effettuata in:  " & Format(Timer - Inizio, "0.000") & "  secondi"
End Sub


Ho utilizzato sempre la colonna "H" per scrivere i dati.
Ti ho evidenziato le istruzioni in cui sostituire "H" con "la tua colonna"
Provalo e .. sono QUI
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: [Excel] Confrontare stringhe uno a molti

Postdi anonimo13 » 01/10/13 11:27

Adesso ho incluso nel controllo anche la cella che si trova nella colonna B e quindi il tuo codice l'ho modificato così
Codice: Seleziona tutto
Option Explicit
Option Compare Text
Sub Newpositionricky()
    Dim StartRow As Long, EndRow As Long, LastRow As Long, RR_I As Long, RR_F As Long, RR_App As Long
    Dim I As Long, J As Long, X As Long
    Dim Inizio As Double
   
    Columns("H").ClearContents ' <<===== Modifica se occorre
   
    Inizio = Timer
    LastRow = Range("F" & Rows.Count).End(xlUp).Row
    Range("H3:H" & LastRow) = "Y" ' <<===== Modifica se occorre
    RR_App = 1
   
    For X = 3 To LastRow / 60 + 1
        StartRow = Range("F" & RR_App).End(xlDown).Row + 1
        EndRow = Range("F" & StartRow).End(xlDown).Row
        If EndRow > LastRow Then
            GoTo Fine
        End If
        RR_I = StartRow + 60
        RR_F = Range("F" & RR_I).End(xlDown).Row
        RR_App = EndRow
        Range("H" & EndRow + 1 & ":H" & RR_I - 1).ClearContents ' <<===== Modifica se occorre
        For I = StartRow To EndRow
            For J = RR_I To RR_F
                If Cells(I, "B") & Cells(I, "C") & Cells(I, "D") & Cells(I, "E") = Cells(J, "B") & Cells(J, "C") & Cells(J, "D") & Cells(J, "E") Then
                    Cells(I, "H") = "-" ' <<===== Modifica se occorre
                End If
            Next J
        Next I
    Next X
Fine:
    MsgBox "Elaborazione Effettuata in:  " & Format(Timer - Inizio, "0.000") & "  secondi"
End Sub


Ma non funziona, guarda ad esempio la riga 68, è esattamente uguale alle riga 8 ma il codice la segnala come non trovata "Y"
anonimo13
Utente Junior
 
Post: 30
Iscritto il: 24/02/12 23:41

Re: [Excel] Confrontare stringhe uno a molti

Postdi anonimo13 » 01/10/13 11:46

Ho sistemato il mio codice e funziona...finalmente :!:
Codice: Seleziona tutto
Sub Newposition()
  Dim wb As Workbook
  Dim ws As Worksheet
  Dim StartRow As Long
  Dim firstrow As Long
  Dim I As Integer
  Dim n As Integer
  Dim Z As Integer
 
 StartRow = 62
 firstrow = 2
   
 For Z = 1 To 50
 
   For I = 1 To 58
         
       For n = 1 To 58
       If StrComp((Cells(StartRow + I, 2) & Cells(StartRow + I, 4) & Cells(StartRow + I, 5)), (Cells(firstrow + n, 2) & Cells(firstrow + n, 4) & Cells(firstrow + n, 5)), vbTextCompare) = 0 Then
       Cells(StartRow + I, 13) = "-"
       Else
       Cells(StartRow + I, 14) = "Y"
       End If
       
       Next n
       
   
   
   Next I
   
  StartRow = StartRow + 60
  firstrow = firstrow + 60
 Next Z

End Sub
anonimo13
Utente Junior
 
Post: 30
Iscritto il: 24/02/12 23:41

Re: [Excel] Confrontare stringhe uno a molti

Postdi ricky53 » 01/10/13 12:33

Ciao,
bene per aver risolto.

Però hai cambiato le condizioni:
tu confronti la colonna B, D, E e scrivi in “M” e “N”
all'inizio avevi detto C, D, E e scrivere “Y2 nella colonna “G”

poi "Y" viene scritta in tutte le righe della colonna “N” e scrivi "-" nella colonna “M” per uguale e “vuoto” per non trovato ...

Sono condizioni diverse da quelle che avevi scritto e sulle quali io ho lavorato!!!

Questo solo per dirti che quando si chiede qualcosa si deve essere MOLTO precisi, inoltre, se si cambiano le condizioni se deve farlo presente e ...

Avrei dedicato il mio tempo per trovarti la soluzione sulle condizioni vere e non su altre non esatte !!!

Vale per la prossima VOLTA !!!
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: [Excel] Confrontare stringhe uno a molti

Postdi anonimo13 » 01/10/13 14:17

Ciao,

sul mio codice sono stato costretto a scrivere in "M" e "N" perchè altrimenti scrivevo 58 volte nella stessa cella e alla fine ottenevo soltanto il risultato per n=58. Esisterà sicuramente una soluzione per immagazzinare tutti i "-" e "Y" in un oggetto per poi verificare se presente almeno un "Y", ma non conoscendo VBA ho utlizzato questa soluzione
anonimo13
Utente Junior
 
Post: 30
Iscritto il: 24/02/12 23:41

Re: [Excel] Confrontare stringhe uno a molti

Postdi ricky53 » 01/10/13 14:27

Ciao,
ma tutte le "Y" non ti servono bastano le celle vuote ed i "-".
Le vuote stanno a significare che non è stato trovato quanto cercato e con un filtro ... Vedi tu !


Non voglio essere pesante/pedante/noioso/ecc. ecc ma con quanto ti ho inviato recentemente risolverai la questione.

Prometto non ti dico più nulla dopo di adesso: ma hai provato l'ultima versione del codice?

Ma sono sicuro che poi mi ringrazierai !
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Precedente

Torna a Applicazioni Office Windows


Topic correlati a "[Excel] Confrontare stringhe uno a molti":


Chi c’è in linea

Visitano il forum: Nessuno e 36 ospiti