Condividi tramite

Somma Celle Con Testo

Anonimo
2016-05-22T17:58:41+00:00

Ciao a Tutti,

ho la necessita di sommare delle celle contenenti delle ore lavorative.

mi sorge un problema quando la giornata lavorativa è composta da ore di effettivo lavoro e causali tipo ferie.

Allego esempio:

nella colonna somma infatti non vengono conteggiate le ore di lavoro quando c'è del testo all'interno.

per mario rossi avrei bisogno di avere come totale delle ore lavorate 38,5 per bianchi 29,75

avevo in mente un somma.se ma non ho idea di come impostarlo

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2016-05-25T15:43:07+00:00

Ciao Vito,

eh si infatti credo che ci siamo fraintesi.

per capirci meglio ti spiego il perchè:

ho bisogno di calcolare solo le ore lavorate e quindi scorporare le ore di FE.. MA ecc....

la cella viene fuori dal gestionale con:

6 1 FE dove 6 sono le lavorate e 1 sono quelle prese di ferie. Nella mia somma ho bisogno solo delle lavorate fisicamente e non di quelle ore di giustificazione assenza tipo permessi ferie ecc..

Bene! Difatti, la tua spiegazione originale era chiara; sono stato io che la frainteso!

Ogni ostacolo nella vita non è altro che un passo verso il paradiso, quindi sostituisci il codice precedente con:

'=========>>

Option Explicit

'--------->>

Public Function SommaStrana(r As Range) As Double

    Dim rCell As Range

    Dim vArr As Variant, V As Variant

    Dim i As Long

    Dim dSum As Double

    For Each rCell In r.Cells

        With rCell

            If Not IsEmpty(.Value) Then

                vArr = Split(.Value, Chr(10))

                V = vArr(0)

                If IsNumeric(V) Then

                 dSum = dSum + Val(Replace(V, ",", "."))

                End If

            End If

        End With

    Next rCell

    SommaStrana = dSum

End Function

'<<=========

===

Regards,

Norman

La risposta è stata utile?

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2016-05-23T21:42:59+00:00

Ciao Vito, 

in verde nessun valore..

in giallo:

O2: 4

T11: 1

N15: 6,5

C15: 7

e così via.. spero di essermi spiegato in modo utile.

Purtroppo  credo che situazione sia ancore peggio: le celle problematiche eveidenziate in giallo includono un carattere di riga ed è possibile che ci siano valori numerici sia prima che dopo l'interruzione di riga. 

In ogni caso, credo che si possa superare il problema con una semplice funzione definita dall'utente (UDF). La UDF può essere utilizzata in Excel come qualsiasi funzione nativa.

Quindi, prova qualcosa del genere:

  • Alt+F11 per aprire l'editor di VBA
  • Alt+IM per inserire un nuovo modulo di codice
  • Nel nuovo modulo vuoto, incolla il seguente codice:

'=========>>

Option Explicit

'--------->>

Public Function SommaStrana(r As Range) As Double

    Dim rCell As Range

    Dim vArr As Variant

    Dim i As Long

    Dim dSum As Double

    For Each rCell In r.Cells

        With rCell

            vArr = Split(.Value, Chr(10))

            For i = LBound(vArr) To UBound(vArr)

                dSum = dSum + Val(vArr(i))

            Next i

        End With

    Next rCell

    SommaStrana = dSum

End Function

'<<========= 

  • Alt+Q per chiudere l'editor di VBA e tornare a Excel
  • Salva il file con l’estensione xlsm

Ora sipuò utilizzare la nuova funzione SommaStrana nella cella, ad esempio, J3 per sommare i valori nell'intervallo C3:I3 così:

****=SommaStrana(C3:I3)

Ho utilizzato il tuo file per provare la mia funzione, immettendo la funzione nella cella J2 e trascinandola in basso fino alla cella J468:

Potresti scaricare il mio file di prova Vito20160523.xlsm a:

https://www.dropbox.com/s/na3dr6e3n89gk89/Vito20160523.xlsm?dl=0

===

Regards,

Norman

La risposta è stata utile?

0 commenti Nessun commento

17 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2016-05-23T11:05:36+00:00

    Ciao Vito,

    purtroppo è il gestionale che mi fa solamente estrarre in questo modo. Ed io devo lavorarci su cosi per tutti i mesi dell'anno.

    Ti allego il file in modo tale da evitare che mi spieghi male

    File Test

    Ho scaricato il tuo file e penso sia opportuno rivolgersi a VBA,

    Tuttavia, prima di considerare il codice, penso che sia necessario spiegare sia a me che a Excel (!) quante ore debbano essere attribuiti ai vari codici alfabetici, sia quando i codici si trovano da solo in una cella (vedi le celle evidenziate in verde nel seguente screenshot) che quando si  li trovano in una cella insieme con un valore numerico, come nel caso delle celle evidenziate in giallo:

    ![](http://fud.community.services.support.microsoft.com/Fud/FileDownloadHandler.ashx?fid=7a2d4080-807e-41d2-9a6f-3b864a7f76c1)

    ===

    Regards,

    Norman

    ![](http://fud.community.services.support.microsoft.com/Fud/FileDownloadHandler.ashx?fid=5a54d78f-79fe-4588-a670-dd1ea9b969d7)

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2016-05-23T08:32:15+00:00

    Ciao,

    purtroppo è il gestionale che mi fa solamente estrarre in questo modo. Ed io devo lavorarci su cosi per tutti i mesi dell'anno.

    Ti allego il file in modo tale da evitare che mi spieghi male

    File Test

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2016-05-23T01:00:03+00:00

    Ciao Vito,

    ho la necessita di sommare delle celle contenenti delle ore lavorative.

    mi sorge un problema quando la giornata lavorativa è composta da ore di effettivo lavoro e causali tipo ferie.

    Allego esempio:

    nella colonna somma infatti non vengono conteggiate le ore di lavoro quando c'è del testo all'interno.

    per mario rossi avrei bisogno di avere come totale delle ore lavorate 38,5 per bianchi 29,75

    avevo in mente un somma.se ma non ho idea di come impostarlo

    Credo che la causa del tuo problema sia la struttura dei dati: anche se non ci fossero dei prefissi alfabetici per alcuni dei valori da sommare, sarebbe alquanto difficile ottenere i totali richiesti. Perché non utilizzi una tabella impiegando tre (o più) righe per ogni dipendente? In questo modo, sarebbe possibile sommare ciascuna categoria di retribuzione (ore lavorate, ferie, permesso di maternità, ecc) per ogni dipendente e sarebbe possibile utilizzare una semplice tabella pivot per fornire i totali per ogni dependentei. Con una tale disposizione dei dati, anche senza ricorrersi ad un tavolo pivot, si potrebbe utilizzare semplice formule del tipo SOMMA.SE o MATR.SOMMA.PRODOTTO  per fornire i risultati richiesti.

    Se, nonostante i miei suggerimenti, tu senta la necessità di mantenere la struttura dei dati che hai mostato, credo che sarebbe necessario rivolgersi a VA per scrivere una UDF| (funzione utente). In tal caso, ti pregherei di indicare tutte le possibili categorie di remunerazione e confermare che ogni categoria sia separata in una cella con una semplice interruzione di linea.

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento