Pagina 1 di 5 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 43
  1. #1

    Aiuto su formula SOMMA.SE di exel

    Salve,
    cercherò di essere + sintetico e soprattutto chiaro possibile.
    Il quesito è il seguente:
    Ho un file chiamato GINO.xls, con circa 120 Fogli rinominati da 1 a 120 (sono in continuo aumento).
    Ogni foglio è strutturato uguale.
    Ho la necessità di sapere su un solo Foglio chiamato TOTALI, il numero di pezzi di un articolo x (codificato con un numero), mi spiego meglio con CONTA.SE è perfetto, il problema è che ogni volta devo cambiare a mano il riferimento foglio; il famoso '1'! fino a '120'!.
    La sintassi che uso adesso è =Somma.se('1'!$E$10:$G$26;$O$119;'1'!$G$10:$G$26), c'è la possibilità di modificare dinamicamente il riferimento al foglio?

    PS: Per altre cose ho usato la formula INDIRETTO, ma qui non ne vuole sapere.
    Premetto che di programmazione a livello visual basic ne sò il giusto, quindi possibilmente cose semplici.

    Grazie
    ale tacchino82

  2. #2
    Ho trovato questa soluzione sole che non so compilarla nè dove inserirla mi aiutate?

    \\\\
    Function my3DSum(CheckCell As String, CompString As String, SumCell As _
    String, ParamArray SheetList() As Variant)

    Dim mySheets As Sheets, myWs As Worksheet
    Dim myRangeC As Range, myRangeS As Range
    Dim rTemp As Range
    Dim iRow As Integer
    Dim lTot As Long

    Set mySheets = Sheets(SheetList)
    Set myRangeC = Range(CheckCell)
    Set myRangeS = Range(SumCell)

    For Each myWs In mySheets
    Set myRangeC = myWs.Range(CheckCell)
    Set myRangeS = myWs.Range(SumCell)
    For Each rTemp In myRangeC
    If rTemp.Value = CompString Then
    iRow = rTemp.Row
    lTot = lTot + myRangeS.Cells(iRow, 1).Value
    End If
    Next rTemp
    Next myWs

    my3DSum = lTot

    End Function

    CHECKCELL : stringa che rappresenta l'intervallo di celle che deve
    essere testato

    COMPSTRING : valore che deve essere confrontato con le celle presenti
    nell'intervallo CHECKCELL

    SUMCELL : stringa che rappresenta l'intervallo di celle che deve essere
    sommato

    SHEETLIST : elenco dei fogli in cui risiede l'intervallo specificato nel
    CHECKCELL
    \\\\\


    grazie
    ale tacchino82

  3. #3
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Prova con questa macro

    codice:
    Sub somma()
    Dim totale As Long
    Dim foglio As Worksheet
    totale = 0
    For Each foglio In ActiveWorkbook.Sheets
        totale = totale + Application.WorksheetFunction.SumIf(foglio.Range("$E$10:$G$26"), Range("foglio1!$O$119"), foglio.Range("$G$10:$G$26"))
    Next foglio
    MsgBox totale
    End Sub
    Non ho capito perchè includi nell'intervallo la colonna G (e10:g26) sulla quale farai la somma ma la sostanza è questa.

    Devi semplicemente andare su strumenti => macro => macro, assegnare un nome alla stessa (nel mio esempio somma) e incollare il codice. Per eseguirla stesso percorso e click su esegui.

  4. #4
    Utente di HTML.it L'avatar di nelsonblu
    Registrato dal
    Feb 2007
    Messaggi
    2,234
    Secondo me con 120 (?!!) fogli in costante aumento penso sia più adatto un database.

  5. #5
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Originariamente inviato da nelsonblu
    Secondo me con 120 (?!!) fogli in costante aumento penso sia più adatto un database.
    Lo penso anch'io.... ma tant'è
    Mai usati tanti fogli in un unico file. Deve essere un casino raccapezzarsi.
    Buona notte a tutti.

  6. #6
    Concordo che non è semplice ma essendo un file che viene costantemente aggiornato, ed essendo importante soprattutto la consultazione vi posso dire che è ben congeniato.

    Rimane sempre meglio un db ma conoscendo poco access non oso immaginare cosa significhi fargli fare le operazioni tipo quella chiesta.

    Grazie per la dritta provo subito
    ale tacchino82

  7. #7
    Grazie nicola75ss funziona mhhhaaaa....
    Mi spiego:
    Al posto di foglio1 ho messo Totali (è la pagina con il riepilogo) e funziona.
    Immagina che sul foglio totali ho un rigo per ogni articolo, quindi in totale 120 ipotetici righi.
    Mi serve visualizzare per ogni rigo quanti articoli dello stesso colore ho ( lo so che è assurdo ma per farti capire....)
    Usando la tua formula mi dici il totale ed è ok ma ho 2 problemi.
    1- non mi visualizza ad ogni rigo quanti articoli con il colore (codificato) c sono.
    (cioè mi serve sapere per ogni rigo che n. di pezzi c sono con quel colore.)
    2- Mi da la somma totale.

    Ricapitolando mi servirebbe che ad ogni rigo mi visualizzasse il n. di pezzi del colore cercato.
    La somma totale di quel colore su tutti i fogli la posso fare tranquillamente dopo con un somma, altrimenti so il n. totale ma non quanti per ogni rigo.

    Se non c'è modo userò il somma.se ed ogni volta che aggiungo un rigo nel foglio totali modificherò il riferimento al foglio dove prendere i dati ( ma è una palla).

    Grazie
    ale tacchino82

  8. #8
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Vedi se così va bene

    codice:
    Sub somma()
    Dim totale As Long
    Dim i As Integer
    Dim foglio As Worksheet
    Worksheets("Totali").Range("A:B").ClearContents
    totale = 0
    i = 1
    For Each foglio In ActiveWorkbook.Sheets
        'If foglio.Name <> "Totali" Then
        Sheets("Totali").Range("a" & i).Value = foglio.Name
        Sheets("Totali").Range("b" & i).Value = Application.WorksheetFunction.SumIf(foglio.Range("$E$10:$G$26"), Range("Totali!$O$119"), foglio.Range("$G$10:$G$26"))
        i = i + 1
        'End If
    Next foglio
    Sheets("Totali").Range("A" & i).Value = "Totale"
    Sheets("Totali").Range("B" & i).Formula = "=SUM(B1:B" & i - 1 & ")"
    End Sub
    Nel foglio Totali colonna A comparirà il nome del foglio, nella colonna B il totale corrispondente e alla fine la somma. Non so se il foglio totali debba essere conteggiato o meno. Ti ho commentato l'if ad esso relativo. Se quel foglio è da escludere decommenta if e sua chiusura.

    Fai attenzione a questa parte di codice
    Application.WorksheetFunction.SumIf(foglio.Range(" $E$10:$G$26"), Range("Totali!$O$119")

    dove ho messo il riferimento al foglio Totali per la cella O119. Se il foglio è un altro (foglio1 o quello che è) modifica di conseguenza.

  9. #9
    Grazie nicola

    Grande funziona.

    1_ Un' ultima cosa posso aggiungere anche dei fogli da escludere nella ricerca?
    Te lo chiedo xchè lui li visualizza e considera tutti, ma alcuni sono dei riepiloghi o altre cose.

    Grazie mille davvero.


    2_ ps: Visto che sei un guru ne approfitto: c'è la possibilità di fargli prendere ogni singolo foglio della ricerca leggendo da una determinata cella (naturalmente quella cella si chiama come il foglio da considerare)? così facendo posso impostarlo accanto ad ogni articolo presente in totali e visualizzando le relative quantità accanto.

    Grazie grazie grazie
    ale tacchino82

  10. #10
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Originariamente inviato da alessio.82
    Grazie nicola

    Grande funziona.

    1_ Un' ultima cosa posso aggiungere anche dei fogli da escludere nella ricerca?
    Te lo chiedo xchè lui li visualizza e considera tutti, ma alcuni sono dei riepiloghi o altre cose.

    Grazie mille davvero.


    2_ ps: Visto che sei un guru ne approfitto: c'è la possibilità di fargli prendere ogni singolo foglio della ricerca leggendo da una determinata cella (naturalmente quella cella si chiama come il foglio da considerare)? così facendo posso impostarlo accanto ad ogni articolo presente in totali e visualizzando le relative quantità accanto.

    Grazie grazie grazie
    Per rispondere alla prima domanda, i fogli che devi escludere sono pochi o molti? A seconda dei casi procediamo in due modi diversi. La seconda domanda non mi è chiara. Una volta che aggiungiamo il codice per l'esclusione dei fogli che non ti servono, la macro che ti ho scritto non fa già quel lavoro?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.