differenze fra numeri



  • differenze fra numeri
    di fausto (utente non iscritto) data: 09/11/2012 18:53:57

    il problema è il seguente:
    in una griglia ci sono diversi numeri.
    bisogna eseguire sempre la differenza fra il primo numero a sinistra con l'ultimo numero a destra della stessa riga.
    non sempre il primo numero a sinistra occupa la prima cella a sx, come pure l'ultimo numero a dex non occupa l'ultima calla a dx. esiste la possibilità di fargli eseguire l'operazione in automatico senza dover sempre indicargli l'operazine da fare?
    grazie



  • di Vecchio Frac data: 09/11/2012 18:59:44

    cit. " bisogna eseguire sempre la differenza fra il primo numero a sinistra con l'ultimo numero a destra della stessa riga.
    non sempre il primo numero a sinistra occupa la prima cella a sx, come pure l'ultimo numero a dex non occupa l'ultima calla a dx"
    ---> Come, non sempre? non è una contraddizione? nella riga, il primo numero a sinistra occupa *sempre* la prima cella a sinistra e l'ultimo a destra occupa sempre l'ultima cella. Questo per definizione di "primo" e "ultimo". Qual è il problema vero? come sono disposte le righe di numeri? che ciclo usi per scorrere il range? un file di esempio? :)





  • di HarryBosch data: 12/11/2012 09:29:47

    Mi sono accorto che Fausto aveva allegato un file di esempio.

    Prova a vedere se il file che ti riallego fa quello che intendevi. Il codice calcola la differenza fra il primo valore e l'ultimo di ogni riga inserita, dalla colonna A alla colonna D.
    Se ci sono più colonne di dati devi adattarlo alla tua esigenza.



  • di HarryBosch data: 12/11/2012 09:32:10

    PS: puoi richiamare la macro con
    CTRL + D
    ma ovviamente puoi modificare a piacere la chiamata della macro con i tasti rapidi



  • di fausto (utente non iscritto) data: 12/11/2012 13:58:51

    grazie per la risposta. Certamente questa è la soluzione giusta, io ho provato con la funzione se, però non riesco a concludere l'ultimo passaggio, se avete voglia di risolvere.........allego un file



  • di fausto (utente non iscritto) data: 12/11/2012 14:00:48

    file



  • di HarryBosch data: 12/11/2012 14:25:10

    Cioè, vorresti costruire una funzione con tutti i SE nidificati per controllare tutte le possibili combinazioni?

    Oppure vuoi costruire una funzione personalizzata adattando la routine che ti ho inserito nel file?

    Non vedo il nuovo file che vorresti allegare...



  • di fausto (utente non iscritto) data: 12/11/2012 19:28:26

    il file allegato è quello iniziale perchè già modificato



  • di HarryBosch data: 12/11/2012 23:01:57

    Ho trovato la formula che stavi tentando di costruire.
    Ti allego un nuovo file, "esempio differenza -2" dove ho inserito un paio di formule:
    - una in cui ti calcola la differenza considerando 3 colonne
    - una che calcola la differenza considerando 4 colonne
    Queste formule le ho anche suddivise, in modo che ti sia più facile capirne la costruzione. Mentre nella cella evidenziata di giallo la trovi unita.

    Più in là (delle 4 colonne) non mi sono spinto perché sinceramente preferisco usare una funzione ad doc.
    Ti ho inserito anche quella: la puoi richiamare con

    =fnzDifferenza(intervallo)

    dove nell'intervallo selezioni tutte le celle che ti interessano; anche molte colonne.
    La funzione troverà la differenza tra la prima e l'ultima cella dell'intervallo selezionato.




  • di fausto (utente non iscritto) data: 13/11/2012 10:37:08

    ti ringrazio per l'interessamento.
    Ho provato e così com'è funziona. Il problema è che il risultato è la differenza fra l'ultimo numero con il primo. Ciò si ovvia con lo spostamento dei membri della formula; e funziona. L'unico problema a questo punto è il seguente:
    Nel caso delle tre celle se i valori nella prima e seconda cella sono uguali a zero, mentre nella terza cella c'è un numero, il risultao è 0 e non il numero presente nella cella. Idem nel caso delle quattro celle. Si può ovviare?



  • di HarryBosch data: 13/11/2012 11:01:38

    C'è qualcosa che non mi quadra:
    nelle formule che ti ho inserito si calcola esattamente la differenza fra il primo e l'ultimo numero della riga. Lo puoi vedere anche nelle formule divise, dove ti viene riportato il primo e l'ultimo numero della riga.
    Se il numero è unico, riporta quello.

    Il fatto adesso di inserire degli 0 è una cosa nuova. Non è la stessa cosa lasciare la cella vuota o inserire 0 che è considerato a tutti gli effetti un numero.
    Infatti, per la creazione delle formule ho considerato ="" e non =0 per i calcoli.
    In ogni caso, nel caso delle tre colonne, se metti due zero e poi un numero, la differenza sarà: 0 - numero, e quindi riporterà il numero in negativo, ma non lo zero come dici. Lo stesso con le quattro colonne.

    I tuoi riscontri non mi risultano dal file che ti ho allegato "esempio differenza -2"



  • di fausto (utente non iscritto) data: 13/11/2012 12:16:27

    il punto è proprio quello: che la differenza da dare è fra l'ultimo numero ed il primo della serie e non viceversa (come da quello che mi hai postato)



  • di HarryBosch data: 13/11/2012 13:10:13

    Ok la differenza è tra l'ultimo numero e il primo. Ma solo nel tuo ultimo intervento è diventato chiaro!
    Hai aperto un thread con una questione differente:
    "bisogna eseguire sempre la differenza fra il primo numero a sinistra con l'ultimo numero a destra"
    e anche il primo file che hai allegato dove c'era una tabellina, mostrava una formula con la differenza fra il primo numero e l'ultimo della riga.
    Inoltre gli zeri non erano mai apparsi da nessuna parte.

    In sostanza le formule che ti ho inserito non vanno bene ovviamente, perché consideravano solo la casella vuota, e la differenza inversa. Ora, si può facilmente invertire la differenza, e se non inserisci gli zero il risultato mi sembra corretto.
    Ma se dobbiamo trattare anche lo zero come un numero da escludere, allora le formule sono tutte da rivedere.
    Dovresti provare a inserire una ulteriore condizione tutte le volte in cui appare un confronto di questo tipo:
    cella=""
    dovrebbe diventare
    O(cella="";cella=0)
    Ti lascio provare il risultato.

    Eventualmente ti modifico la funzione, che è semplice da usare ed è adattabile con qualsiasi numero di colonne venga utilizzato.