Pannello di Controllo Moderatore ]

[Risolto] sintassi per statistica

Discussioni sull'applicazione per i fogli di calcolo

[Risolto] sintassi per statistica

Messaggioda Raoul Duke » martedì 30 aprile 2019, 0:49

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
Raoul Duke
 
Messaggi: 113
Iscritto il: giovedì 7 marzo 2019, 13:11

Re: sintassi per statistica

Messaggioda patel » martedì 30 aprile 2019, 8:16

Tu vuoi che la macro scriva la formula per te ? in questo caso

Codice: Seleziona tutto   Espandi visualeStringi visuale
oSheet = thisComponent.Sheets(0)
oSheet.getCellByPosition(1, 3).setFormula("DISTRIB.T ( A1 ; B1+B2-2 ; 2 ) ")
-------------------
OpenOffice 4.1 e Libre Office 6.o.7.3 su Windows 10
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
patel
Volontario attivo
Volontario attivo
 
Messaggi: 3291
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: sintassi per statistica

Messaggioda Raoul Duke » martedì 30 aprile 2019, 9:51

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 7 volte
OpenOffice 4.1.5 con MacOS 10.13.6
Raoul Duke
 
Messaggi: 113
Iscritto il: giovedì 7 marzo 2019, 13:11

Re: sintassi per statistica

Messaggioda Gaetanopr » martedì 30 aprile 2019, 10:11

Puoi procedere in diversi modi
1) se usi il metodo formula la formula devi scriverla in inglese
Codice: Seleziona tutto   Espandi visualeStringi visuale
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   Espandi visualeStringi visuale
Foglio1.getCellByPosition(1,15).FormulaLocal = "=DISTRIB.T(B15;B11+C11-2;2)"

3)In italiano con variabili
Codice: Seleziona tutto   Espandi visualeStringi visuale
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   Espandi visualeStringi visuale
Foglio1.getCellByPosition(1,15).Value = Foglio1.getCellByPosition(1,15).Value"

oppure tramite le functionAccess senza usare .Formula o FormulaLocal
4)
Codice: Seleziona tutto   Espandi visualeStringi visuale
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 7 volte
Openoffice 4.1 su windows xp
Gaetanopr
Volontario
Volontario
 
Messaggi: 2722
Iscritto il: mercoledì 21 novembre 2012, 21:07

Re: sintassi per statistica

Messaggioda Raoul Duke » martedì 30 aprile 2019, 10:31

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

Re: [Risolto] sintassi per statistica

Messaggioda Raoul Duke » martedì 30 aprile 2019, 10:50

Cosa stranissima Patel:

alla fine ho utilizzato:
Codice: Seleziona tutto   Espandi visualeStringi visuale
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: 113
Iscritto il: giovedì 7 marzo 2019, 13:11

Re: [Risolto] sintassi per statistica

Messaggioda Raoul Duke » martedì 30 aprile 2019, 11:08

questo è il file se ti può esser utile
Allegati
Database con MACRO 3.ods
(237.47 KiB) Scaricato 9 volte
OpenOffice 4.1.5 con MacOS 10.13.6
Raoul Duke
 
Messaggi: 113
Iscritto il: giovedì 7 marzo 2019, 13:11

Re: sintassi per statistica

Messaggioda patel » martedì 30 aprile 2019, 11:30

prova così
STAT.GetCellByPosition(0,2).FormulaLocal = "=DISTRIB.T("& X & ";" & NCa+NCb-2 & ";2)"
però è strano che DISTRIB.T e TDIST producano risultati diversi
-------------------
OpenOffice 4.1 e Libre Office 6.o.7.3 su Windows 10
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
patel
Volontario attivo
Volontario attivo
 
Messaggi: 3291
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: sintassi per statistica

Messaggioda Gaetanopr » martedì 30 aprile 2019, 11:44

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
Openoffice 4.1 su windows xp
Gaetanopr
Volontario
Volontario
 
Messaggi: 2722
Iscritto il: mercoledì 21 novembre 2012, 21:07

Re: sintassi per statistica

Messaggioda patel » martedì 30 aprile 2019, 12:38

mi riferisco al file che allego
Allegati
Database con MACRO 3.ods
(247.95 KiB) Scaricato 7 volte
-------------------
OpenOffice 4.1 e Libre Office 6.o.7.3 su Windows 10
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
patel
Volontario attivo
Volontario attivo
 
Messaggi: 3291
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: sintassi per statistica

Messaggioda Gaetanopr » martedì 30 aprile 2019, 12:56

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.
Openoffice 4.1 su windows xp
Gaetanopr
Volontario
Volontario
 
Messaggi: 2722
Iscritto il: mercoledì 21 novembre 2012, 21:07

Re: sintassi per statistica

Messaggioda Raoul Duke » martedì 30 aprile 2019, 13:56

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
Raoul Duke
 
Messaggi: 113
Iscritto il: giovedì 7 marzo 2019, 13:11

Re: sintassi per statistica

Messaggioda Gaetanopr » martedì 30 aprile 2019, 14:04

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
Openoffice 4.1 su windows xp
Gaetanopr
Volontario
Volontario
 
Messaggi: 2722
Iscritto il: mercoledì 21 novembre 2012, 21:07

Re: [Risolto] sintassi per statistica

Messaggioda Raoul Duke » martedì 30 aprile 2019, 14:28

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
Raoul Duke
 
Messaggi: 113
Iscritto il: giovedì 7 marzo 2019, 13:11


Torna a Calc

Chi c’è in linea

Visitano il forum: Nessuno e 7 ospiti