Excel Forum Per condividere esperienze su Microsoft Excel

Riga di codice per filtrare solo le righe con data senza formule

  • Messaggi
  • OFFLINE
    sputnik_r
    Post: 77
    Registrato il: 03/03/2014
    Città: TORINO
    Età: 54
    Utente Junior
    2007
    00 11/06/2018 11:37
    Re:
    GiuseppeMN, 11/06/2018 07.36:

    Buona giornata, sputnik_r;
    dall'immagine proposta in Risposta #26 vedo una situazione molto diversa rispetto a quella proposta nel File in #1.

    A questo punto devo chiederti di rimandarmi il tuo File con la situazione proposta in Risposta #26; in questo modo vedo quello che devo modificare.



    A disposizione.

    Giuseppe




    Buongiorno Giuseppe.


    Ho modoficato quello fatto da te, solo le date. Ho messo i riferimenti in modo che cambiando la 1à in blu il calendario sia completo anche per l'anno seguente.
    Lo stesso fanno le celle con le squadrre nell'orginale; ma l'effetto lo puoi vedere anche così.  Elimina le date con l' 1 e vedrai che saltano i riferimenti tra le celle.
  • OFFLINE
    sputnik_r
    Post: 78
    Registrato il: 03/03/2014
    Città: TORINO
    Età: 54
    Utente Junior
    2007
    00 11/06/2018 11:47
    Qui si vede ancora meglio...
    ho riprodotto la situazione tipo in cui mi ritroverei...


    alcune celle contenenti date con riferimenti e altre (quelle con la scritta "senza formula") con solo la data ma nessun riferimento.
  • OFFLINE
    GiuseppeMN
    Post: 3.021
    Registrato il: 03/04/2013
    Utente Master
    Excel 2000 - 2013
    00 11/06/2018 12:16
    Buona giornata, sputnik_r.
    I Record in Riga 10,11,12,13,14,15 e 16 non si riferiscono a Date duplicate ma, avendo indicato in Colonna "I" un valore i Record verranno cancellati e quindi creeranno "#RIF!" nelle Celle sottostanti

    La filosofia della mia proposta era di eliminare le Date duplicate; se la tua esigenza è quella di non considerare le Date duplicate ma di cancellare tutti i Record identificati da un Valore inserito in Colonna "I", cambia tutto.

    Sub Elimina_Date_duplicate()
    Dim Titolo As String, Messaggio As String, Default As String, PswA As String
        Titolo = "Protezione Codice ''Elimina Date duplicate"    ' Definisce il titolo.
        Messaggio = "Per accedere a questa Funzione, devi inserire la Password di autenticazione"
        Default = ""
            PswA = Application.InputBox(Messaggio, Titolo, Default)
        If PswA <> Psw Then
            MsgBox "La Password" & Chr(10) & PswA & Chr(10) _
            & "non è corretta; chiedi autorizzazione al Responsabile."
                End
        End If
    Application.ScreenUpdating = False
    Dim Nrc As Long, x As Long
        
        Call Visualizza_DataSet
        Nrc = Range("B" & Rows.Count).End(xlUp).Row
            For x = Nrc To 4 Step -1
                If Cells(x, 9).Value <> "" Then Cells(x, 2).EntireRow.Delete
            Next x
        Nrc = Range("B" & Rows.Count).End(xlUp).Row
            Cells(5, 2).FormulaLocal = "=$B4+1"
            Cells(5, 2).Copy Range(Cells(5, 2), Cells(Nrc, 2))
    Application.ScreenUpdating = True
    End Sub
    


    Praticamente ho dovuto aggiungere:
    Nrc = Range("B" & Rows.Count).End(xlUp).Row
    Cells(5, 2).FormulaLocal = "=$B4+1"
    Cells(5, 2).Copy Range(Cells(5, 2), Cells(Nrc, 2))


    Non vedo più le Formule in Colonna "H"; è corretto?



    A disposizione.

    Giuseppe

    Windows XP - Excel 2000
    Windows 10 - Excel 2013
  • OFFLINE
    GiuseppeMN
    Post: 3.023
    Registrato il: 03/04/2013
    Utente Master
    Excel 2000 - 2013
    00 11/06/2018 12:31
    I "#RIF!" sono spaririti ma i riferimenti delle date sono cambiati e questo credo non ti vada bene; temo che ci siano ancora incomprensioni.

    Sei sicuro che non convenga trasformare le Formule in "valore assoluto"?

    A questo punto credo convengano due chiacchiere in Skype; con l'impegno formale di condividere in Forum gli eventuali sviluppi.


    Giuseppe

    Windows XP - Excel 2000
    Windows 10 - Excel 2013
  • OFFLINE
    sputnik_r
    Post: 79
    Registrato il: 03/03/2014
    Città: TORINO
    Età: 54
    Utente Junior
    2007
    00 11/06/2018 13:13
    Grazie Giuseppe.

    Appena potrò proverò la nuova soluzione.

    E se non è quel che voglio cercherò di postare il file reale.

    E di spiegarmi ancor meglio.

    Le date vengono duplicate perché nello stesso giorno possono esserci più richiedenti ferie o permessi.
    Mentre vengono duplicate le celle sottostanti continuano a far riferimento alle formule delle celle con formule
    Quindi alka fine dell'anno o del mese potrebbe rendersi utile eliminare i doppioni delle date per reimpostare il file e partire con un calendario vergine senza duplicati e senza date duplicate senza formule.

    Comunque appena ho tempo preparo un file.

    Ancora grazie.

  • OFFLINE
    GiuseppeMN
    Post: 3.025
    Registrato il: 03/04/2013
    Utente Master
    Excel 2000 - 2013
    00 11/06/2018 17:39
    Buona sera, sputnik_r.
    Provo a togliermi il "cappello Excel" e metto quello di quando ero responsabile di Produzione.
    Il File l'avrei concepito in questo modo :

    -    N° 1 Foglio di lavoro per ogni Collaboratore
    -    In Colonna "A" l'ncremento da attribuire alla Data presente nella Cella in Colonna "C"
    -    Foglio di lavoro Protetto con eslusione delle Celle "A4:J406"; poi vedrai tu se aumentare o diminuire questo Range
    -    Soliti tre Pulsanti per ogni Foglio di lavoro

    Non mi resta che ...     ... e augurarmi possa esserti d'aiuto.


    A disposizione.

    Buona serata.

    Giuseppe

    Windows XP - Excel 2000
    Windows 10 - Excel 2013
  • OFFLINE
    sputnik_r
    Post: 80
    Registrato il: 03/03/2014
    Città: TORINO
    Età: 54
    Utente Junior
    2007
    00 11/06/2018 18:32
    Re:
    GiuseppeMN, 11/06/2018 17.39:

    Buona sera, sputnik_r.
    Provo a togliermi il "cappello Excel" e metto quello di quando ero responsabile di Produzione.
    Il File l'avrei concepito in questo modo :

    -    N° 1 Foglio di lavoro per ogni Collaboratore
    -    In Colonna "A" l'ncremento da attribuire alla Data presente nella Cella in Colonna "C"
    -    Foglio di lavoro Protetto con eslusione delle Celle "A4:J406"; poi vedrai tu se aumentare o diminuire questo Range
    -    Soliti tre Pulsanti per ogni Foglio di lavoro

    Non mi resta che ...     ... e augurarmi possa esserti d'aiuto.


    A disposizione.

    Buona serata.

    Giuseppe



    Infatti; hai colto nel segno sono proprio responsabile di produzione...da troppi anni ormai.


    E questa è una bega che mi sono preso extra. Il calendario lo feci 99 e ora ho implementato per l'utilizzo come gestione personale e relative richieste ferie, permessi 104, permessi avis, parentali ecc.

    Quindi quella che vedi è una parte piccola e fatta nel 99... non posso più cambiare...tra l'altro essendo una bega extra chi me lo fa fare...non so se mi spiego...







    [Modificato da sputnik_r 11/06/2018 18:33]
  • OFFLINE
    sputnik_r
    Post: 81
    Registrato il: 03/03/2014
    Città: TORINO
    Età: 54
    Utente Junior
    2007
    00 11/06/2018 18:39
    anzi...
    ...direi che va più che bene adesso...



    quando i permessi sono più di 1 in un giorno, inserisco una riga vuota che mi duplica la data e le formule che conteggiano il trova sostituti, passato, futuro, urgente da sostituire.


    Bene quelle righe duplicate dovrebbero essere eliminate quando voglio io lasciandomi il calendario con tutti i riferimenti che sono diversi e elementari rispetto i tuoi, ma funzionano benissimo allo scopo.


    se non riuscirò nell'intento tengo buono un calendario vergine per il prox anno e quelli successivi.

    Gli ostacoli vanno aggirati...a maggior ragione quando non ci guadagni nulla.


    Dopo 32 anni di lavoro con i libretti e 4/5 senza quel che ho capito è che il punto è proprio quello: RIUSCIRE A GUADAGNARE da quel che si fa. E' sempre più difficile.
    [Modificato da sputnik_r 11/06/2018 18:39]
  • OFFLINE
    GiuseppeMN
    Post: 3.026
    Registrato il: 03/04/2013
    Utente Master
    Excel 2000 - 2013
    00 11/06/2018 18:47
    Buona sera, sputnik_r.

    @sputnik_r in Risposta #37, scrive:


    ... Il calendario lo feci 99 e ora ho implementato per l'utilizzo come gestione personale e relative richieste ferie, permessi 104, permessi avis, parentali ecc.

    Quindi quella che vedi è una parte piccola e fatta nel 99... non posso più cambiare



    Aquesto punto non saprei che aggiungere se non che, senza alcun dubio, sarei partito con ACCESS e non con Excel.



    Buona serata.

    Giuseppe

    Windows XP - Excel 2000
    Windows 10 - Excel 2013
  • OFFLINE
    sputnik_r
    Post: 82
    Registrato il: 03/03/2014
    Città: TORINO
    Età: 54
    Utente Junior
    2007
    00 11/06/2018 18:49
    Re:
    GiuseppeMN, 11/06/2018 18.47:

    Buona sera, sputnik_r.

    @sputnik_r in Risposta #37, scrive:


    ... Il calendario lo feci 99 e ora ho implementato per l'utilizzo come gestione personale e relative richieste ferie, permessi 104, permessi avis, parentali ecc.

    Quindi quella che vedi è una parte piccola e fatta nel 99... non posso più cambiare



    Aquesto punto non saprei che aggiungere se non che, senza alcun dubio, sarei partito con ACCESS e non con Excel.



    Buona serata.

    Giuseppe



    Vediamo cosa fa quel codice che hai aggiunto...quando posso lo provo.  Grazie mille, ciao.
  • OFFLINE
    sputnik_r
    Post: 83
    Registrato il: 03/03/2014
    Città: TORINO
    Età: 54
    Utente Junior
    2007
    00 11/06/2018 18:54
    Re:
    GiuseppeMN, 11/06/2018 12.16:

    Buona giornata, sputnik_r.
    I Record in Riga 10,11,12,13,14,15 e 16 non si riferiscono a Date duplicate ma, avendo indicato in Colonna "I" un valore i Record verranno cancellati e quindi creeranno "#RIF!" nelle Celle sottostanti

    La filosofia della mia proposta era di eliminare le Date duplicate; se la tua esigenza è quella di non considerare le Date duplicate ma di cancellare tutti i Record identificati da un Valore inserito in Colonna "I", cambia tutto.

    Sub Elimina_Date_duplicate()
    Dim Titolo As String, Messaggio As String, Default As String, PswA As String
        Titolo = "Protezione Codice ''Elimina Date duplicate"    ' Definisce il titolo.
        Messaggio = "Per accedere a questa Funzione, devi inserire la Password di autenticazione"
        Default = ""
            PswA = Application.InputBox(Messaggio, Titolo, Default)
        If PswA <> Psw Then
            MsgBox "La Password" & Chr(10) & PswA & Chr(10) _
            & "non è corretta; chiedi autorizzazione al Responsabile."
                End
        End If
    Application.ScreenUpdating = False
    Dim Nrc As Long, x As Long
        
        Call Visualizza_DataSet
        Nrc = Range("B" & Rows.Count).End(xlUp).Row
            For x = Nrc To 4 Step -1
                If Cells(x, 9).Value <> "" Then Cells(x, 2).EntireRow.Delete
            Next x
        Nrc = Range("B" & Rows.Count).End(xlUp).Row
            Cells(5, 2).FormulaLocal = "=$B4+1"
            Cells(5, 2).Copy Range(Cells(5, 2), Cells(Nrc, 2))
    Application.ScreenUpdating = True
    End Sub
    


    Praticamente ho dovuto aggiungere:
    Nrc = Range("B" & Rows.Count).End(xlUp).Row
    Cells(5, 2).FormulaLocal = "=$B4+1"
    Cells(5, 2).Copy Range(Cells(5, 2), Cells(Nrc, 2))


    Non vedo più le Formule in Colonna "H"; è corretto?



    A disposizione.

    Giuseppe




    Questo mi ha cancellato tutto del file che utilizzo per le prove.


    Poco male; qui su questo mi arrendo. Grazie ancora.
  • OFFLINE
    GiuseppeMN
    Post: 3.027
    Registrato il: 03/04/2013
    Utente Master
    Excel 2000 - 2013
    00 11/06/2018 20:00
    @sputnik_r, in Risposta #41, scrive:


    Questo mi ha cancellato tutto del file che utilizzo per le prove.



    Solo per completezza.

     Nrc = Range("B" & Rows.Count).End(xlUp).Row 

    Controlla quanti Record ci sono nel DataSet

     Cells(5, 2).FormulaLocal = "=$B4+1" 

    In Cella "B5" riporta la Data successiva a quella presente in Cella "B4"

     Cells(5, 2).Copy Range(Cells(5, 2), Cells(Nrc, 2)) 

    Copia la Formula presente in "B5" nelle Celle sottostanti fino all'ultimo Record presente nel DataSet.

    Non so su quale File hai testato il Codice ma non può averti cancellato tutto; quello che può essere successo è quello che ho scritto in Risposta #34.

    @GiuseppeMn, in Risposta #34, scrive:


    ... I "#RIF!" sono spaririti ma i riferimenti delle date sono cambiati e questo credo non ti vada bene ...



    Giuseppe

    Windows XP - Excel 2000
    Windows 10 - Excel 2013
  • OFFLINE
    sputnik_r
    Post: 84
    Registrato il: 03/03/2014
    Città: TORINO
    Età: 54
    Utente Junior
    2007
    00 11/06/2018 20:08
    L'ho provato sul file quasi completo su cui faccio le prove ma se è così lo riproverò con più attenzione. ..non appena ho tempo.

    Buona serata.
  • OFFLINE
    sputnik_r
    Post: 85
    Registrato il: 03/03/2014
    Città: TORINO
    Età: 54
    Utente Junior
    2007
    00 11/06/2018 20:13
    Le date ovviamente devono essere continuative per tutto l'anno. E mantenere il criterio del 1 2 3 turno i riposi e ferie.

    Tutte quelle celle sono concatenate.

    I duplicati duplicano la riga senza formule mentre la riga che scende continua a mantenere i riferimenti a quella precedente a quella duplicata.
    Se la duplichi 5 volte la riga a cui faranno riferimento i dati del nuovo giorno continuerà a essere quella 5 righe sopra.
  • OFFLINE
    sputnik_r
    Post: 86
    Registrato il: 03/03/2014
    Città: TORINO
    Età: 54
    Utente Junior
    2007
    00 14/06/2018 12:50
    Rieccomi all'assalto...
    ...


    Buongiorno.

    Purtroppo ho provato tutti i codici proposti e anche qualche modifica senza risultati.

    Siamo arrivati ad avere l'elenco filtrato di date e turni duplicati SENZA FORMULE.

    Come spiego nell'immagine allegata, se provo ad eliminare manualmente una a una le righe tutti i riferimenti delle righe nascoste sopravvivono e tutto continua a funzionare.

    Se invece seleziono tutto manualmente oppure lo faccio fare ai vari codici vba proposti, i riferimenti nelle celle delle righe nascoste vanno persi.

    A questo punto servirebbe un codice che elimini le righe filtrate una a una indipendentemente da quante ce ne sono da eliminare.
    L'importante è che elimini tutte quelle visibili.

    Grazie


  • OFFLINE
    raffaele1953
    Post: 3.537
    Registrato il: 28/06/2011
    Città: AGORDO
    Età: 70
    Utente Master
    2013
    00 14/06/2018 13:34
    Si esiste, e Tu fai un grosso casino... (allega il file che usi, con spiegazioni idonee)
    Se elimini un'area "filtrata", in mezzo ci "saranno pure" righe non selezionate
    Pertanto ad ogni riga elimini dal "basso verso l'alto", una riga per volta.
    Quale è il critero? Il fatto che sia una formula oppure la data (riga precedente sia uguale?"

    Poi se alleghi un'esempio finale, UGUALE al Tuo originale "password ed limitazioni sui bottoni", non saprei come risolvere
    [Modificato da raffaele1953 14/06/2018 13:36]
    Excel 2013
  • OFFLINE
    GiuseppeMN
    Post: 3.034
    Registrato il: 03/04/2013
    Utente Master
    Excel 2000 - 2013
    00 14/06/2018 15:51
    sputnik_r, no, allegare alcun File; è assolutamente inutile.

    Con questa Risposta siamo arrivati a #47, quasi un libro, o accetti di seguire le regole delle Procedure o decidi di modificarli a tuo piacerere; in questo secondo caso devi provare e riprovare le tue scelte fino ad ottenere ciò che desideri.

    Ti ho proposto due soluzioni piuttosto diverse fra loro entrabe eliminano le righe "una ad una", controlla i Codici VBA e ti renderai conto che è esattamente così.

    Ti auguro di cuore di avere la fortuna di trovare, come auspichi nell'immagine allegata in Risposta #45:
    -    Qualcuno che abbia un Codice VBA che elimini le righe una ad una visto che solo così, ndr. secondo te, tutto continua a funzionare.

    In Risposta #34 mi ero offerto per un collegamento in Skype; ritiro la mia disponibilità.

    Windows XP - Excel 2000
    Windows 10 - Excel 2013
  • OFFLINE
    sputnik_r
    Post: 87
    Registrato il: 03/03/2014
    Città: TORINO
    Età: 54
    Utente Junior
    2007
    01 14/06/2018 16:00
    Giuseppe, sei stato molto disponibile ma ti garantisco che dopo il trattamento del tuo codice i riferimenti vanno persi.

    Li ho provati anche oggi.


    Quando riuscirò preparerò il file senza dati sensibili.
  • OFFLINE
    sputnik_r
    Post: 88
    Registrato il: 03/03/2014
    Città: TORINO
    Età: 54
    Utente Junior
    2007
    00 14/06/2018 16:03
    Raffaele; se vado su una qualsiasi delle righe e con pulsante dx seleziono "elimina" i riferimenti rimangono.

    Se invece seleziono tutte le righe ed elimino, in quel caso, no.

  • OFFLINE
    sputnik_r
    Post: 89
    Registrato il: 03/03/2014
    Città: TORINO
    Età: 54
    Utente Junior
    2007
    00 14/06/2018 16:04
    Grazie a entrambi per la pazienza, comunque.
  • OFFLINE
    GiuseppeMN
    Post: 3.040
    Registrato il: 03/04/2013
    Utente Master
    Excel 2000 - 2013
    00 14/06/2018 17:07
    @sputnik_r, scrive:

    ... ti garantisco che dopo il trattamento del tuo codice i riferimenti vanno persi.


    Solo per completezza, garantisco anch'io che prima di inviare una proposta conduco Test approfonditi.
    Nell'immagine allegata la situazione iniziale e quella dopo aver eseguito il Codice VBA proposto in Risposta #41.
    Da sabato-06-01-2018 in poi, dopo l'eliminazione i turni sono cambiati come precisato:

    Giuseppe, in Risposta #34, scrive:

    ... I "#RIF!" sono spaririti ma i riferimenti delle date sono cambiati e questo credo non ti vada bene ...



    In alternativa, successivamente, avevo prposto un'altra Procedura più flessibile che consentiva di non perdere i Riferimenti nelle Date sottostanti a quelle cancellate.

    Ovviamente può capitare che proponga soluzioni non perfettamente testate ma non in questo caso.


    Windows XP - Excel 2000
    Windows 10 - Excel 2013
  • OFFLINE
    sputnik_r
    Post: 90
    Registrato il: 03/03/2014
    Città: TORINO
    Età: 54
    Utente Junior
    2007
    01 14/06/2018 17:51
    Re:
    GiuseppeMN, 14/06/2018 17.07:

    @sputnik_r, scrive:

    ... ti garantisco che dopo il trattamento del tuo codice i riferimenti vanno persi.


    Solo per completezza, garantisco anch'io che prima di inviare una proposta conduco Test approfonditi.
    Nell'immagine allegata la situazione iniziale e quella dopo aver eseguito il Codice VBA proposto in Risposta #41.
    Da sabato-06-01-2018 in poi, dopo l'eliminazione i turni sono cambiati come precisato:

    Giuseppe, in Risposta #34, scrive:

    ... I "#RIF!" sono spaririti ma i riferimenti delle date sono cambiati e questo credo non ti vada bene ...



    In alternativa, successivamente, avevo prposto un'altra Procedura più flessibile che consentiva di non perdere i Riferimenti nelle Date sottostanti a quelle cancellate.

    Ovviamente può capitare che proponga soluzioni non perfettamente testate ma non in questo caso.


     



    A questo punto possiamo essere contenti ugualmente Giuseppe; a giudicare dalle visite comunque interesse ne abbiamo suscitato...non abbiamo risolto ma ne sono uscite cose interessanti, no?


    Sul mio file non funziona, comunque secondo me la discussione è servita ugualmente a me e gli altri utenti.





  • OFFLINE
    GiuseppeMN
    Post: 3.041
    Registrato il: 03/04/2013
    Utente Master
    Excel 2000 - 2013
    00 14/06/2018 18:40
    Il File è quello che hai allegato tu in #32; se funziona solo a me sono portato a credere sia "l'aria del mio paesello".

    Appena ho un momento di tempo preparo una bottiglia con l'aria delle mie parti e te la invio.

    Windows XP - Excel 2000
    Windows 10 - Excel 2013
  • OFFLINE
    sputnik_r
    Post: 91
    Registrato il: 03/03/2014
    Città: TORINO
    Età: 54
    Utente Junior
    2007
    01 14/06/2018 19:00
    Re:
    GiuseppeMN, 14/06/2018 18.40:

    Il File è quello che hai allegato tu in #32; se funziona solo a me sono portato a credere sia "l'aria del mio paesello".

    Appena ho un momento di tempo preparo una bottiglia con l'aria delle mie parti e te la invio.




    hehehe... 


    senti Giuseppe; torniamo alle basi (più adatte a me ovviamente) perché si verifica questo in foto ?





  • OFFLINE
    sputnik_r
    Post: 92
    Registrato il: 03/03/2014
    Città: TORINO
    Età: 54
    Utente Junior
    2007
    01 14/06/2018 19:02
    ma anche...
    ..perché il tuo codice mi si blocca su questa riga di codice ?



  • OFFLINE
    GiuseppeMN
    Post: 3.044
    Registrato il: 03/04/2013
    Utente Master
    Excel 2000 - 2013
    00 14/06/2018 19:46
    Dopo 55 (cinquantacinque) Risposte non ho alcuna intenzione di "tornare alle basi", quindi, vediamo di chiudere questa triste vicenda che in ogni caso, per mè si conclude ora; poi, se trovi soddisfazione nel numero di visite ti lascio in buone, anzi ottime mani di qualche altro "Compagno di viaggio".

    Immagine in Risposta #54
    Se avessi deciso di utilizzare la Funzione "Elimina" non avrei certo scritto il Codice VBA "Elimina_Date_duplicate"

    Immagine in Risposta #55
    Se dal Codice proposto in Risposta #14 hai deciso di eliminare i Codici VBA:
    -    Visualizza_DataSet
    -    Filtra_Date_duplicate
    non puoi pretendere di richiamare il Codice VBA "Visualizza_DataSet" impunemente.

    Windows XP - Excel 2000
    Windows 10 - Excel 2013
  • OFFLINE
    sputnik_r
    Post: 93
    Registrato il: 03/03/2014
    Città: TORINO
    Età: 54
    Utente Junior
    2007
    01 14/06/2018 20:06


    Infatti ho provato anche a inserilo tutto... in quel caso cancella tutto ma poi il risultato, solo in quel caso, è di ottenere tanti mancati riferimenti quando levo il filtro.
  • 15MediaObject0,00557
2