Newsgroup: it.comp.os.win.software
Titolo: excel e funzione tendenza

Ho qualche problemino con questa funzione.
Supponiamo di avere questa serie di numeri:
A1  1
A2  2
A3  3
A4  4
A5  5
Nella cella A6 inserisco la funzione =TENDENZA(A1:A5;;6) ottenendo come
risultato 6. Fin qui tutto bene.
Ora supponiamo di avere questa serie di numeri:
A1  1
A2  2
A3  cella vuota
A4  4
A5  5
Se in A6 inserisco la funziona =TENDENZA(A1:A5;;5) mi restituisce il
risultato #VALORE!, mentre io vorrei che non considerasse la cella vuota e
che mi restituisse come risultato la tendenza dei numeri 1, 2, 4, 5 come se
fossero uno di seguito all'altro e cioe' 6.5.
Esiste un modo per ottenere questo?
Grazie.
Max

> lucamax:

Riesco solo ad immaginare una colonna (nascosta?) con le formule:
B1: =A1
B2: =A2
B3: =A4
B4: =A5
quindi:
A6: =TENDENZA(B1:B4;;5)
... ma come e perche' ti trovi in questa situazione, diciamo cosi',
"innaturale"?
--
Ciao.
Maurizio

 "innaturale"?
La soluzione che mi proponi e' valida ma non nel mio caso, mi complicherebbe
ulteriormente il lavoro. Perche' mi trovo in questa situazione?
Ho dei fogli con parecchie colonne composte da 50/100 righe con valori
numerici.
Devo calcolare la tendenza di queste serie di numeri, ma in alcuni casi ci
sono valori mancanti e quindi celle vuote opure celle con valori non
numerici.
Seguendo l'esempio che ho gia' fatto pensavo che una soluzione potesse
essere questa =TENDENZA((A1:A2;A4:A5);;5), ma non e' cosi'.
Probabilmente non mi rimane altro da fare che eliminare le celle vuote,
calcolare la tendenza in una cella provvisoria, copiare la formula e
incollare tramite incolla valori nella cella giusta e quindi ripristinare le
celle eliminate. dovendolo fare con migliaia di colonne capisci che e' una
lavoro lunghissimo.
Ciao e grazie.
Max

lavoro lunghissimo.
L'alternativa e` mettere tutto in un database, e processarlo
automaticamente, con una query o un programmino apposito.
Restando in Excel, si puo` pensare ad utilizzare Visual Basic.
Secondo me, comunque, il primo sistema dovrebbe gia` risolvere la cosa.
Ciao.

 lavoro lunghissimo.
Potresti scriverti una funzione tipo questa:
Option Explicit
Public Function MyTrend( _
  ByRef Arg1 _
, ByRef Arg2)
Dim rng As Excel.Range
Dim sArray$
  For Each rng In Arg1
    With rng
      If Not IsEmpty(.Value) And IsNumeric(.Value) Then
        If Len(sArray) Then Let sArray = sArray & ";"
        Let sArray = sArray & .Value
      End If
    End With
  Next
  Set rng = Nothing
  If Len(sArray) Then _
    Let MyTrend _
      = Application.Evaluate( _
          "TREND({" & sArray & "}, , " & Arg2 & ")")
End Function
--
Ciao.
Maurizio

 End Function
Grazie per il suggerimento. Purtroppo non so nulla di VB e non so nemmeno
cosa ci devo fare con questa funzione. come si applica?
Cmq se non puoi rispondermi e se non risolvo il problema in modo per me piu'
semplice andro' a leggere la guida in linea sperando di capirci qualcosa.
Ciao, Max

 farebbero tutto il lavoro.
Se ho capito bene quello che mi proponi e' creare un nuovo foglio inserendo
in ogni cella una formula di questo tipo:
=SE(TIPO((Foglio1!A1)=1);Foglio1!A1;....?)
e poi copiarla in tutto il foglio. Come avrai visto sono pero' in grado di
scrivere solo la prima parte della formula. In pratica se nelle celle del
foglio originario c'e' un numero nel nuovo foglio viene copiato, altrimenti
dovrebbe eliminarmi la cella vuota o al limite inserire nella cella che nel
foglio originario e' vuota il valore della relativa tendenza.
Tornando all'esempio gia' fatto, nel foglio2 dovrei avere questa sequenza:
A1  1
A2  2
A3  4
A4  5
oppure quest'altra:
A1  1
A2  2
A3  =TENDENZA(A1:A2);;3)
A4  4
A5  5
Una delle due soluzioni mi andrebbe bene, ma non so come ottenerla.
Grazie fin d'ora e grazie mille se mi vorrai aiutare ulteriormente.
Ciao, Max

 cosa ci devo fare con questa funzione. come si applica? [...]
Prova cosi':
seleziona e copia il mio codice del messaggio precedente (e che qui ho
evidenziato fra due righe di asterischi con le parole *inizio* e *fine*);
avvia Excel;
apri il Foglio di lavoro in questione;
seleziona le voci di menu': Strumenti; Macro; Editor di Visual Basic;
ora sei nell' IDE (Integrated Development Environment, ambiente di sviluppo
integrato) di VBA (Visual Basic for Applications, Visual Basic per le
applicazioni);
seleziona le voci di menu': Inserisci; Modulo; Modifica; Incolla; Debug;
Compila VBAProject;
se a questo punto compaiono messaggi di errore e' meglio che lasciamo stare
e rimandiamo a quando avrai piu' familiarita' con VBA, altrimenti: File;
Chiudi e torna a Microsoft Excel;
ora sei nuovamente nell'applicazione Excel e dovresti poter usare la nuova
funzione "MyTrend", che troverai elencata nella finestra "Incolla funzione"
sotto la categoria "Definite dall'utente";
salva (meglio se con nuovo nome).
Esempio d'uso:
A1: 1
A2: 2
A3:
A4; 4
A5: 5
A6: =MyTrend(A1:A5;5)
--
Ciao.
Maurizio

foglio originario e' vuota il valore della relativa tendenza.
Inizia con questo esercizio:
Nel Foglio1 scrivi, in colonna A, questi dati:
    1
    2
    3
    4
    5
    ...
Nel Foglio2 scrivi, in A2, questa formula:
="Foglio1!R1C"&RIF.COLONNA(A2)&":R"&(RIF.RIGA(A2)-1)&"C"&RIF.COLONNA(A2)
(Ho scritto i riferimenti in formato RC perche' e` un po' piu` semplice,
avendo a disposizione RIF.RIGA e RIF.COLONNA)
E in B2 quest'altra:
=SOMMA(INDIRETTO(A2;0))
Quindi copi le due celle A2:B2 in basso per un po' di righe, e dai
un'occhiata al risultato.
E` un po' piu` chiara l'idea? Il riferimento che ottieni in colonna A del
Foglio2, non assomiglia molto a quello che dovresti mettere nella formula
di tendenza?
Ciao.