Excel e gli applicativi Microsoft Office come confrontare 6 campi e restituire un valore o una stringa

Login Registrati
Stai vedendo 14 articoli - dal 26 a 39 (di 39 totali)
  • Autore
    Articoli
  • #40495 Score: 0 | Risposta

    Aldo Ercolini
    Partecipante
      19 pts

      Le combinazioni della tua matrice sono gia' tutte previste.

      Il programma pero' deve sapere il mezzo che fa rifornimento, identificato dalla targa, che tipo di carburante puo' ricevere.

      Per questo nel Foglio2 del mio file ho abbinato, a caso, alle targhe il tipo di alimentazione.

      Adesso bisogna sostituire i dati del foglio2 con i dati reali, che possono risiedere nello steso file nel FoglioXXXXX, o anche in un file separato.

      Capisco che non puoi allegare tale file per motivi di privacy, ma non serve, mi basta sapere la struttura, quindi mi alleghi il file senza dati ma solo con le intestazioni delle colonne, cosi' so', per esempio, che nella colonna A c'e la targa nella colonna B c'e la data di immatricolazione ........ nella colonna Z il tipo di almentazione.

      In base a questo modifico i riferimenti nel codice.

      Spero di essere stato chiaro, altrimenti chiedi pure.

      #40496 Score: 0 | Risposta

      mflauto
      Partecipante
        1 pt

        Ti ringrazio tantissimo Aldo,

        in allegato il template su dove io carico il flusso di dati, avendo da controllare circa 10.000 righe al mese mi serve un riscontro immediato per cercare di segnalare le anomali sui rifornimenti tracciati, partendo dall’assioma che ogni motore endotermico è alimentato con un proprio combustibile tranne per i mezzi bi-fuel, ho generato la matrice che ho già pubblicato, tieni presente che il primo foglio quello dove carico il flusso prende il nome di: Rifornimenti il secondo è il vero DB che si collega dinamicamente ad un data base generato in Access chiamato DB.

        Allegati:
        You must be logged in to view attached files.
        #40498 Score: 0 | Risposta

        Aldo Ercolini
        Partecipante
          19 pts

          Scusa ma il file che hai allegato adesso e' completamente diverso da quello con cui ho fatto le prove, qui' e' presente solo una colonna dove viene indicato il tipo di carburante, e non una colonna per ogni tipo di rifornimento, quindi la logica che avevo adoperato non va piu' bene.

          Inoltre il template mi sembra di capire che viene popolato in automatico caricando un altro file e non manualmente, quindi va fatto un controllo a posteriori ma non vedo dove scrivere il risultato.

          Il primo file che hai postato quindi a cosa serve?

          Per favore siamo chiari a descrivere lo scenario di lavoro e quello che si vuole ottenere altrimenti si lavora per niente, tenuto conto che lo facciamo nei ritagli di tempo.

          Se puoi spiegarti meglio vedo cosa posso fare.

           

          #40500 Score: 0 | Risposta

          mflauto
          Partecipante
            1 pt

            Scusami Aldo,ti ho caricato il template per farti vedere come vengono incollati i dati scaricati dal portale in formato excel, il file postato in precedenza è il risultato della pivot dei dati importanti e/o incollati. Perdonami, per averti creato confusione, mi va benissimo il controllo eseguito sullo schema che stai utilizzando!

            #40502 Score: 0 | Risposta

            Aldo Ercolini
            Partecipante
              19 pts

              Il file che abbiamo fatto presuppone che tu ridigiti, mezzo per mezzo, tutti i rifornimenti del giorno.........

              Avendo gia' un file popolato automaticamente non ha senso rimettersi a ridigitare, anche solo targa e prodotto, per il  numero di movimenti che hai.

              Si tratta solo sapere con esattezza come lavori e di come sono strutturati i dati per fare quello che serve.

              Abbiamo due strade secondo me:

              Prima strada:

              Utilizzare il file che abbiamo creato come controllo facendoli leggere i dati dal tuo file, che mi devi dire se:

              1 E' un file mensile chiamato sempre Rif-MESE-ANNO

              oppure hai un unico file con i rifornimenti dell'anno che si chiama .......

              2 Nel foglio RIFORNIMENTI il nome prodotto viene scritto sempre nello stesso modo? Se no non saprei come identificare con precisione il prodotto e allora dovremmo passare all'inserimento manuale, se ne vale la pena.

                  Se si indicami come vengono scritti gli altri prodotti ( metano e GPL sia servito che self e eventualmente le combinazioni per i   bifuel).

              3 Nel foglio DB come vengono indicate le alimentazioni bifuel Gasolio+Metano e Gasolio+GPL

              Per il periodo che scegli di controllare farei scrivere nel file una riga per ogni rifornimento relativo alla targa in cui ci sono dei prodotti non conformi con Data Targa Prodotto Motivo

              Seconda Strada:

              Se si puo Aggiungerei una colonna CONTROLLO al tuo file e ci  inserisco il codice. Aggiungo un pulsante CONTROLLA che avvia il codice.

              I punti 2 e 3 mi servono anche in questo caso.

              Fammi sapere se ho ben inquadrato le tue esigenze e come vorresti lavorare.

               

               

              #40503 Score: 0 | Risposta

              mflauto
              Partecipante
                1 pt

                Buonasera Aldo,

                ci possiamo scrivere in privato con la promessa che poi renderemo pubblico tutto il lavoro fatto, perché potremmo inserire questa macro in un tool che ho creato, utility di questo tipo sono ricercate e difficile da customizzare?

                #40509 Score: 0 | Risposta

                Aldo Ercolini
                Partecipante
                  19 pts

                  Ciao,

                  scusa se ti rspondo solo ora ma ho avuto diversi impegni.

                  Per quanto riguarda la tua proposta non ci sono problemi, l'unica cosa e' che almeno anche per tutta la prossima settimana avro' poco tempo da dedicare al progetto.

                  Se non e' un cosa impellente...... SI    PUO'    FARE (Cit.)  

                  #40510 Score: 0 | Risposta

                  mflauto
                  Partecipante
                    1 pt

                    Perfetto Aldo,

                    Ci aggiorniamo per i primi di ottobre, se in privato mi mandi la tua mail ti comincio a condividere il mio progetto e il flusso tipo.

                     

                    #40511 Score: 0 | Risposta

                    Aldo Ercolini
                    Partecipante
                      19 pts

                      Scusate ma non trovo piu' i messaggi privati. E' cambiato qualcosa?

                      #40512 Score: 0 | Risposta

                      vecchio frac
                      Senior Moderator
                        272 pts

                        Il sistema di messaggistica privata è stato disattivato diverso tempo fa perché risultava oneroso per il sistema o impattava sulle prestazioni. Abbiamo già sollevato ad Admin la questione, vediamo se si riesce a trovare un modo (magari implementando un meccanismo di mailto).

                        #40513 Score: 0 | Risposta

                        Aldo Ercolini
                        Partecipante
                          19 pts

                          OK Grazie Francesco.

                          Allora la indico qui la mia mail, tanto non c'e' niente da nascondere:

                          aldo.ercolini@tin.it

                          #40514 Score: 0 | Risposta

                          mflauto
                          Partecipante
                            1 pt

                            Grazie Aldo.

                            #40952 Score: 0 | Risposta

                            Aldo Ercolini
                            Partecipante
                              19 pts

                              Abbiamo completato il lavoro che consistito in:

                              Aggiungere al Foglio DB (L'anagrafico automezzi) i campi relativi ai prodotti che quel specifico automezzo puo' acquistare con la carta.

                              Per semplicita' d'uso abbiamo inserito, sempre nel foglio DB, un campo Alimentazione collegato ad una tabella collocata nel foglio Legenda. Selezionando il tipo di alimentazione si riempiono i campi tipo prodotto.

                              Abbiamo fatto una macro che controlla che il prodotto acquistato da un determinato mezzo sia tra quelli consentiti e se non e' conforme colora di giallo la riga relativa al rifornimento.

                              Il controllo viene fatto in coda agli altri che sono gia' presenti e, tramite apposito pulsante, anche manualmente.

                              Posto solamente il codice in quanto il foglio e' pieno di dati sensibili, ma e' di facile comprensione.

                              '---------------------------------------------------------------------------------------------------------------------------------------
                              '   CONTROLLA SE IL RIFORNIMENTO EFFETTUATO E' CONFORME AI CARBURANTI ABILITATI PER QUEL SPECIFICO MEZZO
                              '
                              Dim X As String, PrimoIndirizzo As String
                              Dim C As Object
                              Dim T As Object
                              Dim uriga As Long, uriga2 As Long
                              
                              uriga = Sheets("Controllo").Cells(Rows.Count, "C").End(xlUp).Row
                              uriga2 = Sheets("DB").Cells(Rows.Count, "B").End(xlUp).Row
                              
                              For Each C In Sheets("Controllo").Range("C2:C" & uriga)
                                  X = C.Value
                                  Sheets("DB").Activate
                                  Set T = Range("B2:B" & uriga2).Find(X, LookIn:=xlValues, LookAt:=xlWhole)
                              
                                      If Not T Is Nothing Then
                                          PrimoIndirizzo = T.Address
                                  
                                          Do
                                              T.Cells.Select
                                              Set T = Range("B2:B" & uriga2).FindNext(T)
                                          Loop While Not T Is Nothing And T.Address <> PrimoIndirizzo
                                          
                                      Else
                                          MsgBox "Targa non Trovata " & C.Value
                                          Exit For
                                      End If
                                          
                                      If C.Offset(0, 13).Value = T.Offset(0, 4).Value _
                                      Or C.Offset(0, 13).Value = T.Offset(0, 5).Value _
                                      Or C.Offset(0, 13).Value = T.Offset(0, 6).Value _
                                      Or C.Offset(0, 13).Value = T.Offset(0, 7).Value Then
                                           'C.EntireRow.Interior.Color = RGB(0, 255, 0)
                                      Else
                                          Sheets("Controllo").Range("A" & C.Row & ":P" & C.Row).Interior.Color = RGB(255, 255, 0)
                                      End If
                              Next
                              
                              End Sub
                              
                              Sub ControllaProdotto()
                              Dim X As String, PrimoIndirizzo As String
                              Dim C As Object
                              Dim T As Object
                              Dim uriga As Long, uriga2 As Long
                              
                              Application.ScreenUpdating = False
                              
                              uriga = Sheets("Controllo").Cells(Rows.Count, "C").End(xlUp).Row
                              uriga2 = Sheets("DB").Cells(Rows.Count, "B").End(xlUp).Row
                              Sheets("Controllo").Range("A2:A" & uriga).EntireRow.Interior.ColorIndex = xlNone
                              
                              For Each C In Sheets("Controllo").Range("C2:C" & uriga)
                                  X = C.Value
                                  Sheets("DB").Activate
                                  Set T = Range("B2:B" & uriga2).Find(X, LookIn:=xlValues, LookAt:=xlWhole)
                              
                                      If Not T Is Nothing Then
                                          PrimoIndirizzo = T.Address
                                  
                                          Do
                                              T.Cells.Select
                                              Set T = Range("B2:B" & uriga2).FindNext(T)
                                          Loop While Not T Is Nothing And T.Address <> PrimoIndirizzo
                                          
                                      Else
                                          MsgBox "Targa non Trovata " & C.Value
                                          Exit For
                                      End If
                                          
                                      If C.Offset(0, 17).Value = T.Offset(0, 4).Value _
                                      Or C.Offset(0, 17).Value = T.Offset(0, 5).Value _
                                      Or C.Offset(0, 17).Value = T.Offset(0, 6).Value _
                                      Or C.Offset(0, 17).Value = T.Offset(0, 7).Value Then
                                           'C.EntireRow.Interior.Color = RGB(0, 255, 0)
                                      Else
                                          Sheets("Controllo").Range("A" & C.Row & ":P" & C.Row).Interior.Color = RGB(255, 255, 0)
                                      End If
                              Next
                              
                              Application.ScreenUpdating = True
                               
                              Sheets("Controllo").Select
                              Range("A2").Select
                              
                              End Sub
                              
                              Private Sub Worksheet_Change(ByVal Target As Range)
                              Dim T As Object
                              Dim uriga As Long, uriga2 As Long
                              Dim PrimaOccorrenza As String, X As String
                              
                                  Application.ScreenUpdating = False
                                  uriga = Cells(Rows.Count, "A").End(xlUp).Row
                                  uriga2 = Sheets("Legenda").Cells(Rows.Count, "F").End(xlUp).Row
                              
                                  If Intersect(Target, Range("J2:J" & uriga)) Is Nothing Then
                                      Exit Sub
                                  End If
                                  
                                  X = Target.Value
                                  
                                  Set T = Sheets("Legenda").Range("F2:F" & uriga2).Find(X, LookIn:=xlValues, LookAt:=xlWhole)
                              
                                  If Not T Is Nothing Then
                                      PrimaOccorrenza = T.Address
                                      Sheets("Legenda").Select
                                      Do
                                          T.Cells.Select
                                          Set T = Sheets("Legenda").Range("F2:F" & uriga2).FindNext(T)
                                      Loop While Not T Is Nothing And T.Address <> PrimaOccorrenza
                                          
                                  Else
                                      Target.Offset(0, -4).Value = ""
                                      Target.Offset(0, -3).Value = ""
                                      Target.Offset(0, -2).Value = ""
                                      Application.ScreenUpdating = True
                                      Sheets("DB").Select
                                      Exit Sub
                                  End If
                                          
                                  Target.Offset(0, -4).Value = T.Offset(0, 1).Value
                                  Target.Offset(0, -3).Value = T.Offset(0, 3).Value
                                  Target.Offset(0, -2).Value = T.Offset(0, 5).Value
                                  
                                  Application.ScreenUpdating = True
                                  Sheets("DB").Select
                                  
                              End Sub
                              
                                      
                              #40955 Score: 0 | Risposta

                              mflauto
                              Partecipante
                                1 pt

                                Uno speciale ringraziamento va a Aldo per aver reso funzionante il mio progetto!

                                Grazie davvero.

                              Login Registrati
                              Stai vedendo 14 articoli - dal 26 a 39 (di 39 totali)
                              Rispondi a: come confrontare 6 campi e restituire un valore o una stringa
                              Gli allegati sono permessi solo ad utenti REGISTRATI
                              Le tue informazioni: