Pagina 1 di 1
[Risolto] sintassi per statistica
Inviato: martedì 30 aprile 2019, 0:49
da Raoul Duke
Salve,
in una cella per trovare il p-value basta che scrivo
= DISTRIB.T ( A1 ; B1+B2-2 ; 2 )
qual'è la sintassi per scrivere questa formula in una macro?
Grazie
Re: sintassi per statistica
Inviato: martedì 30 aprile 2019, 8:16
da patel
Tu vuoi che la macro scriva la formula per te ? in questo caso
Codice: Seleziona tutto
oSheet = thisComponent.Sheets(0)
oSheet.getCellByPosition(1, 3).setFormula("DISTRIB.T ( A1 ; B1+B2-2 ; 2 ) ")
Re: sintassi per statistica
Inviato: martedì 30 aprile 2019, 9:51
da Raoul Duke
Due problemi:
1-con questo mi scrive la formula nella cella come se fosse una stringa.. non mi restituisce il valore dell'espressione (neanche se inserisco "=" prima della'espressione all'interno delle virgolette)
2-se invece di far riferimento a celle volessi far riferimento a variabili che ho già definito nel codice? del tipo: oCell.Value=DISTRIB.T(X;NCa+NCb-2;2)
mi restituisce ovviamente errore di sintassi nelle parentesi
Re: sintassi per statistica
Inviato: martedì 30 aprile 2019, 10:11
da Gaetanopr
Puoi procedere in diversi modi
1) se usi il metodo formula la formula devi scriverla in inglese
Codice: Seleziona tutto
Foglio1.getCellByPosition(1,17).Formula = "=TDIST(B15;B11+C11-2;2)"
2)Se vuoi usare la formula in italiano devi usare FormulaLocal
Codice: Seleziona tutto
Foglio1.getCellByPosition(1,15).FormulaLocal = "=DISTRIB.T(B15;B11+C11-2;2)"
3)In italiano con variabili
Codice: Seleziona tutto
Foglio1.getCellByPosition(1,16).FormulaLocal = "=DISTRIB.T("& X & ";" & NCa+NCb-2 & ";2)"
Se vuoi il risultato direttamente e non la formula sulla cella puoi agire in 2 modi, una volta inserita la formula nella cella ne copy il risultato
Codice: Seleziona tutto
Foglio1.getCellByPosition(1,15).Value = Foglio1.getCellByPosition(1,15).Value"
oppure tramite le functionAccess senza usare .Formula o FormulaLocal
4)
Codice: Seleziona tutto
Dim svc As Object
svc = createUnoService("com.sun.star.sheet.FunctionAccess")
Foglio1.getCellByPosition(1,18).Value = svc.callFunction("TDIST",Array(X, NCa+NCb-2, 2))
Re: sintassi per statistica
Inviato: martedì 30 aprile 2019, 10:31
da Raoul Duke
Grazie mille! ora ho l'imbarazzo della scelta!!
Re: [Risolto] sintassi per statistica
Inviato: martedì 30 aprile 2019, 10:50
da Raoul Duke
Cosa stranissima Patel:
alla fine ho utilizzato:
Codice: Seleziona tutto
Foglio.GetCellByPosition(X,Y).Formula = "=TDIST("& X & ";" & NCa+NCb-2 & ";2)"
e effettivamente mi dà inserisce nel doc la formula scritta con i valori delle variabili giusti (come si vede nel campo contenuto della cella selezionata), ma poi mi restituisce #NOME
mentre sul file di prova la stessa formula con gli stessi valori mi restituisce il risultato corretto.
hai idea del perché possa fare una cosa del genere?
Re: [Risolto] sintassi per statistica
Inviato: martedì 30 aprile 2019, 11:08
da Raoul Duke
questo è il file se ti può esser utile
Re: sintassi per statistica
Inviato: martedì 30 aprile 2019, 11:30
da patel
prova così
STAT.GetCellByPosition(0,2).FormulaLocal = "=DISTRIB.T("& X & ";" & NCa+NCb-2 & ";2)"
però è strano che DISTRIB.T e TDIST producano risultati diversi
Re: sintassi per statistica
Inviato: martedì 30 aprile 2019, 11:44
da Gaetanopr
Producono risultati diversi, perchè le variabili nella macro sono diversi dai valori sul foglio(se ti riferisci al file che avevo allegato nel mio messaggio precedente).
A me non dà nessun errore, comunque puoi usare le altre varianti che ti ho fornito
Re: sintassi per statistica
Inviato: martedì 30 aprile 2019, 12:38
da patel
mi riferisco al file che allego
Re: sintassi per statistica
Inviato: martedì 30 aprile 2019, 12:56
da Gaetanopr
Con openoffice i risultati sono identici.
Su libreoffice la funzione TDIST viene "tradotta" in DISTRIBT(su openoffce non è presente) e non in DISTRIB.T .
Stranamente la funzione DISTRIB.T su libreoffice restituisce un valore diverso dalla funzione DISTRIB.T di openoffice, invece DISTRIBT (presente solo su libre) restituisce lo stesso valore della DISTRIB.T di openoffice.
Come se la funzione DISTRIB.T di openoffice si chiamasse DISTRIBT su libreoffice.
Re: sintassi per statistica
Inviato: martedì 30 aprile 2019, 13:56
da Raoul Duke
prova così
STAT.GetCellByPosition(0,2).FormulaLocal = "=DISTRIB.T("& X & ";" & NCa+NCb-2 & ";2)"
grazie patel, con questa mi funziona!
non mi dava risultati diversi l'altra... mi restituiva #NOME come risultato! strano... ma vabbè l'importante per ora è che quest'altra mi funziona bene
Re: sintassi per statistica
Inviato: martedì 30 aprile 2019, 14:04
da Gaetanopr
Raoul Duke ha scritto:
grazie patel, con questa mi funziona!
non mi dava risultati diversi l'altra... mi restituiva #NOME come risultato! strano... ma vabbè l'importante per ora è che quest'altra mi funziona bene
Scusami ma forse non ti sei accorto che già avevo fornito questa soluzione tra le 4 nei miei precedenti messaggi assieme al file che avevo allegato
Re: [Risolto] sintassi per statistica
Inviato: martedì 30 aprile 2019, 14:28
da Raoul Duke
si si, avevo provato a usare la tua prima frammentandola con le & , ma come ho visto è meglio per un principiante come me non avventurarsi in modifiche! la terza alla fine è quella che mi ha funzionato per come avevo impostato il codice e non ha bisogno di modifiche! grazie!