Excel e gli applicativi Microsoft Office Attribuire valore a testo e sommarlo

Login Registrati
Stai vedendo 25 articoli - dal 1 a 25 (di 43 totali)
  • Autore
    Articoli
  • #35174 Score: 0 | Risposta

    Natale
    Partecipante
      1 pt

      Ciao a tutti!

      Sto provando a creare una formula per attribuire un valore numerico a specifici contenuti di una cella, quindi sommare il valore ottenuto delle sovrastanti 7 celle (da lun a dom).
      N.B.: la somma è sempre da lun a dom sovrastanti (per tutto il mese e per tutte le colonne che saranno presenti, al momento 2 per semplicità) ma le righe in cui effettuare la somma non saranno sempre le stesse (nel file di esempio sono evidenziate in giallo).

      In C10 ho inserito la formula che sto provando a utilizzare, ma che non funziona come vorrei. Soprattutto, non so come far attribuire il valore "2" qualora nella cella ci sia il segno "+" (prima e dopo il "+" il testo è variabile).

      P.S. nel secondo foglio ci sono i valori da attribuire al testo.

      P.P.S.:  potrebbe essere necessario VBA, ma io non saprei come fare (ma non disdegnerei la soluzione).

      Grazie!

      Allegati:
      You must be logged in to view attached files.
      #35176 Score: 0 | Risposta

      vecchio frac
      Senior Moderator
        272 pts

        Non è necessario VBA, se questo può consolarti, quello che vuoi fare è abbastanza chiaro, ho realizzato pochi mesi fa in ufficio una cosa simile per un problema analogo e adesso vedo se riesco a recuperare la logica di quel ragionamento.

        In VBA peraltro sarebbe abbastanza più semplice, almeno per me, ma voglio provare a cimentarmi 🙂

        #35177 Score: 0 | Risposta

        Natale
        Partecipante
          1 pt

          Grazie!   

          #35178 Score: 0 | Risposta

          vecchio frac
          Senior Moderator
            272 pts

            Allego l'immagine del mio lavoro. Come vedi è simile ed è abbastanza autoesplicativa (sono turni di un infermiere variamente codificati e in base alla codifica attribuisco un numero). Se riesco ad applicarmi provo a riprodurlo sul tuo file, altrimenti prendi spunto e vediamo chi arriva prima 🙂

            Sempre se qualcun altro non ha una bacchetta più magica della mia 😉

             

            #35179 Score: 0 | Risposta

            Natale
            Partecipante
              1 pt

              Grazie, ci provo! Ma è difficile che arrivi prima di chiunque altro.     

              #35180 Score: 0 | Risposta

              vecchio frac
              Senior Moderator
                272 pts

                Allora forse ci siamo 🙂

                Riallego il tuo file con le mie modifiche. Ho introdotto una colonna di appoggio per ogni colonna di dati, che avrai cura di nascondere alla fine, perché contiene la traduzione in numeri delle sigle che hai codificato. Ho fatto solo qualche test sommario... a te il piacere di scovare errori e:

                1- cercare di correggerli

                2- riportarmeli per curiosità

                😀

                Allegati:
                You must be logged in to view attached files.
                #35182 Score: 0 | Risposta

                Natale
                Partecipante
                  1 pt

                  Cioè, il tempo in cui stavo cercando di capire la formula dell'immagine allegata e già arriva la soluzione?!   

                  Complimenti! 

                  Ora la testo e ti aggiorno!

                  Grazie!

                  #35183 Score: 0 | Risposta

                  vecchio frac
                  Senior Moderator
                    272 pts

                    Bè in realtà la formula dell'immagine non è così pertinente al tuo caso, però è servita da spunto e sprone 😉

                    Quella formula considera solo le codifiche a una lettera che inizino con determinato simbolo, eliminandole comunque anche se valide, qualora siano seguite da una delle lettere (o delle cifre) indicate nella sequenza. Per esempio la codifica "4" deve restituire "10" ma "4m" viene ignorata; però "4r" è valida e restituisce sempre "10". Quella è stata una bella sfida anche per la trasposizione in formato riferimento dei valori tra cui scegliere.

                    #35184 Score: 0 | Risposta

                    Natale
                    Partecipante
                      1 pt

                      Vecchio frac, a me sembra funzioni tutto!

                      Due cose:

                      1) vorrei capire come funziona la formula, soprattutto dove "legge" che, per esempio, "20--8" deve valere 2?

                      2) non è un gran problema usare le colonne d'appoggio, ma siccome saranno tante, non si potrebbe far girare la formula direttamente nella cella sotto ogni domenica (non so se sono stato chiaro)?

                      P.S.: ho dimenticato di codificare "sn" = 0.

                      #35186 Score: 0 | Risposta

                      vecchio frac
                      Senior Moderator
                        272 pts

                         

                        =SE.ERRORE(INDICE(table;CONFRONTA(C3;table_col1;0);2);SE.ERRORE(SE(RICERCA("+";C3);2);SE(VAL.VUOTO(C3);0;1)))

                        La formulaccia si capisce più facilmente se la spacchetti nei suoi parametri e, questi, negli argomenti.

                        In pratica si limita a codificare prima i valori noti, che trova nella tabella "table" e poi se non li trova (SE.ERRORE) cerca le eccezioni: il "+", poi la cella vuota, poi qualsiasi altra cosa, e vi associa il relativo codice numerico. Poi una banale SOMMA alla fine della settimana ti riporta il risultato desiderato.

                        La tabella di riferimento ("table") è definita nel Foglio2; è estensibile ma devi rinominare il nome definito altrimenti i nuovi valori aggiunti non vengono riconosciuti (lo so... potevo creare una tabella definita dinamicamente. Ma te lo lascio come esercizio 🙂 ). Occhio che la prima colonna della table è definito anch'esso ("table_col1") e serve alla formula stessa come parametro di CONFRONTA.

                        Se guardi il Foglio2 in corrispondenza di "20--8" c'è il 2 che è il valore da associare a questa codifica. Il resto segue la regola che hai imposto tu (per cui puoi provare ad aggiungere la nuova condizione).

                        Ho utilizzato il trucco della colonna di appoggio per semplificare la formula, altrimenti avrei dovuto inserire una SOMMA di sette formule identiche dentro la stessa cella. Fattibile ma brutto assai e più difficile da manutenere. Se non ti piace questo sistema puoi mettere queste colonne d'appoggio nel Foglio2, inserendo le formule per, poniamo, 50 colonne, e poi nel Foglio1 semplicemente puntare alla cella di sommatoria in fondo a ogni settimana. Se 50 colonne non sono sufficienti puoi metterne quante ne vuoi (il numero di colonne disponibili in Foglio2 è 16.384).

                        Se questo nuovo suggerimento non ti è chiaro nemmeno dopo aver provato, dimmelo che ti riallego l'esempio con il nuovo formato.

                         

                        #35188 Score: 0 | Risposta

                        vecchio frac
                        Senior Moderator
                          272 pts

                          Ho giocato un po' col tuo file. Mi permetto di allegare una nuova versione, piuttosto diversa ma che forse da quello che ho intuito potrebbe servirti. Può essere che ho sbagliato tutto, ma è interessante l'interessante meccanismo di confezionamento. Sarei contento di discuterne con te. Allego la nuova revisione.

                          Allegati:
                          You must be logged in to view attached files.
                          #35190 Score: 0 | Risposta

                          Natale
                          Partecipante
                            1 pt

                            Buongiorno, vecchio frac!

                            Mi dai troppi compiti da fare tutti insieme e io non sono veloce come te, anzi...

                            Vedo che fa la somma totale; è un dato che attualmente non mi serve, ma non è neanche inutile in assoluto. Do un'occhiata e ti faccio sapere.

                            Grazie!

                            #35191 Score: 0 | Risposta

                            vecchio frac
                            Senior Moderator
                              272 pts

                              Natale ha scritto:

                              Mi dai troppi compiti da fare tutti insieme e io non sono veloce

                              Bè non credo che ci sia una gara di velocità in ballo 😀 ho cercato solo di rendermi utile. Naturalmente gli scenari si perfezionano solo parlandosi. Io non ho la minima fretta di un riscontro, devi prenderti qualsiasi tempo ritieni necessario. Mi basta che tu abbia gradito l'impegno che è stato messo 😉

                              Per il resto... ad maiora 🙂

                              #35192 Score: 0 | Risposta

                              Natale
                              Partecipante
                                1 pt

                                Altro che gradito, molto di più!   

                                In serata, vediamo cos'ho combinato.   

                                P.S.: nel precedente messaggio ho saltato un'emoticon, non vorrei sia stato frainteso il mio tono che era assolutamente di ringraziamento (ci mancherebbe!).   

                                 

                                #35193 Score: 0 | Risposta

                                Natale
                                Partecipante
                                  1 pt

                                  Ciao, vecchio frac!

                                  Ho testato la funzione e il bel confezionamento che hai creato (mi piace più della prima soluzione): tutto è ok!

                                  Ho poi provato ad usare il tutto sul file definitivo e purtroppo non trovo maneggevole la situazione perché, come detto all'inizio del thread, devo fare una somma settimana per settimana.

                                  Per come stanno ora le cose, per le mie minime capacità, il calcolo lo otterrei automaticamente ma le celle da selezionare (su cui fare la somma) dovrei inserirle manualmente in quanto la riga dove avviene la somma è diversa mese per mese.

                                  Da ciò capisco che la cosa più comoda per me sarebbe: "per tutte le colonne, fai la somma delle 7 celle sovrastanti (lun-dom) ogni volta che sei nella riga 'Somma settimana'".

                                  In questo modo, ovunque io vada a inserire la riga "Somma settimana" (e sarebbero sempre e solo 4-5 al mese) avrei la somma di cui necessito. Ovviamente applicando il valore come da tabella già creata (in cui ho inserito qualche altro valore sebbene non riesca a farla dinamica).

                                  Come sempre, se e quando puoi dargli un'occhiata; io, già per com'è adesso la funzione, sarei a posto (ma l'appetito vien mangiando).

                                  P.S.: in riga 2 -fissa- utilizzo un'altra formula per fare la somma di alcuni turni del fine settimana (con altre regole).

                                  Allegati:
                                  You must be logged in to view attached files.
                                  #35195 Score: 0 | Risposta

                                  vecchio frac
                                  Senior Moderator
                                    272 pts

                                    Sei passato a un file xlsm: c'è un motivo? Accetteresti qualche riga di codice ? 😀

                                    Tolgo il flag "Risolto" dalla discussione perché non è ancora risolta.

                                    #35196 Score: 0 | Risposta

                                    vecchio frac
                                    Senior Moderator
                                      272 pts

                                      Orribile come hai massacrato i giorni della settimana, li avevo impostati che in automatico in una cella figurasse numero e giorno della settimana, ed era funzionale ai calcoli... con due celle distinte, e per di più il giorno della settimana è inserito manualmente... un disastro   

                                      #35197 Score: 0 | Risposta

                                      Natale
                                      Partecipante
                                        1 pt

                                        vecchio frac ha scritto:

                                        Orribile come hai massacrato i giorni della settimana, li avevo impostati che in automatico in una cella figurasse numero e giorno della settimana, ed era funzionale ai calcoli... con due celle distinte, e per di più il giorno della settimana è inserito manualmente... un disastro   

                                         Sì, scusa, ho dimenticato di impostare i giorni della settimana in automatico (l'ho fatto sotto e non l'ho ripetuto sopra fra le tante modifiche). 

                                        Sei passato a un file xlsm: c'è un motivo? Accetteresti qualche riga di codice ? 

                                        Perché qualche riga di codice semplice-semplice (semplice...) la inserirò. Non sono però in grado di arrivare al risultato che vorrei ma se per te va bene, che codice sia!   

                                        #35198 Score: 0 | Risposta

                                        vecchio frac
                                        Senior Moderator
                                          272 pts

                                          Comunque ecco qui la mia nuovo proposta... una funzioncina al volo per calcolare le somme parziali.

                                          Function somma_settimana(r As Range) As Integer
                                          Dim j As Long
                                          Dim iStart As Long
                                          Dim f As Range
                                          Dim ra As Range
                                          Dim d As Integer
                                          
                                              iStart = r.Row - 1
                                              d = Day(Cells(iStart, "A"))
                                              Set f = Range("A50:A81").Find(d, LookIn:=xlValues, lookat:=xlWhole)
                                          
                                              If f Is Nothing Then
                                              'caso anormale, settimana parziale
                                                  iStart = r.Row - 2
                                                  d = Day(Cells(iStart, "A"))
                                                  Set f = Range("A50:A81").Find(d, LookIn:=xlValues, lookat:=xlWhole)
                                                  j = r.Row - 3
                                              Else
                                              'caso normale, settimana piena
                                                  j = 7
                                              End If
                                              
                                              Set ra = Cells(f.Row, r.Column).Offset(-6).Resize(7)
                                              somma_settimana = Application.Sum(ra)
                                          
                                          End Function

                                          Da testare, ovvio.

                                          Allego anche il file modificato.

                                          Allegati:
                                          You must be logged in to view attached files.
                                          #35200 Score: 0 | Risposta

                                          vecchio frac
                                          Senior Moderator
                                            272 pts

                                            Naturalmente la fretta.

                                            Errata corrige (riallego anche il file corretto):

                                            Function somma_settimana(r As Range) As Integer
                                            Dim j As Long
                                            Dim iStart As Long
                                            Dim f As Range
                                            Dim ra As Range
                                            Dim d As Integer
                                            
                                                iStart = r.Row - 1
                                                d = Day(Cells(iStart, "A"))
                                                Set f = Range("A50:A81").Find(d, LookIn:=xlValues, lookat:=xlWhole)
                                            
                                                If f Is Nothing Then
                                                'caso anormale, settimana parziale
                                                    iStart = r.Row - 2
                                                    d = Day(Cells(iStart, "A"))
                                                    Set f = Range("A50:A81").Find(d, LookIn:=xlValues, lookat:=xlWhole)
                                                    j = r.Row - 3
                                                Else
                                                'caso normale, settimana piena
                                                    j = 7
                                                End If
                                                
                                                Set ra = Cells(f.Row, r.Column).Offset(-6).Resize(j)
                                                somma_settimana = Application.Sum(ra)
                                            
                                            End Function
                                            Allegati:
                                            You must be logged in to view attached files.
                                            #35202 Score: 0 | Risposta

                                            Natale
                                            Partecipante
                                              1 pt

                                              La cosa che non funziona è che non conta ciò che è nelle righe della domenica.

                                              Poi, servirebbero due cose che renderebbero tutto veramente fluido:

                                              1) più importante, ogni volta che aggiungo/tolgo/cambio un valore in una cella, la somma (della settimana) relativa a quella colonna dovrebbe aggiornarsi automaticamente (come fa la funzione della somma totale), altrimenti ogni volta dovrei manualmente "aggiornare" la cella della somma.

                                              2) se è possibile inserire una riga "somma settimana" dopo ogni domenica, con la "formula" applicata nelle seguenti celle, sarebbe un passaggio in meno che dovrei fare. Come dicevo, ogni mese la riga della domenica cambia, quindi non può essere un calendario con righe preconfezionate.
                                              P.S.: ho già il codice per inserire una riga dopo ogni domenica (lo aggiungo qui se lo recupero), solo non saprei aggiungere il resto.

                                              Grazie!

                                              #35203 Score: 0 | Risposta

                                              vecchio frac
                                              Senior Moderator
                                                272 pts

                                                Natale ha scritto:

                                                non conta ciò che è nelle righe della domenica

                                                ops...  

                                                Sul punto 1 penso che basti dichiarare la funzione come Volatile. Adesso ci lavoro.

                                                Non ho bene compreso il punto 2, intendi forse il tabellone delle righe con la maxiformulaccia che dovrebbero stare nascoste? Sul fatto che ogni mese la domenica cambi, concordo. Il codice dovrebbe essere abbastanza furbo per capirlo.

                                                Comunque stavo già facendo frullare il cervellino per tentare la somma parziale di settimana con formule native invece che con formule definite dall'utente. Così forse avresti anche tu più coraggio a metterci mano 🙂

                                                #35204 Score: 0 | Risposta

                                                Natale
                                                Partecipante
                                                  1 pt

                                                  vecchio frac ha scritto:

                                                  Non ho bene compreso il punto 2, intendi forse il tabellone delle righe con la maxiformulaccia che dovrebbero stare nascoste? Sul fatto che ogni mese la domenica cambi, concordo. Il codice dovrebbe essere abbastanza furbo per capirlo.

                                                  No, intendo dire che inizialmente io ho il calendario con i giorni dal primo all'ultimo del mese, senza interruzioni.

                                                  In un secondo momento, io aggiungo una riga vuota dopo ogni domenica (con un piccolo codice che in questo momento non trovo, ma ce l'ho). Quindi do l'intestazione (Somma settimana), quindi aggiungerei il "codice" nella prima cella da ripetere per tutte le colonne.
                                                  Magari, una formuletta per fare tutto questo in automatico, dato che è ripetitivo, mi farebbe risparmiare qualcosina in termini di tempo.

                                                  OK per il resto!   

                                                  #35205 Score: 0 | Risposta

                                                  Natale
                                                  Partecipante
                                                    1 pt

                                                    Ecco, questo il codice che uso per inserire una riga dopo ogni domenica:

                                                    `Sub Inserisci_riga_dopo_domenica()
                                                     Dim c As Range
                                                     Dim lRow As Long
                                                     lRow = 1
                                                     Dim lRowLast As Long
                                                     Dim bFound As Boolean
                                                     With ActiveSheet
                                                      lRowLast = .Cells(.Rows.Count, 1).End(xlUp).Row
                                                      Do
                                                       Set c = .Range("B" & lRow)
                                                       If c.Value Like "*dom*" Then
                                                        bFound = True
                                                       ElseIf bFound Then
                                                        bFound = False
                                                        If c.Value <> "N. turni" Then
                                                         c.EntireRow.Insert
                                                         lRowLast = lRowLast + 1
                                                         c.Offset(-1, 0).Value = "N. turni"
                                                         c.Offset(-1, 0).Font.Color = RGB(0, 0, 0)
                                                        End If
                                                       End If
                                                       lRow = lRow + 1
                                                      Loop While lRow <= lRowLast + 1
                                                     End With
                                                    End Sub`

                                                    P.S.: non è aggiornato: N. turni da modificare in "Somma settimana" cambiando la colonna da B ad A.

                                                    #35206 Score: 0 | Risposta

                                                    vecchio frac
                                                    Senior Moderator
                                                      272 pts

                                                      Allego nuova versione. Ho corretto il bug della domenica. Ho corretto il funzionamento dell'auto aggiornamento.

                                                      Nota: non editare un tuo messaggio precedente perchè mi confondi... e rischio di non leggere le tue modifiche 🙂

                                                      Allegati:
                                                      You must be logged in to view attached files.
                                                    Login Registrati
                                                    Stai vedendo 25 articoli - dal 1 a 25 (di 43 totali)
                                                    Rispondi a: Attribuire valore a testo e sommarlo
                                                    Gli allegati sono permessi solo ad utenti REGISTRATI
                                                    Le tue informazioni: