Excel Forum Per condividere esperienze su Microsoft Excel

Trovare più valori univoci su più colonne

  • Messaggi
  • OFFLINE
    Peppe Capano
    Post: 14
    Registrato il: 09/11/2015
    Utente Junior
    2013
    00 27/06/2018 19:26
    Buonasera a tutti,
    ho un problema con una tabella che allego alla discussione:
    ho bisogno di sapere, con una formula, se Rossi ha lavorato in 2 appalti diversi nella stessa data, per di piu sapere anche se ha fatto degli orari che si sovrappongono, che poi è la situazione che si palesa con il dipendente Bianchi che lavora nello stesso giorno in orari sovrapposti.

    AIUTO !!!

    Attendo la vostra immensa disponibilità supportata dalla vostra grandiosa conoscenza.
    [Modificato da Peppe Capano 27/06/2018 19:31]
  • OFFLINE
    DANILOFIORINI
    Post: 203
    Registrato il: 15/01/2016
    Città: ROMA
    Età: 51
    Utente Junior
    2016
    00 27/06/2018 22:23
    Buonasera
    Credo che dovresti allegare il file con i risultati che vuoi ottenere scritti a mano che da quella tabella si possono estrarre i nomi gli orari o altro però prima di fare formule che poi magari non soddisfano le aspettative è meglio avere chiaro cosa bisogna fare
  • OFFLINE
    Peppe Capano
    Post: 14
    Registrato il: 09/11/2015
    Utente Junior
    2013
    00 28/06/2018 06:17
    Buonasera,
    allego file come vorrei che risultasse.

    Attendo gentilmente vostre
  • OFFLINE
    by sal
    Post: 5.435
    Registrato il: 14/11/2004
    Utente Master
    Office 2019
    00 28/06/2018 06:44
    Orari sovrapposti
    Ciao una mia semplice soluzione con la formattazione condizionale, in questo modo controlli visivamente se ci sono sovrapposizioni, ma attenzione alle date, la sovrapposizione può essere una data,appalto, operatore, diverso.

    credo che dovresti prima ordinare per date, oltre l'appalto ed il dipendente.



    questa la formula da inserire nella formattazione condizionale, attenzione ad i riferimenti(segno del dollaro)

    =E(G$1>=$D2;G$1<=$E2)


    allego il file

    Ciao By Sal [SM=x423051]



    [Modificato da by sal 28/06/2018 06:44]
    se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
  • OFFLINE
    Peppe Capano
    Post: 15
    Registrato il: 09/11/2015
    Utente Junior
    2013
    00 28/06/2018 13:45
    Ciao Sal,
    io vorrei che il il valore della colonna "esito" variasse in funzione dell'avverarsi delle eccezioni sopra scritte, quindi se Bianchi ha lavorato dalle 6 alle 9 a venezia e qualora venisse inserito un nuovo record con almeno una delle eccezioni, la cella della colonna "esito" relativa a quel record deve riportarti se ha lavorato in orari accavallati nel caso della stessa giornata e/o se ha lavorato in 2 appalti nella stessa gioranta, o adirittura se entrambe le situazioni.

    Spero di essere stato chiaro.

  • OFFLINE
    by sal
    Post: 5.437
    Registrato il: 14/11/2004
    Utente Master
    Office 2019
    00 28/06/2018 15:01
    Sovrapposizione ore
    Ciao La tua richiesta riguardava la sovrapposizione di orario.

    Comunque con le formule non so se riesco ad ottenere ciò che vuoi come te la cavi con il VBA, potrei proporti una macro.

    Ciao By Sal [SM=x423051]

    se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
  • OFFLINE
    Peppe Capano
    Post: 16
    Registrato il: 09/11/2015
    Utente Junior
    2013
    00 28/06/2018 17:58
    Ciao Sal,
    va bene, la elaboriamo assieme mano mano.

    Grazie davvero
  • OFFLINE
    raffaele1953
    Post: 3.569
    Registrato il: 28/06/2011
    Città: AGORDO
    Età: 70
    Utente Master
    2013
    00 29/06/2018 03:00
    Dovrebbe funzionare ad una sola condizione.
    La tabella deve essere ordinata con queste tre regole:
    1) Per data
    2) Per dipendente
    3) Per Appalto
    In F2 vedi allegato il forum la taglia
    [Modificato da raffaele1953 29/06/2018 03:03]
    Excel 2013
  • OFFLINE
    by sal
    Post: 5.438
    Registrato il: 14/11/2004
    Utente Master
    Office 2019
    00 29/06/2018 11:21
    Sovrapposizione ore
    Ciao ecco il file con la macro, ho notato che le entrate ed uscite non vengono inserite in formato orario, mi sono attenuto a quel formato.

    Raffaele, ciao la tua formula non funziona bene in quanto da il risultato prima che si inseriscono le entrate ed uscite, almeno a me da quel risultato.

    il file non ha bisogno di ordinamento basta inserire la data,cantiere,dipendente, entrata ed uscita.

    quando si inserisce l'uscita parte la macro che da il risultato controllando giorno, cantiere, dipendente e sovrapposizioni orari, riportando l'esito nella colonna "F", la formattazione condizionale a questo punto è un di più, l'ho lasciata tanto per.

    una sola cosa controlla soltanto il nuovo inserimento, se si vogliono aggiornare quelli già inseriti devo modificare la macro.

    questa le macro sono 2 una nel modulo del foglio, l'altra in un modulo Standrd

    Modulo del foglio

    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim r, c, d
    
    r = Target.Row
    c = Target.Column
    If Not Intersect(Target, [E:E]) Is Nothing Then
        If r = 1 Then Exit Sub
        d = Target
        Call Controlla(Cells(r, 1), Cells(r, 2), Cells(r, 3), Cells(r, 4), d, r)
    End If
    End Sub


    Modulo Standard

    Sub Controlla(d1, d2, d3, d4, d5, rr)
    Dim r, c, x, y, d, m1, m2, n1, k4, k5
    
    m1 = "LAVORATO SU PIU APPALTI E IN ORARI SOVRAPPOSTI"
    m2 = "ORARI SOVRAPPOSTI"
    
    For x = 2 To Cells(Rows.Count, 1).End(xlUp).Row - 1
        k4 = Cells(x, 4): k5 = Cells(x, 5)
        'controlla data e dipendente
        If Cells(x, 1) = d1 And Cells(x, 3) = d3 Then
            n1 = ""
            Application.EnableEvents = False
            'controlla sovrapposizione orario stesso cantiere
            If Cells(x, 2) = d2 Then
                For y = k4 To k5
                    If y = d4 Then n1 = 1
                    If y = d5 Then n1 = 1
                Next y
                If n1 = 1 Then Cells(rr, 6) = m2
            End If
            'controlla cantiere ed orari sovrapposti
            If Cells(x, 2) <> d2 Then
                For y = k4 To k5
                    If y = d4 Then n1 = 1
                    If y = d5 Then n1 = 1
                Next y
                 If n1 = 1 Then Cells(rr, 6) = m1
            End If
        End If
    Next x
    Application.EnableEvents = True
    End Sub


    Peppe fai le prove può essermi sfuggito qualcosa

    allego il file

    Ciao By Sal [SM=x423051]



    [Modificato da by sal 29/06/2018 11:26]
    se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
  • OFFLINE
    raffaele1953
    Post: 3.571
    Registrato il: 28/06/2011
    Città: AGORDO
    Età: 70
    Utente Master
    2013
    00 29/06/2018 12:04
    >>>Raffaele, ciao la tua formula non funziona bene
    Grazie by sal, sbagliare è una mia priorità. Basta mettere questa, dopo al posto di 33333 mettere l'altra (spero funzioni).
    =SE(E(D2="";E2="");"";33333)
    Excel 2013
  • OFFLINE
    Peppe Capano
    Post: 18
    Registrato il: 09/11/2015
    Utente Junior
    2013
    00 29/06/2018 12:32
    Ciao Sal,
    ho rilevato un caso di errore: inserisco in celle D3 ed E3 orari diversi e non sovrapposti alle celle D2 ed E2, inserisco Roma in B3, il risultato della cella F3 dovrebbe essere LAVORATO SU PIU APPALTI invece non restituisce nulla.

    Attendo tue
  • OFFLINE
    by sal
    Post: 5.439
    Registrato il: 14/11/2004
    Utente Master
    Office 2019
    00 29/06/2018 15:17
    Orari sovrapposti
    Ciao La data qual'è?

    dammi tutti i dati della riga che faccio io le prove, per vedere

    Ciao By Sal [SM=x423051]

    se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
  • OFFLINE
    Peppe Capano
    Post: 19
    Registrato il: 09/11/2015
    Utente Junior
    2013
    00 29/06/2018 15:22
    Ciao Sal, ho rifatto il file con i 3 risultati che vorrei ottenere ogni volta che inserisco un nuovo record.
    [Modificato da Peppe Capano 29/06/2018 15:23]
  • OFFLINE
    by sal
    Post: 5.440
    Registrato il: 14/11/2004
    Utente Master
    Office 2019
    00 29/06/2018 16:13
    Orari sovrapposti
    Ciao Peppe, eccoti il file con la modifica, ho inserito la 3° voce.

    Comunque quanto Lavora su più appalti anche se non ha sovrapposizione di ore ti riporta che ha lavorato su più appalti.

    Controlla sempre.

    Ciao By Sal [SM=x423051]

    se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
  • OFFLINE
    Peppe Capano
    Post: 20
    Registrato il: 09/11/2015
    Utente Junior
    2013
    00 29/06/2018 16:24
    Ciao Sal, perdonami ma sono ignorantissimo in materia, se inserisco altri record che soddisfano le eccezioni trattate non succede nulla, in pratica se inserisco un dipendente "ROSSI" che lavora a "ROMA" il 01/06/2018 e fa ORARI SOVRAPPOSTI, nella cella adiacente della colonna F non appare nulla...è normale ? se no, come si attiva?
  • OFFLINE
    by sal
    Post: 5.442
    Registrato il: 14/11/2004
    Utente Master
    Office 2019
    00 29/06/2018 16:51
    Orari sovrapposti
    Ciao se inserisci una nuova data con nuovo appalto e nuovo dipendente non da nessun riscontro in quanto precedentemente non ci sono dati per la data.

    esempio

    1/6/18-venezia-rossi-6-12, nessun riscontro
    1/6/18-roma-rossi-13-15, qui indica che ha lavorato su 2 appalti diversi
    1/6/18-venezia-rossi-12-16, qui indica che ci sono orari sovrapposti
    1/6/18-roma.rossi-15-16, qui indica che ci sono appalti diversi e orario sovrapposto

    il controllo parte quando inserisci l'uscita cioè 12-15-16-16

    quando inserisci l'orario di uscita in automatico parte la macro che fa il controllo prima sulla data e nome, poi su sovrapposizione orario e poi su sovrapposizione orario e appalti diversi.

    Ciao By Sal [SM=x423051]

    ti invio un mp controlla le mail
    se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
  • OFFLINE
    Peppe Capano
    Post: 21
    Registrato il: 09/11/2015
    Utente Junior
    2013
    00 29/06/2018 17:26
    Ciao Sal,
    ti ho risposto al tuo mp e comunque purtroppo continua a non attivarsi nulla.
    Non capisco perché...
  • OFFLINE
    Peppe Capano
    Post: 22
    Registrato il: 09/11/2015
    Utente Junior
    2013
    00 01/07/2018 16:32
    Ciao Sal,
    ci sarebbe la possibilità di avere la tua versione della macro in formato "formula matriciale" ?
    Attendo tue e dal forum
  • OFFLINE
    Peppe Capano
    Post: 23
    Registrato il: 09/11/2015
    Utente Junior
    2013
    00 01/07/2018 16:44
    Re:
    raffaele1953, 29/06/2018 12.04:

    >>>Raffaele, ciao la tua formula non funziona bene
    Grazie by sal, sbagliare è una mia priorità. Basta mettere questa, dopo al posto di 33333 mettere l'altra (spero funzioni).
    =SE(E(D2="";E2="");"";33333)




    Ciao Raffaele,
    questo il problema che mi si presenta quando inserisco la tua formula, che in alcuni casi restituisce esiti corretti, ma in altri come questo qui sotto, restituisce esiti non corretti:
    DATA PUNTO VENDITA SOCIO LAVORATORE ENTRATA USCITA ESITO
    lunedì 4 giugno 2018 MILANO BIANCHI 14 18
    martedì 5 giugno 2018 MILANO BIANCHI 21 24 ORARI SOVRAPPOSTI
    martedì 5 giugno 2018 MILANO BIANCHI 6,45 9,45 ORARI SOVRAPPOSTI
    mercoledì 6 giugno 2018 MILANO BIANCHI 0,45 2,45

    Attendo tue
    [Modificato da Peppe Capano 01/07/2018 16:51]
  • OFFLINE
    federico460
    Post: 1.639
    Registrato il: 10/10/2013
    Città: VICENZA
    Età: 69
    Utente Veteran
    365
    00 01/07/2018 18:01
    ciao

    varia la macro in foglio 1

    in

    Option Explicit

    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim r, c, d

    r = Target.Row
    c = Target.Column
    If Not Intersect(Target, [D:E]) Is Nothing Then
    If r = 1 Then Exit Sub
    d = Target
    Call Controlla(Cells(r, 1), Cells(r, 2), Cells(r, 3), Cells(r, 4), d, r)
    End If
    End Sub



    la parte in rosso da cambiare

    fai così il controllo sia in entrata che in uscita

    funziona bene
    complimenti a by sal


    nb

    è lapalissiano che se le date non coincidono
    non ti darà risposa
  • OFFLINE
    Peppe Capano
    Post: 24
    Registrato il: 09/11/2015
    Utente Junior
    2013
    00 01/07/2018 18:46
    Re:
    federico460, 01/07/2018 18.01:

    ciao

    varia la macro in foglio 1

    in

    Option Explicit

    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim r, c, d

    r = Target.Row
    c = Target.Column
    If Not Intersect(Target, [D:E]) Is Nothing Then
    If r = 1 Then Exit Sub
    d = Target
    Call Controlla(Cells(r, 1), Cells(r, 2), Cells(r, 3), Cells(r, 4), d, r)
    End If
    End Sub



    la parte in rosso da cambiare

    fai così il controllo sia in entrata che in uscita

    funziona bene
    complimenti a by sal


    nb

    è lapalissiano che se le date non coincidono
    non ti darà risposa



    Ciao Federico,
    ad un certo punto appena premo su f5 per avviare la macro, mi apre una finestra di dialogo nella quale dovrebbe apparire la macro ma non la vedo, sai come mai?
  • OFFLINE
    Peppe Capano
    Post: 25
    Registrato il: 09/11/2015
    Utente Junior
    2013
    00 01/07/2018 18:46
    Re:
    federico460, 01/07/2018 18.01:

    ciao

    varia la macro in foglio 1

    in

    Option Explicit

    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim r, c, d

    r = Target.Row
    c = Target.Column
    If Not Intersect(Target, [D:E]) Is Nothing Then
    If r = 1 Then Exit Sub
    d = Target
    Call Controlla(Cells(r, 1), Cells(r, 2), Cells(r, 3), Cells(r, 4), d, r)
    End If
    End Sub



    la parte in rosso da cambiare

    fai così il controllo sia in entrata che in uscita

    funziona bene
    complimenti a by sal


    nb

    è lapalissiano che se le date non coincidono
    non ti darà risposa




    Con cosa andrebbe variata la parte in rosso?
  • OFFLINE
    raffaele1953
    Post: 3.577
    Registrato il: 28/06/2011
    Città: AGORDO
    Età: 70
    Utente Master
    2013
    00 01/07/2018 22:25
    Ciao a tutti
    Si, inoltre suggerisco agli esperTi di fare pure un ORDINA nel VBA

    Premesso che non esiste il 24 (casomai sarebbe zero).
    Sarebbe meglio inserire direttamente degli orari, invece di numeri.
    La mia formula andava bene prima, dopo hai aggiunto un'altra opzione e ho desistito.

    Faccio notare che se esistono orari che finiscono a mezzanotte ed oltre, devi farlo presente sul forum.
    Comunque meglio il VBA invece delle formule per fare questo confronto.
    Excel 2013
  • OFFLINE
    Peppe Capano
    Post: 26
    Registrato il: 09/11/2015
    Utente Junior
    2013
    00 02/07/2018 14:38
    Re:
    raffaele1953, 01/07/2018 22.25:

    Ciao a tutti
    Si, inoltre suggerisco agli esperTi di fare pure un ORDINA nel VBA

    Premesso che non esiste il 24 (casomai sarebbe zero).
    Sarebbe meglio inserire direttamente degli orari, invece di numeri.
    La mia formula andava bene prima, dopo hai aggiunto un'altra opzione e ho desistito.

    Faccio notare che se esistono orari che finiscono a mezzanotte ed oltre, devi farlo presente sul forum.
    Comunque meglio il VBA invece delle formule per fare questo confronto.



    Ciao Raffaele,
    quella di inserire gli orari in formato numero è una necessità.
  • OFFLINE
    raffaele1953
    Post: 3.580
    Registrato il: 28/06/2011
    Città: AGORDO
    Età: 70
    Utente Master
    2013
    00 03/07/2018 00:15
    >>>quella di inserire gli orari in formato numero è una necessità.
    No, secondo me sarebbe giusto, per gli orari che finiscono dopo le 24:00
    Ho provato con le formule, però non ci riesco. Vediamo se mi viene in mente qualche idea.
    Excel 2013