[Risolto] sintassi per statistica

Discussioni sull'applicazione per i fogli di calcolo
Rispondi
Raoul Duke
Messaggi: 132
Iscritto il: giovedì 7 marzo 2019, 12:11

[Risolto] sintassi per statistica

Messaggio 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
Ultima modifica di Raoul Duke il martedì 30 aprile 2019, 13:57, modificato 3 volte in totale.
OpenOffice 4.1.5 con MacOS 10.13.6
patel
Volontario attivo
Volontario attivo
Messaggi: 4020
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: sintassi per statistica

Messaggio 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 ) ")
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Raoul Duke
Messaggi: 132
Iscritto il: giovedì 7 marzo 2019, 12:11

Re: sintassi per statistica

Messaggio 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
Allegati
PROVA 2.ods
(18.82 KiB) Scaricato 134 volte
OpenOffice 4.1.5 con MacOS 10.13.6
Gaetanopr
Volontario
Volontario
Messaggi: 3300
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: sintassi per statistica

Messaggio 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))
Allegati
PROVA 2.ods
(12.43 KiB) Scaricato 126 volte
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
Raoul Duke
Messaggi: 132
Iscritto il: giovedì 7 marzo 2019, 12:11

Re: sintassi per statistica

Messaggio da Raoul Duke »

:D Grazie mille! ora ho l'imbarazzo della scelta!! :D
OpenOffice 4.1.5 con MacOS 10.13.6
Raoul Duke
Messaggi: 132
Iscritto il: giovedì 7 marzo 2019, 12:11

Re: [Risolto] sintassi per statistica

Messaggio 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?
Allegati
fig1.png
OpenOffice 4.1.5 con MacOS 10.13.6
Raoul Duke
Messaggi: 132
Iscritto il: giovedì 7 marzo 2019, 12:11

Re: [Risolto] sintassi per statistica

Messaggio da Raoul Duke »

questo è il file se ti può esser utile
Allegati
Database con MACRO 3.ods
(237.47 KiB) Scaricato 135 volte
OpenOffice 4.1.5 con MacOS 10.13.6
patel
Volontario attivo
Volontario attivo
Messaggi: 4020
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: sintassi per statistica

Messaggio 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
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Gaetanopr
Volontario
Volontario
Messaggi: 3300
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: sintassi per statistica

Messaggio 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
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
patel
Volontario attivo
Volontario attivo
Messaggi: 4020
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: sintassi per statistica

Messaggio da patel »

mi riferisco al file che allego
Allegati
Database con MACRO 3.ods
(247.95 KiB) Scaricato 114 volte
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Gaetanopr
Volontario
Volontario
Messaggi: 3300
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: sintassi per statistica

Messaggio 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.
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
Raoul Duke
Messaggi: 132
Iscritto il: giovedì 7 marzo 2019, 12:11

Re: sintassi per statistica

Messaggio 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
OpenOffice 4.1.5 con MacOS 10.13.6
Gaetanopr
Volontario
Volontario
Messaggi: 3300
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: sintassi per statistica

Messaggio 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
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
Raoul Duke
Messaggi: 132
Iscritto il: giovedì 7 marzo 2019, 12:11

Re: [Risolto] sintassi per statistica

Messaggio 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!
OpenOffice 4.1.5 con MacOS 10.13.6
Rispondi