Risultati da 1 a 11 di 11

Discussione: Avanzamento



  1. #1
    L'avatar di lala10
    Clicca e Apri
    Data Registrazione
    Apr 2016
    Località
    N/D
    Messaggi
    68
    Versione Office
    Excel 2010
    Likes ricevuti
    0
    Likes dati
    16

    Avanzamento

    Ciao a tutti,
    ho bisogno di una mano nella scrittura di una VBA che mi avanzi le date. Ho allegato un file excel in cui nel foglio ''agg'' e nella colonna G devono essere avanzate le date della colonna F; in particolare devo analiazzare tutte le celle della colonna G e i casi sono questi:
    - se nella cella in corso della colonna G è già presente una data allora non faccio niente e lascio ciò che c'è
    -se la cella in corso della colonna G è vuota allora devo analizzare la colonna F: - se la rispettiva cella della colonna F è vuota allora significa che non c'è nulla da avanzare e lasci vuota anche la cella della colonna G;
    -se invece la cella della colonna F è piena mi cerchi il rispettivo articolo nel foglio Distinta Base e vedi se deve essere mandato in lavorazione, dunque controlli la colonna ''LAVORAZIONE'' e se è presente un valore (in questo caso 12) sommi quei giorni alla data della cella in corso e metti il risultato nella colonna G, altrimenti se il valore non è presente significa che non deve essere mandato in lavorazione e lasci vuota la cella della colonna G.
    Cosa molto importante che devo tener in considerazione dei giorni lavorativi e l'elenco dei giorni disponibili è dato dalla colonna K del foglio Distinta base, quindi quando modifico le date devo prendere la data risultante se è presente nell'elenco altrimenti la data immediatamente successiva (più grande).

    Spero di essere stata chiara e attendo le vostre risposte sicura di un grande aiuto!
    Grazie,
    lala
    File Allegati File Allegati

  2. #2
    L'avatar di Berna11
    Clicca e Apri
    Data Registrazione
    Feb 2016
    Località
    Latina
    Età
    62
    Messaggi
    2265
    Versione Office
    Excel 2010
    Likes ricevuti
    903
    Likes dati
    450

    Re: Avanzamento

    Salve lala10,
    intanto qualche considerazione, non hai spiegato se vuoi usare la macro o le formule per ottenere il risultato ma, visto che hai postato nella sezione dedicata alle macro credo intenda usare queste.
    Bene, con le macro non so aiutarti.

    Ho provato con delle formule e subito dobbiamo risolvere un'incognita, la data in cella G2 da dove viene fuori?
    Inoltre, se nella cella c'è già un valore non posso usare la cella per inserire una formula pertanto ho usato la colonna H.

    Ho seguito le tue istruzioni e sono giunto (quasi) alla fine.
    Dico quasi perchè l'ultima condizione, quella di verificare la data in colonna K foglio Distinta base, e mettere quella superiore, non sono riuscito ad impostarla.
    Inoltre non mi trovo con i tuoi calcoli.
    Esempio riga 24 data in colonna F=05/04/2016 + 12 gg dal foglio Distinta base =17/04/2016 la prima data in colonna K superiore a questa data è il 18/04/2016 tu hai indicato il 21/04/2016???

    La formula inserita in colonna H:

    Codice: 
    =SE(E(G2="";F2="");"";SE(E(G2<>"";F2="");G2;SE(F2="";"";SE(SE(VAL.NON.DISP(CERCA.VERT(A2;'Distinta base'!$A$2:$K$30;6;0));"";CERCA.VERT(A2;'Distinta base'!$A$2:$K$30;6;0))="";"";CERCA.VERT(A2;'Distinta base'!$A$2:$K$30;6;0)+F2))))
    
    Se fino a qui ti va bene speriamo che qualcuno ci aiuti a completare la formula per ricercare la data più prossima superiore in colonna K.
    File Allegati File Allegati

  3. #3
    L'avatar di lala10
    Clicca e Apri
    Data Registrazione
    Apr 2016
    Località
    N/D
    Messaggi
    68
    Versione Office
    Excel 2010
    Likes ricevuti
    0
    Likes dati
    16

    Re: Avanzamento

    Ciao Berna 11 ti ringrazio per la risposta ma ho bisogno di una macro :( Comunque con 12 intendo 12 giorni lavorativi dunque da contare nel calendario inserito in colonna K del foglio Distinta Base, quindi mi correggo: cerco la data nel calendario e conto i 12 giorni lavorativi successivi.
    La data in cella G2 sta ad indicare che quell'articolo è andato in lavorazione in quella data che è precedente a giorno in cui io ho estrapolato i dati quindi l'articolo è già avanzato e non devo farlo io.

    Ciao,
    Lala

  4. #4
    L'avatar di lala10
    Clicca e Apri
    Data Registrazione
    Apr 2016
    Località
    N/D
    Messaggi
    68
    Versione Office
    Excel 2010
    Likes ricevuti
    0
    Likes dati
    16

    Re: Avanzamento

    Ciao a tutti,
    non c'è nessuno che può aiutarmi?:187:

  5. #5
    L'avatar di Powerwin
    Clicca e Apri
    Data Registrazione
    Mar 2016
    Località
    Milano
    Messaggi
    1404
    Versione Office
    2016 - 2010
    Likes ricevuti
    194
    Likes dati
    71

    Re: Avanzamento

    Ciao, sto provando a creare con VBA qualcosa che faccia al caso tuo...sono arenato sull'ultima condizione, intanto posto il pezzo di codice fatto:

    Codice: 
    Sub ProvaAvanzamento()
    Dim ur As Integer
    With Sheets("agg")
    ur = .Range("A" & Rows.Count).End(xlUp).Row 'conto quante righe sono piene per capire fin dove inserire valori
            For i = 1 To ur -1
                If Cells(1 + i, 7) <> "" Then ' 1a condizione
                    .Cells(1 + i, 13).Value = .Cells(1 + i, 7).Value
                ElseIf Cells(1 + i, 6) = "" And Cells(1 + i, 7) = "" Then ' 2a condizione
                    .Cells(1 + i, 13).Value = "P" ' qui ho messo una lettera per verificare che effettivamente funzioni il codice
                ElseIf Cells(1 + i, 6) <> "" Then ' 3a condizione
                '............. qui bisogna trovare una soluzione
                End If
            Next i
        End With
    End Sub
    Flavio

  6. I seguenti utenti hanno dato un "Like"


  7. #6
    L'avatar di Rubik83
    Clicca e Apri
    Data Registrazione
    May 2016
    Località
    Sant'Agata Bolognese
    Messaggi
    17
    Versione Office
    Excel 2011
    Likes ricevuti
    10
    Likes dati
    0

    Re: Avanzamento

    Ciao Lala,

    ti allego il file con un macro che credo sia quello che cercavi. Nel foglio Database ci ho aggiunto delle formule che se ti danno fastidio si può anche nascondere le colonne. Nel foglio agg basta premere il pulsante con la macro e il gioco è fatto. Attualmente ho visto che alcuni codici non sono presenti nel Database e ho fatto in modo che non vengono inserite date, per alcuni codici non ci sono i giorni lavorativi e allora viene riportata la stessa data presente nella colonna F.

    Fammi sapere
    Ciao
    File Allegati File Allegati

  8. I seguenti utenti hanno dato un "Like"


  9. #7
    L'avatar di Marius44
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Catania
    Età
    73
    Messaggi
    3200
    Versione Office
    Excel2010
    Likes ricevuti
    624
    Likes dati
    154

    Re: Avanzamento

    Ciao a tutti
    arrivo dopo Rubik (che saluto) ma aggiungo la mia soluzione. Allego il file e posto la macro utilizzata.
    Codice: 
    Option Explicit
    
    Sub prova()
    Sheets("agg").Range("H:H").ClearContents
    Dim i As Long, j As Long, dt As Long, num As Long, art As String
    Dim dis As Single, dt1 As Date, dt2 As Date
    Dim uRig1 As Long, uRig2 As Long
        uRig1 = Sheets("agg").Cells(Rows.Count, 1).End(xlUp).Row
        uRig2 = Sheets("Distinta").Cells(Rows.Count, 11).End(xlUp).Row
        For i = 2 To uRig1
            If Sheets("agg").Cells(i, 7) = "" Then          'se è vuota cella G
                If Sheets("agg").Cells(i, 6) <> "" Then     'se NON è vuota cella F
                    dis = 0
                    art = Sheets("agg").Cells(i, 1)         'assume l'articolo della riga
                    On Error Resume Next                    'e lo cerca in distinta
                    dis = Application.WorksheetFunction.Match(art, Sheets("Distinta").Range("A2:A" & uRig1), 0) + 1
                    If dis = 0 Then GoTo 1
                    If Sheets("Distinta").Cells(dis, 6) <> "" Then 'controlla lavorazione
                        dt1 = Sheets("agg").Cells(i, 6)     'se non vuoto assume la data
                        For j = 2 To uRig2                    'cerca fra i giorni lavorativi
                            dt2 = Sheets("Distinta").Cells(j, 11).Value
                            If dt2 = dt1 Then dt = j: Exit For
                        Next j
                        num = dt - 12                       'diminuisce la riga individuata
                        dt2 = Sheets("Distinta").Range("K" & num).Value
                        Sheets("agg").Cells(i, 8) = dt2     'scrive la nuova data individuata
                    End If
                End If
            End If
    1   Next i
    End Sub
    Attenzione che i dati li ho fatti scrivere nella colonna H e non nella G per non "sporcare".

    Ciao,
    Mario
    File Allegati File Allegati

  10. I seguenti utenti hanno dato un "Like"


  11. #8
    L'avatar di lala10
    Clicca e Apri
    Data Registrazione
    Apr 2016
    Località
    N/D
    Messaggi
    68
    Versione Office
    Excel 2010
    Likes ricevuti
    0
    Likes dati
    16

    Re: Avanzamento

    Ciao, ringrazio Powerwin per la risposta ed in particolare Rubick e Marius che hanno creato le macro perfettamente.
    L'unica cosa è che in quella di Rubick ho bisogno che quando per alcuni codici non ci sono i giorni lavorativi mi venga lasciata la cella vuota e non venga scritta la data della colonna F,
    mentre in quella di Mario avrei bisogno che venga scritto tutto nella colonna G perchè nel mio foglio excel ho altri dati e formule nelle colonne successive.
    Ringrazio tutti per la pazienza e la bravura! Complimentii

  12. #9
    L'avatar di Marius44
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Catania
    Età
    73
    Messaggi
    3200
    Versione Office
    Excel2010
    Likes ricevuti
    624
    Likes dati
    154

    Re: Avanzamento

    Ciao Lala
    nella mia macro in questa riga di codice basta sostituire il riferimento alla colonna; invece di 8 metti 7 (quello che ho evidenziato in rosso)
    Codice: 
    Sheets("agg").Cells(i, 7) = dt2     'scrive la nuova data individuata
    Ciao,
    Mario

  13. #10
    L'avatar di lala10
    Clicca e Apri
    Data Registrazione
    Apr 2016
    Località
    N/D
    Messaggi
    68
    Versione Office
    Excel 2010
    Likes ricevuti
    0
    Likes dati
    16

    Re: Avanzamento

    Grazie mille Mario proprio ora la stavo modificando e la sto adattando a tutti gli altri fogli excel su cui sto lavorando.
    Vi ringrazio tutti perchè attraverso i vostri aiuti sto riuscendo a capire e a scrivere da sola piccole VBA
    :18:

  14. #11
    L'avatar di Rubik83
    Clicca e Apri
    Data Registrazione
    May 2016
    Località
    Sant'Agata Bolognese
    Messaggi
    17
    Versione Office
    Excel 2011
    Likes ricevuti
    10
    Likes dati
    0

    Re: Avanzamento

    Citazione Originariamente Scritto da lala10 Visualizza Messaggio
    Ciao, ringrazio Powerwin per la risposta ed in particolare Rubick e Marius che hanno creato le macro perfettamente.
    L'unica cosa è che in quella di Rubick ho bisogno che quando per alcuni codici non ci sono i giorni lavorativi mi venga lasciata la cella vuota e non venga scritta la data della colonna F,
    mentre in quella di Mario avrei bisogno che venga scritto tutto nella colonna G perchè nel mio foglio excel ho altri dati e formule nelle colonne successive.
    Ringrazio tutti per la pazienza e la bravura! Complimentii
    Ciao Lala scusa il ritardo ma non ho avuto tempo nemmeno per accendere il pc in questi giorni :D
    Ti allego il file con la modifica che ti serviva.

    Ciao
    File Allegati File Allegati

  15. I seguenti utenti hanno dato un "Like"


Discussioni Simili

  1. Avanzamento date tenendo conto della capacita' del sistema
    Di lala10 nel forum Domande su Excel VBA e MACRO
    Risposte: 31
    Ultimo Messaggio: 07/05/16, 00:13
  2. Excel 2010 come inserire un pulsante per l'avanzamento rapido della colonna
    Di Pacifico437 nel forum Domande su Excel in generale
    Risposte: 31
    Ultimo Messaggio: 09/12/15, 14:20

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •