You are here:--[RISOLTO] Excel 2016 – Confrontare due files
[RISOLTO] Excel 2016 – Confrontare due files2019-08-06T18:55:47+02:00

Home Forum Domande su Excel VBA e MACRO [RISOLTO] Excel 2016 – Confrontare due files

Tag: 

  • Autore
    Articoli
  • AvatarCarlo IK2RPE
    Partecipante
      Post totali: 6

      Buongiorno,

      ho due files quasi identici (26.000 circa righe).

      Vorrei controllare/evidenziare **quali**righe mancano sul File2 rispetto al File1.

      La ricerca che devo fare riguarda i dati delle sole colonne 1 + 2, ignorando le altre 10 colonne.

      Dicevo colonna 1 + 2 perchè nella colonna 1 ci possono essere dati uguali (“pippo”), ma nella colonna 2  **date** che sono diverse

      C’è una macro per poter fare questo confronto?

      Grazie anticipatamente

       

      Carlo

    • BySalvBySalv
      Amministratore del forum
        Post totali: 479

        Ciao Carlo si può fare, ma prima si ha bisogno dei file con pochi dati non sensibili.

        Una volta trovato il dato che manca cosa bisogna fare inserirlo alla fine dell’elenco oppure inserire una nuova riga con il dato trovato.

        allega i file e vediamo cosa si può fare.

        Ciao By Sal (8-D

         

         

      • AvatarCarlo IK2RPE
        Partecipante
          Post totali: 6

          https://www.dropbox.com/s/97tlyec6i12ur2w/DxK%20%2B%20HRDLog%20x%20test.xlsx?dl=0

           

          Grazie Sal per la risposta.
          Ti allego (v. link qui sopra) un File Excel con un estratto (circa 200 righe) del file di 26.000 righe circa.
          Nel File ci sono DUE fogli, uno chiamato “HRDLog” e il secondo “DxKeeper”
          Quello che devo fare è trovare le righe che ci sono in HRDLog ma che mancano in DxKeeper.
          NON il contrario.
          <b>Mi basta solo EVIDENZIARE le discrepanze</b>, cioè le righe di HRDLog mancanti su DxKeeper.
          Come vedrai nella colonna “A” (che ha come header “call”) il dato lì contenuto può essere ripetuto più volte.
          La discriminante è la data della colonna “B” (che ha come header “qso_date”) ed eventualmente dalla colonna “C” (che ha come header “time_on”)
          Ho fatto un lavoro manuale e nel file allegato le righe mancanti in DxKeeper rispetto a HRDLog sono le <b>46, 81 e 171,</b> che ho evidenziato in <b>GIALLO</b>.
          Mentre per le prime due il solo “qso_date” era sufficiente come discriminante, nella 171 ho dovuto prendere in considerazione anche il “time_on” perché alla stessa data, a pochi minuti di differenza, c’era un secondo call identico.
          Spero di essere stato sufficientemente chiaro.
          Grazie e cordiali saluti
          Carlo
          • Questa risposta è stata modificata 2 settimane, 4 giorni fa da BySalv BySalv.
        • BySalvBySalv
          Amministratore del forum
            Post totali: 479

            Si ma una volta trovate le righe che mancano in “DxKeeper” che bisogna fare?

            cioè le righe gialle che fine fanno?

            Ciao By Sal (8-D

             

             

             

            • AvatarCarlo IK2RPE
              Partecipante
                Post totali: 6

                Sal,

                nulla, perchè poi, una volta individuate queste righe, le devo inserire MANUALMENTE nel programma SPECIFICO di Log radio che gestisce il file DxKeeper (con tutti gli altri dettagli presenti in HRDLog)

                A meno che POI non riesca a farne anche un’estrazione solo di queste righe, trasformando il file .xls in un file ADIF  .adi, nel qual caso riesco a inserire automaticamente tutti i dati nel prg log di DxKeeper.

                Ma questo è l’eventuale passo solo successivo, che esaminerò in seguito.

                Grazie

                Carlo

            • BySalvBySalv
              Amministratore del forum
                Post totali: 479

                Ciao Carlo, vedere 3 o più parametri non è un problema, il problema e che ci sono piccole differenze, guarda qui

                3A2MW 20170928 142200 17M 18.10066 FT8 3A2MW 20170928 1421
                3A50ARM 20031123 143500 40M 7.085 SSB 3A50ARM 20031123 1434
                3A50ARM 20031127 212900 80M 3.772 SSB 3A50ARM 20031127 2128

                Come puoi notare l’ora differisce di una unità, che facciamo come viene considerato?, non considerare i 2 zeri dopo 142200 le quattro cifre, il foglio HDRLog porta 142100.

                Ciao By Sal (8-D

                • AvatarCarlo IK2RPE
                  Partecipante
                    Post totali: 6

                    Grazie Sal anche per quasta risposta.

                    Sì lo so che ci può essere una piccola differenza di ora. MA questo è ininfluente per le mie necessità.

                    Infatti in prima battuta mi sarebbe bastato evidenziare solo i dati con “call” e “qso_date” mancanti su DxKeeper.

                    Ma ci potrebbero essere dei casi, sicuramente di minore quantità, mancanti ad un’ora diversa MA lo stesso giorno.

                    Allora:

                    1. certamente nella colona con header “time_on” i due zeri finali del file HRDLog possono essere ignorati

                    2. non so se sia possible/troppo complicato avere la possibilità di creare un intervallo di 05 o meglio 08 minuti che non crei discrepanze tra i due files

                    3. limitarsi ad un’estrazione solo alle differenze esistenti tra i due files con solo DUE discriminanti “call” e “qso_date”. Questo risolverebbe già l’80% dei miei problemi

                    4. e poi sarebbe possibile una **eventuale** seconda estrazione che evidenzi solo i dati mancanti in DxKeeper e che in HRDLog abbiano la stessa data. Per spiegarmi meglio la riga 171 del file che ti ho inviato ma anche la riga 172 che ha la stessa data ma un’ora leggermente diversa

                    Grazie ancora

                     

                    P.S. comunque, sul lavoro finale, è possibile avere sul file stesso che ti ho inviato (foglio HRDLog) solo evidenziazioni con colori delle discrepanze? E quello che mi raccomanderesti è una formula che poi posso applicare al file di 26.000 righe? Mi piacerebbe poi sapere la “tecnica/artificio” usata, interessante sicuramente anche ad altri membri del Forum

                    P.S 2: il file che ti ho inviato si riferisce alla mia attività di radioamatore. Il “QSO” è il collegamento con l’altro radioamatore con il suo “call” univoco a livello mondiale (il mio è IK2RPE) e gli altri dati sono data, ora (“on” = ora inizio, poi c’è un’ora “time_off” di fine del QSO, che ho comunque levato dal file), frequenza, modo di emissione e una serie di altre informazioni….

                     

                    Carlo

                • BySalvBySalv
                  Amministratore del forum
                    Post totali: 479

                    Ciao Carlo, ecco il file per il confronto, è stato un poco un problema in quanto gli orari non hanno il formato orario ma sono testo.

                    il tutto con una macro, premendo la freccia verde, con le formule non è il mio campo, non saprei da dove cominciare.

                    le righe che non sono presenti nel foglio DxKeeper si colorano di giallo, comunque un elenco di tutte le righe gialle lo avrai nella colonna “M”.

                    Vedi che le celle “Q1-R1” colorate di giallo non devi toccarle servono per il calcolo dei minuti di differenza, per le trasmissioni, al momento sono 5 minuti, in “Q1” puoi aggiustare i minuti ad esempio mettendoli ad 8 minuti scrivendo nella cella nel formato “00:08:00” la cella “R1” riporterà il Numero Seriale degli 8 Minuti, non toccarla altrimenti poi non fa la ricerca per bene.

                    Ricorda che tutte le righe che hanno l’orario uguale o inferiore a 5 minuti, o il valore di “Q1”, li considera uguali, quindi non le colora di giallo.

                    puoi aggiungere tutti i dati che vuoi ma devi mantenere lo stesso formato.

                    Una volta ero anche io Radioamataore ma con il “Morse” poi incominciò la CB ed ho lasciato perdere, era più bello prima.

                    vedi se va bene, ecco il link al file

                    http://www.filedropper.com/dxkhrdlogxtest2

                    Ciaoi By Sal (8-D

                  • AvatarCarlo IK2RPE
                    Partecipante
                      Post totali: 6

                      &[RISOLTO] Sal,

                      molte grazie per la soluzione.

                      Adesso aggiungerò l’intero file di entrambi i Log per farne l’estrazione / evidenziazione dei dati mancanti.

                      Un’ultima cosa: come faccio a vedere la “macro” che c’è sotto la freccia, in modo da:

                      1. Capire la logica della stessa

                      2. Salvarmela “a futura memoria” nel caso avessi bisogno di una analoga elaborazione

                       

                      Grazie ancora e buona giornata

                      Carlo IK2RPE

                      • Questa risposta è stata modificata 2 settimane fa da Avatar Carlo IK2RPE.
                    • BySalvBySalv
                      Amministratore del forum
                        Post totali: 479

                        Ciao Carlo la macro si chiama “Confronta” la trovi premendo Alt+F11 ti porta all’editor del VBA e vedrai la macro nel Modulo1

                        In effetti per velocizzare la macro, confrontando i dati sul foglio, impiega molto più tempo, prendo i dati dei 2 fogli e li inserisco in 2 matrici, in memoria, quindi faccio il confronto delle matrici, e sul foglio faccio scrivere solo il risultato trovato e coloro le righe

                        Ciao By Sal (8-D

                        • AvatarCarlo IK2RPE
                          Partecipante
                            Post totali: 6

                            Grazie SAL,

                            ho guardato la macro ma sinceramente è troppo complicata (per me) capirla.

                             

                            Invece volevo segnalarti che con l’aiuto di mio figlio ho elaborato un’altra possibile soluzione:

                            1. ho creato su entrambi i fogli una “chiave” con “call”+”data”+ “modo”

                            2. ho creato poi un nuovo foglio di unione riportando l’ora di quella chiave sia in HRDLog che in DxKeeper

                            3. quindi ho creato  una colonna dove ho inserito la formula

                            =SE(VAL.ERRORE($E25644);”Non Presente in DXKEEPER”;SE(VAL.ERRORE($F25644);”Non Presente in HRDLog”;SE(IDENTICO(E25644;F25644);”Presente in entrambi con STESSO ORARIO”;”Presente in Entrambi con orario DIVERSO”)))

                            a differenza della tua macro qui non è stata presa in considerazione automaticamente una differenza minima di orario

                            Adesso voglio confrontare i due “esercizi” e valutarne le possibili discrepanze

                            (ma mi fido più della tua soluzione…)

                            P.S. mi sembra di NON essere riuscito ad inserire “RISOLTO”. Potresti cortesemente farlo tu. Grazie

                             

                            Carlo

                             

                             

                             

                        Devi essere loggato per rispondere a questa discussione.

                        Utilizzando il sito, accetti l'utilizzo dei cookie da parte nostra. maggiori informazioni

                        Questo sito utilizza i cookie per fornire la migliore esperienza di navigazione possibile. Continuando a utilizzare questo sito senza modificare le impostazioni dei cookie o cliccando su "Accetta" permetti il loro utilizzo.

                        Chiudi