Risultati da 1 a 6 di 6

Discussione: Quesito sul calcolo condizionato



  1. #1
    L'avatar di M@urizio
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Roma
    Età
    36
    Messaggi
    28
    Versione Office
    Excel 2016
    Likes ricevuti
    1

    Quesito sul calcolo condizionato

    Ciao a tutti!

    Da qualche giorno, mi stavo chiedendo come automatizzare una certa tipologia di calcoli... :110:
    Allego file di esempio: c'è una piccola tabella, ridotta a soli 3 campi. Tanto per fissare le idee: Categoria Cliente [Colonna A], Data [Colonna B], Pezzi [Colonna C].

    Se io volessi contare quanti ordini di produzione hanno interessato la categoria cliente "Distributore" nel giorno 31/07/2015, MA solo fin quando il totale dei pezzi si mantiene entro una certa soglia <= 130.000 pezzi, esiste una soluzione che non costringa a scrivere cicli in VBA?

    Facendo una valutazione manuale, viene fuori che la soluzione è 34 ordini, a cui corrispondono un totale di 129.656 pezzi (il 35-esimo ordine porterebbe detto totale a 132.750 pezzi).
    Esiste una formula che restituisca il risultato in una singola cella?
    Qual è il ragionamento alla base? Di primo acchito, viene subito in mente un CONTA.PIU'.SE; tuttavia, uno dei criteri non può essere un SOMMA.SE, dal momento che non bisogna inserire un intervallo ma un totale...

    Qualcuno ha la soluzione? :127:

    ...e grazie mille per l'attenzione!

    M@urizio
    Invia MPPM 

  2. #2
    L'avatar di Marius44
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Catania
    Età
    73
    Messaggi
    3222
    Versione Office
    Excel2010
    Likes ricevuti
    627
    Likes dati
    155
    Ciao Maurizio
    In un Modulo standard inserisci il seguente codice (da associare ad un pulsante Modulo)
    Codice: 
    Sub CercaSomma()
        cl1 = Cells(2, 5).Text
        dt1 = Cells(2, 6).Text
        pz1 = Cells(2, 7).Value
        If cl1 = "" Or Not IsDate(dt1) Or pz1 = 0 Then
            '=============================================
            Stop 'adattare alle singole variabili negative
            '=============================================
        End If
        rg = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
        For i = 1 To rg
            cl2 = Cells(i, 1).Text: dt2 = Cells(i, 2).Text
            If cl2 = cl1 And dt2 = dt1 Then
                pz2 = Cells(i, 3).Value
                pzz = pzz + pz2
                If pzz <= pz1 Then
                    Cells(5, 7) = pzz
                    n = n + 1: Cells(5, 6) = n
                Else
                    Exit For
                End If
            End If
        Next
    End Sub
    Devi inserire in E2 la Categoria Cliente che ti interessa, in F2 una data e in G2 il valore massimo da non superare.
    Rispettivamente in F5 e in G5 vedrai il totale ordini ed il valore massimo inferiore al limite dato.
    Nel caso uno dei valori in E2, F2 e G2 è mancante la richiesta viene stoppata (se vuoi puoi mettere dei messaggi oppure un Exit Sub).

    Fammi sapere. Ciao,
    Mario
    Invia MPPM 

  3. I seguenti 5 utenti hanno dato un "Like" a Marius44 per questo post:


  4. #3
    L'avatar di Canapone
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Firenze
    Messaggi
    1076
    Versione Office
    2010 su Win
    Likes ricevuti
    598
    Likes dati
    204
    Ciao,

    se metti in ordine per categoria cliente data puoi provare con questa formula da confermare con control+maiusc+invio.

    =CONTA.PIÙ.SE(A2:INDICE(A2:A1656;CONFRONTA(VERO;MATR.PRODOTTO(--(RIF.RIGA(2:1656)>=MATR.TRASPOSTA((RIF.RIGA(2:1656)-1)));C2:C1656*(A2:A1656=E2)*(B2:B1656=F2))>G2;0));E2;B2:INDICE(B2:B1656;CONFRONTA(VERO;MATR.PRODOTTO(--(RIF.RIGA(2:1656)>=MATR.TRASPOSTA((RIF.RIGA(2:1656)-1)));C2:C1656*(A2:A1656=E2)*(B2:B1656=F2))>G2;0));F2)


    In E2 il cliente, in F2 la data, in G2 il valore massimo.

    Non credo che tu possa estendere la formula a database molto più grandi di quello allegato.

    Meglio il VBA.

    Saluti
    Invia MPPM 

  5. I seguenti 4 utenti hanno dato un "Like" a Canapone per questo post:


  6. #4
    L'avatar di M@urizio
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Roma
    Età
    36
    Messaggi
    28
    Versione Office
    Excel 2016
    Likes ricevuti
    1
    Ragazzi!
    ...
    GRAZIE!!! :255:

    @Marius44: sì, con l'ausilio del codice VBA il foglio resta "leggero"; e considerando che in E2, F2 e G2 - nella mia costruzione - i valori non mancano mai, la soluzione è davvero efficace!
    Domandina: se volessi far partire il codice ad ogni aggiornamento di un'altra Tabella (chiamiamola "Query") che si trova nel foglio precedente e collegata in ODBC ad un'origine dati?! :167:


    @Canapone: sì, considerando che nella mia costruzione nella colonna E apparirebbe sempre e sola una categoria di cliente e nella colonna F l'ordine è sempre cronologico... direi che la formula è proprio quella che stavo cercando!!! _:214:
    Solo una cosa: se utilizzo lo strumento "valuta formula" dici che riesco a capirla?! :235:
    Oppure c'è qualche ragionamento fra le righe? Quando hai un minuto, se non ti arreco troppo disturbo, potresti discutermi la logica della formula a blocchi? :178:


    Ancora grazie mille ragazzi!
    :299:
    Invia MPPM 

  7. #5
    L'avatar di Marius44
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Catania
    Età
    73
    Messaggi
    3222
    Versione Office
    Excel2010
    Likes ricevuti
    627
    Likes dati
    155
    Ciao Maurizio
    rispondo alla domanda rivoltami: si, è possibile agendo sull'evento Workbook_Change del Foglio dove sta la Tabella e richiamando la Sub. In questo caso ti consiglio di inserire anche il codice Application.ScreenUpDating (per evitare lo sfarfallio dello schermo) ponendolo a False all'inizio e a True alla fine della mia sub.

    Ti ringrazio per il gentile riscontro. Se la tua domanda è stata risolta segna questa discussione come [RISOLTO]
    Vai nella barra dei menu, situata all'inizio di questa discussione, troverai il menu “Strumenti Discussione” quindi scegli “Segna questo Thread come risolto”

    Ciao,
    Mario
    Invia MPPM 

  8. I seguenti utenti hanno dato un "Like"


  9. #6
    L'avatar di M@urizio
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Roma
    Età
    36
    Messaggi
    28
    Versione Office
    Excel 2016
    Likes ricevuti
    1
    Perfetto!

    Grazie ancora!

    M@urizio
    Invia MPPM 

Discussioni Simili

  1. Copia e incolla condizionato
    Di LucaB85 nel forum Domande su Excel VBA e MACRO
    Risposte: 5
    Ultimo Messaggio: 05/03/17, 15:30
  2. [Risolto] Somma se condizionato
    Di Cucù^_^ nel forum Domande su Excel in generale
    Risposte: 4
    Ultimo Messaggio: 13/01/17, 10:32
  3. Sblocco celle condizionato
    Di maxilrosso nel forum Domande su Excel VBA e MACRO
    Risposte: 11
    Ultimo Messaggio: 10/12/16, 14:22
  4. valore condizionato
    Di Dagatos nel forum Domande su Excel VBA e MACRO
    Risposte: 13
    Ultimo Messaggio: 23/03/16, 22:24
  5. Spostare righe in modo condizionato
    Di GruppoSIA nel forum Domande su Excel in generale
    Risposte: 24
    Ultimo Messaggio: 08/02/16, 12:30

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
  •