Risultati da 1 a 11 di 11

Discussione: Conta su più Fogli con un criterio



  1. #1
    L'avatar di Gerardo Zuccalà
    Clicca e Apri
    Data Registrazione
    May 2015
    Località
    Milano, Italy
    Età
    49
    Messaggi
    4916
    Versione Office
    2013
    Likes ricevuti
    1117
    Likes dati
    1125

    Conta su più Fogli con un criterio

    (Quiz) Ciao ragazzi
    vado al sodo
    Nel primo foglio (Conta) devo sommare tutte le volte che incontro la lettera (A) o (B) nei vari mesi gennaio, febbraio, marzo?
    Grazie per le vostre risposte

  2. #2
    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
    Ciao Gerardo
    Prova con questo codice
    Codice: 
    Option Explicit
    
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim i As Integer, j As Integer, lettera1 As Integer, lettera2 As Integer, x As Integer
        If Not Intersect(Target, Range("C2")) Is Nothing Then
            lettera1 = Asc(Cells(2, 3))
            For i = 2 To Sheets.Count
                For j = 2 To 5
                    lettera2 = Asc(Sheets(i).Cells(j, 6))
                    If lettera2 = lettera1 Then x = x + 1
                Next j
                Cells(i, 2) = x: x = 0
            Next i
            Cells(2, 4) = Application.WorksheetFunction.Sum(Range("B2:B4"))
        End If
    Oltre a darti il risultato totale, lo da anche per i singoli mesi.

    Ciao,
    Mario

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


  4. #3
    L'avatar di Gerardo Zuccalà
    Clicca e Apri
    Data Registrazione
    May 2015
    Località
    Milano, Italy
    Età
    49
    Messaggi
    4916
    Versione Office
    2013
    Likes ricevuti
    1117
    Likes dati
    1125
    Ciao Marius44
    Mi sto avvicinando al VBA so fare qualcosa molto basic e solo che questa tua formula non mi funziona

    non so dove sbaglio

    Ho fatto nel seguente modo

    1. Copiato questo codice
    2. Aperto la nuova cartella di lavoro,
    3. salvato il file con estensione .xlsm
    4. I tasti ALT + F11 per aprire l'editor di Visual Basic
    5. Premuto i tasti ALT + I per attivare il menu Inserisci
    6. Premuto il tasto M per inserire un modulo standard
    6. Quando il cursore lampeggiva, incollarto il codice
    7. Premuto i tasti ALT + Q per uscire dall'editor, e tornare a Excel
    8. Per eseguire la macro da Excel premere ALT + F8 per visualizzare la finestra Esegui macro. Doppio Fare clic sul nome della macro per eseguirlo.
    dove ho sbagliato?
    ciao
    Ultima modifica fatta da:Gerardo Zuccalà; 16/09/15 alle 23:34

  5. #4
    L'avatar di Textomb
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Catania
    Età
    47
    Messaggi
    171
    Versione Office
    Excel 2016
    Likes ricevuti
    93
    Likes dati
    11
    ciao Gerardo.
    procediamo con ordine.
    con le formule:
    D2 =SOMMA(CONTA.SE(INDIRETTO($A$2:$A$4 & "!f2:f5");C2))
    matriciale da confermare con ctrl-shift-invio-
    oppure normale
    D2 =MATR.SOMMA.PRODOTTO(CONTA.SE(INDIRETTO($A$2:$A$4 & "!f2:f5");C2))

    Per il codice che ha riportato Mario, non puoi farlo funzionare come hai descritto.
    Quello va incollato nel modulo del foglio nell'evento corrispondente al Worksheet_Change
    In sostanza apri il codice ALT-F11
    selezioni il foglio conta. Selezioni l'oggetto worksheet e ti si aprono le possibili gestione degli eventi.
    selezoni il Worksheet_change.
    a questo punto incolli il codice di Mario.
    Questo non va lanciato come le macro nominate. Ma si attivano automaticamente al verificarsi dell'evento richiesto.
    In questo caso ad ogni modifica nelle celle del foglio "conta".
    So che la spiegazione è un pò incasinata. Ma considera che solitamente a quest'ora dormo da un paio d'ore...
    notte.

  6. I seguenti utenti hanno dato un "Like"


  7. #5
    L'avatar di Gerardo Zuccalà
    Clicca e Apri
    Data Registrazione
    May 2015
    Località
    Milano, Italy
    Età
    49
    Messaggi
    4916
    Versione Office
    2013
    Likes ricevuti
    1117
    Likes dati
    1125
    Citazione Originariamente Scritto da Textomb Visualizza Messaggio
    ciao Gerardo.
    procediamo con ordine.
    con le formule:
    D2 =SOMMA(CONTA.SE(INDIRETTO($A$2:$A$4 & "!f2:f5");C2))
    matriciale da confermare con ctrl-shift-invio-
    oppure normale
    D2 =MATR.SOMMA.PRODOTTO(CONTA.SE(INDIRETTO($A$2:$A$4 & "!f2:f5");C2))

    Per il codice che ha riportato Mario, non puoi farlo funzionare come hai descritto.
    Quello va incollato nel modulo del foglio nell'evento corrispondente al Worksheet_Change
    In sostanza apri il codice ALT-F11
    selezioni il foglio conta. Selezioni l'oggetto worksheet e ti si aprono le possibili gestione degli eventi.
    selezoni il Worksheet_change.
    a questo punto incolli il codice di Mario.
    Questo non va lanciato come le macro nominate. Ma si attivano automaticamente al verificarsi dell'evento richiesto.
    In questo caso ad ogni modifica nelle celle del foglio "conta".
    So che la spiegazione è un pò incasinata. Ma considera che solitamente a quest'ora dormo da un paio d'ore...
    notte.
    Ciao TextTomb

    Ok la procedura con le formule ma ho problemi con il codice VBA di Marius44
    cosa vuol dire questo?
    Quello va incollato nel modulo del foglio nell'evento corrispondente al Worksheet_Change
    mi da questo errore vedi l' immagine
    mi puoi spiegare la procedure e il perchè di questa procedura?

    grazie in anticipo

  8. #6
    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
    Ciao Gerardo
    Nel postare i tag del codice s'è mangiato End Sub per chiudere la sub
    Vedi se va bene.
    Ciao,
    Mario

  9. #7
    L'avatar di Vincenzo Damiani
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Molfetta
    Età
    58
    Messaggi
    415
    Versione Office
    2010
    Likes ricevuti
    13
    Likes dati
    634
    Ciao Gerardo,
    senza dubbio la soluzione VBA di Marius44 mi è piaciuta tanto da provarla è ho rilevato lo stesso tuo errore
    che ho risolto aggiungendo alla fine della macro End Sub....
    Funziona perfettamente....

    Ops....sono arrivato qualche secondo di ritardo

    Visto che ci siamo chiederei a Marius44 di spiegarci il codice scritto...magari scrivendo accanto ad ogni riga quello che fa
    grazie
    Ultima modifica fatta da:Vincenzo Damiani; 17/09/15 alle 22:45
    Windows8.1 office 2010

  10. #8
    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
    Colgo l'invito di Vincenzo. Tralasciamo l'inizio e vediamo il cuore della macro (ripeto la riga di codice e proseguo con la spiegazione preceduta da **):

    If Not Intersect(Target, Range("C2")) Is Nothing Then
    lettera1 = Asc(Cells(2, 3))
    ** se c'è un cambiamento nella cella C2 assumi il codice carattere della cella
    For i = 2 To Sheets.Count
    ** dal Foglio in posizione 2 fino alla fine del Fogli
    For j = 2 To 5
    lettera2 = Asc(Sheets(i).Cells(j, 6))
    If lettera2 = lettera1 Then x = x + 1
    Next j
    ** dalla riga 2 alla riga assumi il codice carattere di ogni cella e, se il questo codice carattere è uguale a quello della cella C2 del Foglio1 incrementa il contatore x
    Cells(i, 2) = x: x = 0
    ** scrivi il risultato del contatore nella cella relativa al mese (che sarebbe la i ) e azzera il contatore
    Next i
    ** completa il ciclo dei Fogli
    Cells(2, 4) = Application.WorksheetFunction.Sum(Range("B2:B4"))
    ** scrivi nella cella D" la somma dei singoli mesi
    End If
    ** fine della condizione

    Spero di essere stato chiaro. Ciao a tutti,
    Mario

  11. I seguenti utenti hanno dato un "Like"


  12. #9
    L'avatar di Gerardo Zuccalà
    Clicca e Apri
    Data Registrazione
    May 2015
    Località
    Milano, Italy
    Età
    49
    Messaggi
    4916
    Versione Office
    2013
    Likes ricevuti
    1117
    Likes dati
    1125
    Citazione Originariamente Scritto da Marius44 Visualizza Messaggio
    Colgo l'invito di Vincenzo. Tralasciamo l'inizio e vediamo il cuore della macro (ripeto la riga di codice e proseguo con la spiegazione preceduta da **):

    If Not Intersect(Target, Range("C2")) Is Nothing Then
    lettera1 = Asc(Cells(2, 3))
    ** se c'è un cambiamento nella cella C2 assumi il codice carattere della cella
    For i = 2 To Sheets.Count
    ** dal Foglio in posizione 2 fino alla fine del Fogli
    For j = 2 To 5
    lettera2 = Asc(Sheets(i).Cells(j, 6))
    If lettera2 = lettera1 Then x = x + 1
    Next j
    ** dalla riga 2 alla riga assumi il codice carattere di ogni cella e, se il questo codice carattere è uguale a quello della cella C2 del Foglio1 incrementa il contatore x
    Cells(i, 2) = x: x = 0
    ** scrivi il risultato del contatore nella cella relativa al mese (che sarebbe la i ) e azzera il contatore
    Next i
    ** completa il ciclo dei Fogli
    Cells(2, 4) = Application.WorksheetFunction.Sum(Range("B2:B4"))
    ** scrivi nella cella D" la somma dei singoli mesi
    End If
    ** fine della condizione

    Spero di essere stato chiaro. Ciao a tutti,
    Mario
    Mariuss44 sei un grande!!
    sei uno stimolo per tutti gli appassionati di VBA
    Mariuss44 sei una risorsa per questo forum

    PS a quando una piccola immagine del profilo/Avatar per rendere il forum più simpatico?
    Ciao marriu44 continua cosi!!

  13. #10
    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
    Troppo buono. Grazie per i complimenti.
    Per l'immagine ci sto pensando.
    Ciao,
    Mario

  14. #11
    L'avatar di Vincenzo Damiani
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Molfetta
    Età
    58
    Messaggi
    415
    Versione Office
    2010
    Likes ricevuti
    13
    Likes dati
    634
    Grazie Marius44 della tua spiegazione.
    mi associo a quanto detto da Gerardo
    Windows8.1 office 2010

Discussioni Simili

  1. [Risolto] conta se su più fogli
    Di gianfranco lazzini nel forum Domande su Excel in generale
    Risposte: 13
    Ultimo Messaggio: 02/02/17, 23:34
  2. [Risolto] Evidenziare le celle disposte su fogli differenti se soddisfano un criterio
    Di Cristina1 nel forum Domande su Excel in generale
    Risposte: 36
    Ultimo Messaggio: 17/12/16, 20:09
  3. Somma con singolo criterio su fogli multipli
    Di Gerardo Zuccalà nel forum Domande su Excel in generale
    Risposte: 6
    Ultimo Messaggio: 09/09/15, 08:17
  4. conta.più.se con criterio di data
    Di matteo nel forum Domande su Excel in generale
    Risposte: 5
    Ultimo Messaggio: 18/08/15, 15:10
  5. Quiz # 16 Conta con criterio (tra due date)
    Di Gerardo Zuccalà nel forum Domande su Excel in generale
    Risposte: 8
    Ultimo Messaggio: 29/06/15, 20:31

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
  •