Risultati da 1 a 24 di 24

Discussione: Riportare dati se inferiori a valore prefissato



  1. #1
    L'avatar di G.Bove
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    Milano
    Età
    51
    Messaggi
    870
    Versione Office
    2010
    Likes ricevuti
    24
    Likes dati
    186

    Riportare dati se inferiori a valore prefissato

    Ciao a tutti,
    so che potrei arrivarci ma mi sono incartato .

    Vorrei compilare i campi delle colonne N - O- P quando i valori sono inferiori alla quantità budgettata (valore in colonna D e smile rosso =L), ma diversi da 0 (zero).
    Dato atteso:
    C1 "A" - 2° t. - 750
    C2 "B" - 2° t. - 750
    C3 "C" - 2° t. - 750
    C4 "D" - 1° t. - 750
    etc

    https://www.dropbox.com/s/r8a4ma7xes...orum.xlsx?dl=0

    Grazie in anticipo
    Gene

  2. #2

    L'avatar di cromagno
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Sardegna
    Età
    37
    Messaggi
    4024
    Versione Office
    2013
    Likes ricevuti
    1228
    Likes dati
    923

    Re: Riportare dati se inferiori a valore prefissato

    Ciao,
    tanto per capire....
    e se ci sono due turni con la "faccina rossa" (es. C18 "U") come li riporti nella tua tabella?

    ----------Post unito in automatico----------

    Altro dubbio....
    se il "budget" da soddisfare è quello in colonna D, perchè nell'impianto C1 "A" è solo il secondo turno ad avere la faccina rossa (con 750) e non anche il primo turno (con 1056)???

    ----------Post unito in automatico----------

    Comunque....
    lasciando perdere le domande di prima (anche se vorrei avere una risposta ), non c'è bisogno di inserire la condizione "diverso da zero" visto che posso fare riferimento alle "faccine" (=L).
    Quindi, in cella N6:
    =SE(VAL.ERRORE(CONFRONTA("L";$E6:$J6;0));"";C6)

    in O6:
    =SE.ERRORE(INDICE($E$5:$J$5;CONFRONTA("L";$E6:$J6;0)-1);"")

    in P6:
    =SE.ERRORE(INDICE($E6:$J6;CONFRONTA("L";$E6:$J6;0)-1);"")

    tutte da copiare in basso.
    Naturalmente, per le domande fatte prima, in caso di due faccine rosse verrà considerata la prima a partire da sinistra.

    "Sono le persone che nessuno immagina che possano fare certe cose, quelle che fanno cose che nessuno può immaginare."

  3. #3
    L'avatar di G.Bove
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    Milano
    Età
    51
    Messaggi
    870
    Versione Office
    2010
    Likes ricevuti
    24
    Likes dati
    186

    Re: Riportare dati se inferiori a valore prefissato

    Ciao Cromagno,
    rispondo volentieri:
    Citazione Originariamente Scritto da cromagno Visualizza Messaggio
    Ciao,
    e se ci sono due turni con la "faccina rossa" (es. C18 "U") come li riporti nella tua tabella?
    Se non si complica eccessivamente, dovrebbe scriverle entrambe in due righe diverse:
    C18 "U" - 1°t - 750
    C18 "U" - 3°t - 750


    Citazione Originariamente Scritto da cromagno Visualizza Messaggio
    Ciao,

    se il "budget" da soddisfare è quello in colonna D, perchè nell'impianto C1 "A" è solo il secondo turno ad avere la faccina rossa (con 750) e non anche il primo turno (con 1056)???

    .
    In realtà c'è un soglia intermedia (giallo) quindi è la faccina rossa è la discriminante.

    Gene

  4. #4
    L'avatar di GiuseppeMN
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    Mantova
    Messaggi
    864
    Versione Office
    2000 - 2013
    Likes ricevuti
    285
    Likes dati
    160

    Re: Riportare dati se inferiori a valore prefissato

    Buona sera, Gene;
    dopo aver preso buona nota della Proposta di @ cromagno (che saluto), potresti considerare una diversa struttura del Tuo Foglio di lavoro.

    Un esempio potrebbe essere quello proposto nel File in allegato.
    Credo sia un modo per considerare le criticità quando vi è più di un turno nel quale la quantità prodotta non è adeguata a quella prevista.

    Nel momento in cui si riesce a gestire la discriminante, si potrebbe avere una compilazione automatica delle "faccine".



    A disposizione.

    Buona serata.

    Giuseppe
    File Allegati File Allegati
    Windows XP Excel 2000 - Windows 10 Excel 2013

  5. #5
    L'avatar di G.Bove
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    Milano
    Età
    51
    Messaggi
    870
    Versione Office
    2010
    Likes ricevuti
    24
    Likes dati
    186

    Re: Riportare dati se inferiori a valore prefissato

    Ciao Giuseppe,
    interessante il tuo punto di vista ma le mie necessità sono che il foglio stia in un A4 e soprattutto che la dimensione del campo motivazione permetta ai miei collaboratori di aver un sufficiente spazio per scriverle. Chiarisco che nel file originale le faccine sono comunque "automatiche".

    Quindi spero che ci sia una strada per adattare la formula di Cromagno.


    Gene

  6. #6

    L'avatar di cromagno
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Sardegna
    Età
    37
    Messaggi
    4024
    Versione Office
    2013
    Likes ricevuti
    1228
    Likes dati
    923

    Re: Riportare dati se inferiori a valore prefissato

    Citazione Originariamente Scritto da G.Bove Visualizza Messaggio
    Se non si complica eccessivamente, dovrebbe scriverle entrambe in due righe diverse:
    C18 "U" - 1°t - 750
    C18 "U" - 3°t - 750
    Ciao a tutti,

    @Gene
    quello che ha detto Giuseppe (un saluto) è comunque vero.
    Se vuoi i risultati su righe differenti, devi per forza modificare il foglio.... se non in lunghezza (come proposto da Giuseppe) devi farlo almeno in altezza:

    LATO FORMULE:
    devi prevedere tre righe (potenzialmente utilizzabili) per ogni impianto:




    LATO VBA:
    puoi incrementare le righe solo per gli impianti che presentano questa situazione (anche se non so se il gioco vale la candela...):




    Ora sta a te decidere....

    "Sono le persone che nessuno immagina che possano fare certe cose, quelle che fanno cose che nessuno può immaginare."

  7. #7

    L'avatar di cromagno
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Sardegna
    Età
    37
    Messaggi
    4024
    Versione Office
    2013
    Likes ricevuti
    1228
    Likes dati
    923

    Re: Riportare dati se inferiori a valore prefissato

    Per la parte VBA, potresti usare questo codice:

    Codice: 
    Sub Controlla()
    Dim i As Long, j As Long, uRiga As Long, Impianto As String
    Dim Turno As String, Qty As Double, Faccina As String
    Dim Conta As Integer, Verifica As Range, x As Integer, cella As String
    
    
    Application.ScreenUpdating = False
    Faccina = "L"
    uRiga = Range("C" & Rows.Count).End(xlUp).Row
    
    
    'inizio il ciclo dall'ultima riga con valori
    For i = uRiga To 1 Step -1
        'conto quanti turni si devono segnare
        Conta = Application.WorksheetFunction.CountIf(Range("F" & i & ":J" & i), Faccina)
        'se c'è qualche turno da segnare proseguo le verifiche
        'altrimenti passo "all'impianto" successivo
        If Conta > 0 Then
            Impianto = Range("C" & i).Value
            'se c'è più di un turno, aggiungo le righe necessarie
            If Conta > 1 Then
                Range(Cells(i + 1, 3), Cells(i + Conta - 1, 3)).EntireRow.Insert
                'faccio un ciclo per "unire" le celle in base alle righe aggiunte
                For j = 3 To 11
                    Range(Cells(i, j), Cells(i + Conta - 1, j)).Merge
                Next j
            End If
            
            With Range("C" & i & ":J" & i + Conta - 1)
                Set Verifica = .Find(Faccina, LookIn:=xlValues, LookAt:=xlWhole)
                Turno = Cells(4, Verifica.Column - 1).Value
                Qty = Cells(i, Verifica.Column - 1).Value
                Range("N" & i).Value = Impianto
                Range("O" & i).Value = Turno
                Range("P" & i).Value = Qty
                cella = Verifica.Address
                
                Do
                    x = x + 1
                    Set Verifica = .FindNext(Verifica)
                    If Not Verifica Is Nothing Then
                        If Verifica.Address <> cella Then
                            Turno = Cells(4, Verifica.Column - 1).Value
                            Qty = Cells(i, Verifica.Column - 1).Value
                            Range("N" & i + x).Value = Impianto
                            Range("O" & i + x).Value = Turno
                            Range("P" & i + x).Value = Qty
                        Else
                            x = 0
                            GoTo prossimo
                        End If
                    Else
                        x = 0
                        GoTo prossimo
                    End If
                Loop
            End With
        End If
    prossimo:
    Next i
    
    
    Set Verifica = Nothing
    Application.ScreenUpdating = True
    MsgBox "Fatto!"
    End Sub
    Naturalmente, se dovessi ripetere il codice in una tabella dove sono già state aggiunte delle righe ed unite le corrispondenti celle, dovrai implementare il codice con un ciclo che appena partito il codice, eliminerà le righe aggiunte in precedenza.

    Ti lascio un file d'esempio (il codice è associato al pulsante "Controlla..." nel foglio "Lato VBA").
    File Allegati File Allegati

    "Sono le persone che nessuno immagina che possano fare certe cose, quelle che fanno cose che nessuno può immaginare."

  8. #8
    L'avatar di Gianfranco55
    Clicca e Apri
    Data Registrazione
    Nov 2015
    Località
    Vicenza
    Età
    62
    Messaggi
    2076
    Versione Office
    2016
    Likes ricevuti
    553
    Likes dati
    117

    Re: Riportare dati se inferiori a valore prefissato

    Ciao

    viste le risposte ( tutte ottime)

    mi viene una curiosità ( non l'ho mai visto fare)

    ma se volessi fare indice aggrega con rif colonna anziché a riga
    è fattibile per il caso sopra esposto?


    grazie

  9. #9

    L'avatar di cromagno
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Sardegna
    Età
    37
    Messaggi
    4024
    Versione Office
    2013
    Likes ricevuti
    1228
    Likes dati
    923

    Re: Riportare dati se inferiori a valore prefissato

    Ciao Gianfranco,
    non ho il pc al momento ma potresti spiegare meglio cosa vorresti provare?

    Ciao
    Tore

    ----------Post unito in automatico----------

    Ciao a tutti,

    @Gene
    ti propongo il "LATO FORMULE".... magari qualcuno riuscirà ad accorciarle (ho già in mente chi potrebbe essere ).

    Ti riallego il file di prima, dove ho aggiunto le formule (tutte matriciali) al foglio "Lato formule"....

    Nella cella N5:

    =SE(CONTA.SE(INDIRETTO("C"&MAX(SE.ERRORE(RIF.RIGA($C$5:$C5)/($C$5:$C5<>"");0))&":J"&MAX(SE.ERRORE(RIF.RIGA($C$5:$C5)/($C$5:$C5<>"");0)));"L")>=RESTO(RIF.RIGA(A1)-1;3)+1;INDIRETTO("C"&MAX(SE.ERRORE(RIF.RIGA($C$5:$C5)/($C$5:$C5<>"");0)));"")

    nella cella O5:

    =SE.ERRORE(INDICE($A$4:$J$4;PICCOLO(SE.ERRORE((RIF.COLONNA($C$4:$J$4)-1)/(INDIRETTO("C"&MAX(SE.ERRORE(RIF.RIGA($C$5:$C5)/($C$5:$C5<>"");0))&":J"&MAX(SE.ERRORE(RIF.RIGA($C$5:$C5)/($C$5:$C5<>"");0)))="L");"");RESTO(RIF.RIGA(A1)-1;3)+1));"")


    nella cella P5:

    =SE.ERRORE(INDICE($A$1:$J5;MAX(SE.ERRORE(RIF.RIGA($C$5:$C5)/($C$5:$C5<>"");0));PICCOLO(SE.ERRORE((RIF.COLONNA($C$4:$J$4)-1)/(INDIRETTO("C"&MAX(SE.ERRORE(RIF.RIGA($C$5:$C5)/($C$5:$C5<>"");0))&":J"&MAX(SE.ERRORE(RIF.RIGA($C$5:$C5)/($C$5:$C5<>"");0)))="L");"");RESTO(RIF.RIGA(A1)-1;3)+1));"")
    File Allegati File Allegati

    "Sono le persone che nessuno immagina che possano fare certe cose, quelle che fanno cose che nessuno può immaginare."

  10. I seguenti 3 utenti hanno dato un "Like" a cromagno per questo post:


  11. #10

    L'avatar di ges
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Como
    Età
    53
    Messaggi
    7161
    Versione Office
    2011MAC 2016WIN
    Likes ricevuti
    2065
    Likes dati
    1301

    Re: Riportare dati se inferiori a valore prefissato

    Ciao a tutti,
    sempre se ho ben capito, provo un'altra versione di vba:

    Codice: 
    Option Explicit
    Sub Elabora_Sintesi()
    Dim y As Integer
        Application.ScreenUpdating = False
        Range("N5:P67") = ""
            With Sheets(3)
                For y = 5 To 67
                    If .Range("F" & y).DisplayFormat.Interior.Color = .Range("A1").DisplayFormat.Interior.Color Then
                        .Range("N" & y) = .Range("C" & y)
                        .Range("O" & y) = .Range("E4")
                        .Range("P" & y) = .Range("E" & y)
                    End If
                    If Range("H" & y).DisplayFormat.Interior.Color = Range("A1").DisplayFormat.Interior.Color Then
                        .Range("N" & y + 1) = .Range("C" & y)
                        .Range("O" & y + 1) = .Range("G4")
                        .Range("P" & y + 1) = .Range("G" & y)
                    End If
                    If Range("J" & y).DisplayFormat.Interior.Color = Range("A1").DisplayFormat.Interior.Color Then
                        .Range("N" & y + 2) = .Range("C" & y)
                        .Range("O" & y + 2) = .Range("I4")
                        .Range("P" & y + 2) = .Range("i" & y)
                    End If
                Next
                For y = 5 To 67 Step 3
                   Range("N" & y & ":" & "P" & y + 3).Select
                    .Sort.SortFields.Clear
                    .Sort.SortFields.Add Key:=Range("N" & y _
                        ), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
                        xlSortTextAsNumbers
                    With ActiveWorkbook.Worksheets("Lato formule").Sort
                        .SetRange Range("N" & y & ":" & "P" & y + 2)
                        .Header = xlGuess
                        .MatchCase = False
                        .Orientation = xlTopToBottom
                        .SortMethod = xlPinYin
                        .Apply
                    End With
                    Next
            End With
        Application.ScreenUpdating = True
    End Sub
    File Allegati File Allegati
    Quando si scartano tutte le ipotesi possibili, quella che resta, anche se può sembrare improbabile, non può che essere quella giusta!

  12. I seguenti 2 utenti hanno dato un "Like" a ges per questo post:


  13. #11
    L'avatar di Gianfranco55
    Clicca e Apri
    Data Registrazione
    Nov 2015
    Località
    Vicenza
    Età
    62
    Messaggi
    2076
    Versione Office
    2016
    Likes ricevuti
    553
    Likes dati
    117

    Re: Riportare dati se inferiori a valore prefissato

    Ciao Cro

    niente di strano

    normalmente utilizziamo l'aggrega per cercare più risultati nelle righe
    INDICE aggrega rif.riga se

    perché non posso farlo anche per colonne?

    l'esempio lampante è il file in questione
    non faccio una ricerca per riga ma per colonna
    non so se sono stato chiaro

  14. #12

    L'avatar di cromagno
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Sardegna
    Età
    37
    Messaggi
    4024
    Versione Office
    2013
    Likes ricevuti
    1228
    Likes dati
    923

    Re: Riportare dati se inferiori a valore prefissato

    Citazione Originariamente Scritto da Gianfranco55 Visualizza Messaggio
    Ciao Cro

    niente di strano

    normalmente utilizziamo l'aggrega per cercare più risultati nelle righe
    INDICE aggrega rif.riga se

    perché non posso farlo anche per colonne?

    l'esempio lampante è il file in questione
    non faccio una ricerca per riga ma per colonna
    non so se sono stato chiaro


    non capisco perchè parli della funzione AGGREGA....
    tra l'altro io non mi fido tanto della funzione AGGREGA, anche se risulta comoda in certe situazioni per evitare la classica combinazione di tasti.
    Per fare un esempio, nelle ultime formule proposte, inizialmente utilizzavo AGGREGA per trovare la "riga massima":

    MAX(SE.ERRORE(RIF.RIGA($C$5:$C5)/($C$5:$C5<>"");0))

    ma non so perchè... mi dava sempre errore, anche se controllando "step by step" con lo strumento "valuta formula" risultavano corretti tutti i calcoli fino alla fine.

    Per quanto riguarda INDICE, si può certamente fare la "ricerca" per colonne, ma quello che non capisco è se tu non riesci a farlo in una situazione particolare.
    Nel caso allega un semplice file con un esempio pratico (o anche riferendoti ai file già postati).

    @ges
    l'ennesima riprova che anche in VBA ci sono svariati modi per ottenere lo stesso risultato

    Ciao
    Tore


    ----------Post unito in automatico----------

    @Gene
    Ho visto che hai messo qualche "LIKE", ma che ne diresti di buttar giù due righe per farci sapere che soluzione hai adottato?!?

    "Sono le persone che nessuno immagina che possano fare certe cose, quelle che fanno cose che nessuno può immaginare."

  15. #13
    L'avatar di G.Bove
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    Milano
    Età
    51
    Messaggi
    870
    Versione Office
    2010
    Likes ricevuti
    24
    Likes dati
    186

    Re: Riportare dati se inferiori a valore prefissato

    Ciao a tutti,
    vista l'efficacia di tutte le vostre proposte, per una semplice ragione di stampa (leggibilità in A4 con orientamento orizzontale) propendo verso l'utilizzo del lato VBA by Cromagno:


    ma nel lanciare la macro ottengo questo errore:



    E facendo il debug:



    Ho tardato nel darvi riscontro perchè volevo provare a risolvere da solo l'errore ma rien a faire.
    Mi aiutate a capire il perchè dell'errore ?

    Grazie
    Gene

  16. #14

    L'avatar di cromagno
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Sardegna
    Età
    37
    Messaggi
    4024
    Versione Office
    2013
    Likes ricevuti
    1228
    Likes dati
    923

    Re: Riportare dati se inferiori a valore prefissato

    Ciao Gene,
    come sai, con le immagini ci si fa ben poco, serve provare il codice nel file che stai usando visto che il codice è stato scritto per il file che ho allegato.

    Allega il file, ma io potrò dargli un'occhiata solo in serata.

    "Sono le persone che nessuno immagina che possano fare certe cose, quelle che fanno cose che nessuno può immaginare."

  17. #15
    L'avatar di Gianfranco55
    Clicca e Apri
    Data Registrazione
    Nov 2015
    Località
    Vicenza
    Età
    62
    Messaggi
    2076
    Versione Office
    2016
    Likes ricevuti
    553
    Likes dati
    117

    Re: Riportare dati se inferiori a valore prefissato

    Ciao Cro

    l'esempio è quello che abbiamo qui

    usando le formule eliminare le righe vuote.
    riportare praticamente solo i dati dove trovi la L

    Excel 2016 (Windows) 32 bit
    C
    D
    E
    F
    G
    H
    I
    J
    K
    L
    M
    N
    O
    P
    Q
    4
    5
    Impianti
    Budget turno
    1° t.
    2° t.
    3° t
    Totale Giorno
    Impianto
    Turno
    Q.tà
    motivazione
    6
    C1 "A"
    1100
    1056
    J
    750
    L
    1125
    J
    2931
    C1 "A"
    2° t.
    750
    7
    C2 "B"
    1100
    1125
    J
    750
    L
    1125
    J
    3000
    C2 "B"
    2° t.
    750
    8
    C3 "C"
    1100
    1125
    J
    750
    L
    1125
    J
    3000
    C3 "C"
    2° t.
    750
    9
    C4 "D"
    1100
    750
    L
    0
    6
    1125
    J
    1875
    C4 "D"
    1° t.
    750
    10
    C5 "E"
    900
    900
    J
    0
    6
    1050
    J
    1950
    C8 "H"
    2° t.
    750
    11
    C6 "F"
    1100
    1200
    J
    1200
    J
    1200
    J
    3600
    C9 "L"
    3° t
    750
    12
    C7 "G"
    1100
    1125
    J
    1125
    J
    1125
    J
    3375
    C10 "M"
    2° t.
    750
    13
    C8 "H"
    1100
    1125
    J
    750
    L
    1125
    J
    3000
    C22 "Z"
    1° t.
    367
    14
    C9 "L"
    1100
    1125
    J
    0
    6
    750
    L
    1875
    15
    C10 "M"
    1100
    1125
    J
    750
    L
    1125
    J
    3000
    16
    C11 "N"
    1100
    #N/D
    6
    6
    #N/D
    17
    C12 "P"
    1100
    1125
    J
    1125
    J
    1125
    J
    3375
    18
    C13 "J"
    1100
    1125
    J
    1125
    J
    1125
    J
    3375
    19
    C14 "K"
    1100
    1125
    J
    1125
    J
    1125
    J
    3375
    20
    C15 "Q"
    1100
    1125
    J
    1125
    J
    1125
    J
    3375
    21
    C16 "R"
    1100
    1200
    J
    0
    6
    1200
    J
    2400
    22
    C18 "U"
    1100
    750
    L
    1125
    J
    750
    L
    2625
    23
    C19 "X"
    1100
    1125
    J
    750
    L
    1125
    J
    3000
    24
    C20 "S"
    1100
    1200
    J
    0
    6
    1150
    J
    2350
    25
    C21 "T"
    1100
    750
    L
    0
    6
    1125
    J
    1875
    26
    C22 "Z"
    1100
    367
    L
    1101
    J
    1101
    J
    2569
    27
    28
    29
    30
    31
    Sheet: Foglio1

  18. #16
    L'avatar di G.Bove
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    Milano
    Età
    51
    Messaggi
    870
    Versione Office
    2010
    Likes ricevuti
    24
    Likes dati
    186

    Re: Riportare dati se inferiori a valore prefissato

    Ciao,
    non saprei come risolverlo ma almeno ho capito l'inghippo.
    In breve dopo il prima "calcola" se cambi giorno ma anche se gli richiedi di ri-elaborarlo di nuovo, la macro NON gradisce di trovare il lavoro che ha già fatto ossia unire delle celle per compilare la scheda e poi scrivere dentro i valori.

    La prova che ho fatto per arrivare a questa conclusione è stata avviare la macro e:
    1) cancellare i valori presenti nella scheda (colonna da N a P) -> al rilancio della macro l'errore di cui al post°13
    2) Tornare all'origine. Quindi, oltre al punto precedente, ho separato le celle unite dalla macro lasciando solo una riga e cancellando le altre vuote post-separazione -> la macro esegue correttamente lo script.

    Quindi bisognerebbe "dire" alla macro che prima di fare il calcolo deve verificare,in partenza, che ogni impianto occupi una sola riga. Ma come??

    @ Gianfranco55
    Quello che scrivi era proprio il punto di partenza di questo post. Ma se ho ben capito, eventualmente Cromagno mi smentirà, la presenza contemporanea di due turni sotto-performance a parità d'impianto manda in crisi le formule e non permette il raggruppamento.

    Gene

  19. #17

    L'avatar di cromagno
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Sardegna
    Età
    37
    Messaggi
    4024
    Versione Office
    2013
    Likes ricevuti
    1228
    Likes dati
    923

    Re: Riportare dati se inferiori a valore prefissato

    Gene,
    questa cosa te l'avevo detta chiaramente quando ho postato il codice (prova a rileggere quel post).

    Se non riesci da solo proverò a scrivare qualcosa appena avrò un pc sottomano.

    ----------Post unito in automatico----------

    @Gianfranco
    io continuo a non capire... mi sa che ti sei dimenticato qualche spiegazione...
    Perchè nei dati in colonna N passi da C10 "M" a C22 "Z" ??? E gli altri dati?

    Ripeto, allega un file e cerca di spiegare dettagliatamente qual'è il tuo dubbio.

    Ciao
    Tore

    ----------Post unito in automatico----------

    @Gene
    la contemporaneità della presenza di due (o tre) turni, non manda in crisi le formule.... semplicemente, per come è strutturato il foglio non ci sono fisicamente le righe per poter scrivere più di un dato (se non sfalsando i risultati delle due tabelle).
    Se ti bastano i dati uno di seguito all'altro (come nell'immagine di Gianfranco), si può fare (anche se la lettura dei dati, a mio parere, risulterebbe caotica).

    "Sono le persone che nessuno immagina che possano fare certe cose, quelle che fanno cose che nessuno può immaginare."

  20. #18
    L'avatar di G.Bove
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    Milano
    Età
    51
    Messaggi
    870
    Versione Office
    2010
    Likes ricevuti
    24
    Likes dati
    186

    Re: Riportare dati se inferiori a valore prefissato

    Ciao Cromagno,
    mi dispiace non avere capito prima quello che intendevi nel post citato. Ma questo mi ha costretto ad approfondire lo script...e per il mio apprendimento non lo ritengo tempo perso.
    Ovviamente non sono in grado di creare il ciclo suggeritomi ma vorrei provarci da solo in questo week-end e poi domenica sera postare l'eventuale risultato per permettervi di correggere errori o nel caso peggiore condurmi alla soluzione. In merito a quanto postato da Gianfranco, comunque, indipendentemente dal limitato numero di righe (.....se avessi bisogno di molte righe....dovrei iniziare a inviare curriculum in giro) mi piacerebbe imparare con quale formula si potrebbe ottenere il risultato così come da immagine # 15.

    Grazie per l'attenzione.

    Gene

  21. #19

    L'avatar di cromagno
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Sardegna
    Età
    37
    Messaggi
    4024
    Versione Office
    2013
    Likes ricevuti
    1228
    Likes dati
    923

    Re: Riportare dati se inferiori a valore prefissato

    Ciao a tutti,

    tanto per completare la parte in VBA....

    Puoi aggiungere questo (in rosso) al codice:

    Codice: 
    Sub Controlla()
    Dim i As Long, j As Long, uRiga As Long, Impianto As String
    Dim Turno As String, Qty As Double, Faccina As String
    Dim Conta As Long, Verifica As Range, x As Integer, cella As String
    Dim Row_To_Check As Long
    
    
    Application.ScreenUpdating = False
    Faccina = "L"
    uRiga = Range("C" & Rows.Count).End(xlUp).Row
    Row_To_Check = Range("N" & Rows.Count).End(xlUp).Row
    
    
    Range("N5:Q" & Row_To_Check).ClearContents
    Range("C5:K" & Row_To_Check).UnMerge
    
    
    'inizio il ciclo dall'ultima riga con valori
    For i = uRiga To 1 Step -1
        'conto quanti turni si devono segnare
        Conta = Application.WorksheetFunction.CountIf(Range("F" & i & ":J" & i), Faccina)
        'se c'è qualche turno da segnare proseguo le verifiche
        'altrimenti passo "all'impianto" successivo
        If Conta > 0 Then
            Impianto = Range("C" & i).Value
            'se c'è più di un turno, aggiungo le righe necessarie
            If Conta > 1 Then
                Range(Cells(i + 1, 3), Cells(i + Conta - 1, 3)).EntireRow.Insert
                'faccio un ciclo per "unire" le celle in base alle righe aggiunte
                For j = 3 To 11
                    Range(Cells(i, j), Cells(i + Conta - 1, j)).Merge
                Next j
            End If
            
            With Range("C" & i & ":J" & i + Conta - 1)
                Set Verifica = .Find(Faccina, LookIn:=xlValues, LookAt:=xlWhole)
                Turno = Cells(4, Verifica.Column - 1).Value
                Qty = Cells(i, Verifica.Column - 1).Value
                Range("N" & i).Value = Impianto
                Range("O" & i).Value = Turno
                Range("P" & i).Value = Qty
                cella = Verifica.Address
                
                Do
                    x = x + 1
                    Set Verifica = .FindNext(Verifica)
                    If Not Verifica Is Nothing Then
                        If Verifica.Address <> cella Then
                            Turno = Cells(4, Verifica.Column - 1).Value
                            Qty = Cells(i, Verifica.Column - 1).Value
                            Range("N" & i + x).Value = Impianto
                            Range("O" & i + x).Value = Turno
                            Range("P" & i + x).Value = Qty
                        Else
                            x = 0
                            GoTo prossimo
                        End If
                    Else
                        x = 0
                        GoTo prossimo
                    End If
                Loop
            End With
        End If
    prossimo:
    Next i
    
    
    Set Verifica = Nothing
    Application.ScreenUpdating = True
    MsgBox "Fatto!"
    End Sub
    ----------Post unito in automatico----------

    Citazione Originariamente Scritto da G.Bove Visualizza Messaggio
    Ciao Cromagno,
    mi dispiace non avere capito prima quello che intendevi nel post citato. Ma questo mi ha costretto ad approfondire lo script...e per il mio apprendimento non lo ritengo tempo perso.
    Ovviamente non sono in grado di creare il ciclo suggeritomi ma vorrei provarci da solo in questo week-end e poi lunedì postare l'eventuale risultato per permettervi di correggere errori o nel caso peggiore condurmi alla soluzione. In merito a quanto postato da Gianfranco, comunque, indipendentemente dal limitato numero di righe, mi piacerebbe imparare con quale formula si potrebbe ottenere il risultato così come da immagine # 15.

    Grazie per l'attenzione.

    Gene
    Scusa Gene,
    stavo scrivendo mentre hai postato
    File Allegati File Allegati

    "Sono le persone che nessuno immagina che possano fare certe cose, quelle che fanno cose che nessuno può immaginare."

  22. #20

    L'avatar di cromagno
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Sardegna
    Età
    37
    Messaggi
    4024
    Versione Office
    2013
    Likes ricevuti
    1228
    Likes dati
    923

    Re: Riportare dati se inferiori a valore prefissato

    Citazione Originariamente Scritto da Tore
    @Gene
    la contemporaneità della presenza di due (o tre) turni, non manda in crisi le formule.... semplicemente, per come è strutturato il foglio non ci sono fisicamente le righe per poter scrivere più di un dato (se non sfalsando i risultati delle due tabelle).
    Se ti bastano i dati uno di seguito all'altro (come nell'immagine di Gianfranco), si può fare (anche se la lettura dei dati, a mio parere, risulterebbe caotica).


    si sta rivelando più complicato del previsto (o forse sono io che a quest'ora ho i neuroni a nanna).... ma non demordo....

    @ninai



    ----------Post unito in automatico----------

    Ciao a tutti,
    per oggi sono arrivato a questo compromesso (che se ho capito bene, dovrebbe rispondere anche al dubbio di Gianfranco )....

    In cella N3 (formula matriciale):

    =SE.ERRORE(INDICE($C$1:$C$28;PICCOLO(SE.ERRORE(RIF.RIGA($C$5:$J$28)/($C$5:$J$28="L");"");RIF.RIGA(A1)));"")


    In cella O3 (formula matriciale):

    =SE.ERRORE(INDICE($A$4:$J$4;(PICCOLO(SE.ERRORE(RIF.RIGA($C$5:$J$28)/($C$5:$J$28="L")+RIF.COLONNA($C$5:$J$28)/1000;"");RIF.RIGA(A1))-PICCOLO(SE.ERRORE(RIF.RIGA($C$5:$J$28)/($C$5:$J$28="L");"");RIF.RIGA(A1)))*1000-1);"")


    In cella P3 (formula matriciale):

    =SE.ERRORE(INDICE($A$1:$J$28;PICCOLO(SE.ERRORE(RIF.RIGA($C$5:$J$28)/($C$5:$J$28="L");"");RIF.RIGA(A1));(PICCOLO(SE.ERRORE(RIF.RIGA($C$5:$J$28)/($C$5:$J$28="L")+RIF.COLONNA($C$5:$J$28)/1000;"");RIF.RIGA(A1))-PICCOLO(SE.ERRORE(RIF.RIGA($C$5:$J$28)/($C$5:$J$28="L");"");RIF.RIGA(A1)))*1000-1);"")

    tutte da copiare verso il basso.

    Ti riallego il file (queste formule si trovano nel foglio "Formule 2° Versione").

    Le formule sembrano funzionare.... ma aspetto riscontri
    File Allegati File Allegati

    "Sono le persone che nessuno immagina che possano fare certe cose, quelle che fanno cose che nessuno può immaginare."

  23. I seguenti 3 utenti hanno dato un "Like" a cromagno per questo post:


  24. #21
    L'avatar di ninai
    Clicca e Apri
    Data Registrazione
    Jul 2015
    Località
    Barcellona P.G.
    Età
    55
    Messaggi
    1678
    Versione Office
    2010 PC
    Likes ricevuti
    895
    Likes dati
    184

    Re: Riportare dati se inferiori a valore prefissato

    ciao

    cromagno, ti capisco, dopo che si sta tanto su un procedimento, si finisce con l'effetto "cane che si morde la coda" e si va in tilt, senza alcuna lucidità.
    Io l'argomento non l'ho seguito, pertanto potrei anche dire baggianate, ma rifacendomi alle ultime formule e risultati, la prima formula non l'ho toccata, mentre la seconda e terza formula potrebbero ridursi a:
    in O5:
    =INDICE($E$4:$I$4;PICCOLO(SE(INDICE($F$5:$J$28;CONFRONTA(N5;$C$5:$C$28;0);)="L";{1\2\3\4\5});CONTA.SE($N$5:N5;N5)))
    oppure
    =1+INT(PICCOLO(SE(INDICE($F$5:$J$28;CONFRONTA(N5;$C$5:$C$28;0);)="L";{1\2\3\4\5});CONTA.SE($N$5:N5;N5))/2)&"° t."

    in P5:
    =CERCA.VERT(N5;$C$5:$I$28;CONFRONTA(O5;$E$4:$I$4;0)+2;FALSO)
    oppure
    =CERCA.VERT(N5;$C$5:$I$28;SINISTRA(O5;1)*2+1;FALSO)
    "So che spiegare il proprio problema, in modo comprensibile, richiede un certo impegno ed è un lavoro "palloso", ma qualcuno lo deve pur fare ....., indovina chi?" (Cit. "Scossa")

  25. I seguenti 4 utenti hanno dato un "Like" a ninai per questo post:


  26. #22
    L'avatar di Gianfranco55
    Clicca e Apri
    Data Registrazione
    Nov 2015
    Località
    Vicenza
    Età
    62
    Messaggi
    2076
    Versione Office
    2016
    Likes ricevuti
    553
    Likes dati
    117

    Re: Riportare dati se inferiori a valore prefissato

    Ciao Cro



    eccolo che ci siamo capiti

    ora ho un altro dubbio
    ma siete sicuri tu e Ninai di essere normali

    comincio veramente ad avere qualche dubbio

  27. I seguenti utenti hanno dato un "Like"


  28. #23
    L'avatar di G.Bove
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    Milano
    Età
    51
    Messaggi
    870
    Versione Office
    2010
    Likes ricevuti
    24
    Likes dati
    186

    Re: Riportare dati se inferiori a valore prefissato

    [RISOLTO]

    Ciao,
    funziona tutto (Macro e formula Cromagno+Ninai).

    UN GRAZIE IMMENSO e buon fine settimana.

    Gene

  29. #24

    L'avatar di cromagno
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Sardegna
    Età
    37
    Messaggi
    4024
    Versione Office
    2013
    Likes ricevuti
    1228
    Likes dati
    923

    Re: Riportare dati se inferiori a valore prefissato

    Ciao a tutti,
    ho potuto provare solo ora le formule di ninai (grazie per l'intervento).

    Si, direi che le sue alternative vanno molto meglio

    "Sono le persone che nessuno immagina che possano fare certe cose, quelle che fanno cose che nessuno può immaginare."

Discussioni Simili

  1. [Risolto] Come riportare dati da foglio ad altro
    Di homer75 nel forum Domande su Excel VBA e MACRO
    Risposte: 5
    Ultimo Messaggio: 22/11/16, 17:55
  2. Riportare dati con condizioni multiple
    Di G.Bove nel forum Domande su Excel in generale
    Risposte: 11
    Ultimo Messaggio: 19/07/16, 16:25
  3. Riportare valore con 2 condizioni e 1 combobox
    Di G.Bove nel forum Domande su Excel in generale
    Risposte: 12
    Ultimo Messaggio: 17/07/16, 18:23
  4. Trovare celle non vuote e riportare valore
    Di lala10 nel forum Domande su Excel in generale
    Risposte: 9
    Ultimo Messaggio: 07/05/16, 00:32
  5. Riportare dati in una scheda cliente
    Di excel6504 nel forum Domande su Excel in generale
    Risposte: 17
    Ultimo Messaggio: 07/07/15, 14:23

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
  •