Pannello di Controllo Moderatore ]

Come definire una funzione

Discussioni sull'applicazione per i fogli di calcolo

Come definire una funzione

Messaggioda sandro merlino » lunedì 3 dicembre 2018, 22:05

Ciao a tutti
Vi chiedo un aiuto per questo semplice problema. Lavoro con Openoffice 4.1.1
Ho provato a definire una funzione (es:Mese) e vi elenco i passaggi che ho fatto
Inserisci -> Nomi -> Definisci -> Nel campo Nome ho inserito il nome Mese -> nel campo Riferito a ho messo la formula con o senza = -> poi ho pigiato sia ok che aggiungi ma appare ESPRESSIONE NON VALIDA
Scusatemi ma non riesco e non capisco dove sbaglio

Grazie 1000
Sandro
openoffice 4.1.1
sandro merlino
 
Messaggi: 508
Iscritto il: giovedì 12 gennaio 2012, 20:33

Re: Come definire una funzione

Messaggioda patel » martedì 4 dicembre 2018, 9:29

Nomi, definisci serve per assegnare un nome ad un range di celle e non a creare una funzione, questa si crea tramite macro
https://wiki.openoffice.org/wiki/IT/Doc ... _Functions
-------------------
OpenOffice 4.1 e Libre Office 6 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: 2951
Iscritto il: venerdì 30 aprile 2010, 7:04
Località: Livorno

Re: Come definire una funzione

Messaggioda sandro merlino » martedì 4 dicembre 2018, 12:25

Ciao patel,
Il link è molto chiaro.
Scusa però se provo ancora la mia domanda da un'altro punto di vista per capire meglio. Ambasciatore non porta pena.
Un collega che lavora con excel mi ha detto di provare a fare questa cosa e io non riesco.
Definisci "Mese":
=INDICE(INDIRETTO("'c'!H"&INDICE(121+(RIF.RIGA('c'!$A$1:$A$12)-1)*200;CONFRONTA(MAX(SE((('c'!$H$1:$H$2512<>"")*(SOSTITUISCI(SOSTITUISCI(SOSTITUISCI(SOSTITUISCI(SOSTITUISCI(SOSTITUISCI(SOSTITUISCI(SOSTITUISCI(SOSTITUISCI(SOSTITUISCI(SOSTITUISCI(MAIUSC('c'!$H$1:$H$2512);"GENNAIO";"");"FEBBRAIO";"");"MARZO";"");"APRILE";"");"MAGGIO";"");"GIUGNO";"");"AGOSTO";"");"SETTEMBRE";"");"OTTOBRE";"");"NOVEMBRE";"");"DICEMBRE";"")<>"")>0);RIF.RIGA('c'!$H$1:$H$2512)));121+(RIF.RIGA('c'!$A$1:$A$12)-1)*200;1)));)


Secondo lui si fanno questi passaggi:
Codice: Seleziona tutto   Espandi visualeStringi visuale
Calc:
Inserisci - Nomi - Definisci...

che sarebbero gli equivalenti di:
Codice: Seleziona tutto   Espandi visualeStringi visuale
Excel:
Scheda Formule>Gestione Nomi>Nuovo>Campo nome e Campo riferito a:
Nel Campo nome: nome formula
Nel Campo riferito a: Incolli la formula

Ps: forse devo sostituire il
!
con
.
trattandosi di excel

Posso dirgli che con calc non è possibile definire una funzione in questo modo ma devo usare solo macro oppure esiste un modo che tu utilizzeresti per raggiungere il risultato?
Da incompetente ti chiedo se è possibile fare:
Inserisci -> Nomi -> Definisci -> Nel campo Nome (inserisco: Mese) -> Nel campo Riferito a: (metto la cella di riferimento) -> Aggiungo la formula .......

Grazie 1000

Sandro
openoffice 4.1.1
sandro merlino
 
Messaggi: 508
Iscritto il: giovedì 12 gennaio 2012, 20:33

Re: Come definire una funzione

Messaggioda gioh66 » martedì 4 dicembre 2018, 13:27

Ciao secondo me il problema sta nella formula, perchè probabilmente la definizione dei nomi (di calc) non accetta formule matriciali. Quel
MAX(SE((('c'!$H$1:$H$2512<>"")
e
MAIUSC('c'!$H$1:$H$2512)
rendono la formula matriciale.
Libreoffice 6 / Ubuntu 18.04 - PcLinuxOS
Libreoffice 5.1 / Ubuntu 16.04 - LinuxMint 18
Avatar utente
gioh66
Volontario
Volontario
 
Messaggi: 563
Iscritto il: lunedì 31 luglio 2017, 13:57

Re: Come definire una funzione

Messaggioda sandro merlino » giovedì 6 dicembre 2018, 18:26

Ciao gioh66
Ti volevo chiedere 2 cose:
- Se essendo stata fatta da un collega che lavora solo con Excel questa funzione ha dei caratteri che vanno cambiati. Io ho la senzazione che il "!" va cambiato con il "." Mi sbaglio?
- Questa formula si può usare nascondendola in una celle che vogliamo e poi invece di usare la formula definita uso il riferimento della cella?
Grazie 1000

sandro
openoffice 4.1.1
sandro merlino
 
Messaggi: 508
Iscritto il: giovedì 12 gennaio 2012, 20:33

Re: Come definire una funzione

Messaggioda unlucky83 » sabato 8 dicembre 2018, 14:04

patel ha scritto:Nomi, definisci serve per assegnare un nome ad un range di celle e non a creare una funzione, questa si crea tramite macro
https://wiki.openoffice.org/wiki/IT/Doc ... _Functions

Ciao @patel
E' possibile definire dei nomi di formula vedi l'esempio in fondo a questa pagina https://wiki.openoffice.org/wiki/Docume ... med_Ranges
Ho provato e funziona , vedi qui viewtopic.php?f=9&t=9369#p51609
Per giunta questa possibilità di procedere l'avevo proposta proprio a sandro, ma a quanto pare l'ha dimenticata.
gioh66 ha scritto:Ciao secondo me il problema sta nella formula, perchè probabilmente la definizione dei nomi (di calc) non accetta formule matriciali. Quel
MAX(SE((('c'!$H$1:$H$2512<>"")
e
MAIUSC('c'!$H$1:$H$2512)
rendono la formula matriciale.

Nell'altra discussione ho definito un nome per una formula "potenzialmente matriciale" ma scritta senza specificarla come tale. Quando in una cella ho richiamato il nome della formula, ho impostato la formula della cella come formula matriciale.

Quindi per me l'errore sta nella formula che non è per calc, ma per excel, oppure ti sei scordato di impostare come formula matriciale la formula che hai inserito nella cella che richiama il nomeformula.
sandro merlino ha scritto:- Se essendo stata fatta da un collega che lavora solo con Excel questa funzione ha dei caratteri che vanno cambiati. Io ho la senzazione che il "!" va cambiato con il "." Mi sbaglio?

Chiaramente hai ragione, in calc per richiamare delle celle che si trovano in altri fogli non devi usare il punto esclamativo e nemmeno inserire il nome tra ', ma una cosa tipo questa
Codice: Seleziona tutto   Espandi visualeStringi visuale
=Foglio2.C4:C13
LibO5.1.6.2-Ubuntu 16.04.2 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio
Avatar utente
unlucky83
Volontario
Volontario
 
Messaggi: 1963
Iscritto il: lunedì 7 gennaio 2013, 1:23
Località: Latina

Re: Come definire una funzione

Messaggioda gioh66 » sabato 8 dicembre 2018, 14:33

@unluky83
Perfetto tanto meglio se il problema non è nella forma matriciale (buono a sapersi), allora come dici il problema potrebbe stare nella formula che non viene "digerita" da calc.
@Sandro
se provi a sostituire il ! con il punto di sicuro male non fa, visto che l'uso del punto è nella sintassi nativa delle formule di calc.
Libreoffice 6 / Ubuntu 18.04 - PcLinuxOS
Libreoffice 5.1 / Ubuntu 16.04 - LinuxMint 18
Avatar utente
gioh66
Volontario
Volontario
 
Messaggi: 563
Iscritto il: lunedì 31 luglio 2017, 13:57

Re: Come definire una funzione

Messaggioda sandro merlino » domenica 9 dicembre 2018, 12:27

Ciao e grazie ancora una volta a tutti e due per l'aiuto che provate a darmi

@unlucky83
E' possibile definire dei nomi di formula vedi l'esempio in fondo a questa pagina https://wiki.openoffice.org/wiki/Docume ... med_Ranges
Scusami ma ci tengo a dirti che per me è incomprensibile. Non sono all'altezza di leggere una cosa del genere

Ho provato e funziona , vedi qui viewtopic.php?f=9&t=9369#p51609
Per giunta questa possibilità di procedere l'avevo proposta proprio a sandro, ma a quanto pare l'ha dimenticata.

Confermo e l'ho anche usata in alcuni format che mi hanno risolto quel problema.
Non mi sono dimenticato ma non mi vergogno però a dirti che questo messaggio è stato aperto perchè non sono riuscito a farlo di nuovo per risolvere il messaggio ancora aperto con nome:
Funzione ordina decrescentemente prestazione di dipendenti per il quale siamo sempre in attesa dai capi che si decidano per di colonne di appoggio.
Mi arrabatto dove posso per trovare una soluzione alternativa e mi avevano suggerito di definire funzioni e di fare un tentativo con delle formule suggerite per excel ma mi sono fermato subito. Le funzioni te le allego sull'altro argomento appena sostituisco il"!" con il "." .

@gioh66
Provo a sostituire il"!" con il "."

Grazie

sandro
openoffice 4.1.1
sandro merlino
 
Messaggi: 508
Iscritto il: giovedì 12 gennaio 2012, 20:33

Re: Come definire una funzione

Messaggioda sandro merlino » martedì 11 dicembre 2018, 14:46

Ciao
Scusate se insisto ma ho trovato questo link
Codice: Seleziona tutto   Espandi visualeStringi visuale
https://forum.openoffice.org/it/forum/viewtopic.php?f=9&t=2054

dove si fa vedere che nel campo Riferito a devo mettere la cella.
La mia domanda è: La formula dove la metto e come?

Grazie

sandro
openoffice 4.1.1
sandro merlino
 
Messaggi: 508
Iscritto il: giovedì 12 gennaio 2012, 20:33

Re: Come definire una funzione

Messaggioda gioh66 » mercoledì 12 dicembre 2018, 15:26

Buondì, la formula devi inserirla nel campo"Riferito a". In quello spazio inserisci o un intervallo di celle o una formula a cui dare un nome.
Libreoffice 6 / Ubuntu 18.04 - PcLinuxOS
Libreoffice 5.1 / Ubuntu 16.04 - LinuxMint 18
Avatar utente
gioh66
Volontario
Volontario
 
Messaggi: 563
Iscritto il: lunedì 31 luglio 2017, 13:57

Re: Come definire una funzione

Messaggioda sandro merlino » mercoledì 12 dicembre 2018, 18:47

Ciao gioh66
Grazie per la risposta che mi hai dato. Ho fatto un'altro tentativo e sono arrivato alla conclusione che su 3 funzioni da definire 2 sono entrate ma una non ancora. A questo punto penso che ci siano problemi di sintassi. Te le mostro
Definisci "Unici":
Codice: Seleziona tutto   Espandi visualeStringi visuale
=T(INDIRETTO("'c'.H"&PICCOLO(SE(FREQUENZA(SE(VAL.ERRORE(CONFRONTA(SCARTO(INDIRETTO("'c'.H"&CONFRONTA(Mese;'c'.$H$1:$H$2512;0)+4);;;188);SCARTO(INDIRETTO("'c'.H"&CONFRONTA(Mese;'c'.$H$1:$H$2512;0)+4);;;188);0));FALSO;CONFRONTA(SCARTO(INDIRETTO("'c'.H"&CONFRONTA(Mese;'c'.$H$1:$H$2512;0)+4);;;188);SCARTO(INDIRETTO("'c'.H"&CONFRONTA(Mese;'c'.$H$1:$H$2512;0)+4);;;188);0));RIF.RIGA('c'.$A$1:$A$188))>0;RIF.RIGA('c'.$A$1:$A$188));RIF.RIGA(INDIRETTO("A1:A"&MATR.SOMMA.PRODOTTO((SE(FREQUENZA(SE(VAL.ERRORE(CONFRONTA(SCARTO(INDIRETTO("'c'.H"&CONFRONTA(Mese;'c'.$H$1:$H$2512;0)+4);;;188);SCARTO(INDIRETTO("'c'.H"&CONFRONTA(Mese;'c'.$H$1:$H$2512;0)+4);;;188);0));FALSO;CONFRONTA(SCARTO(INDIRETTO("'c'.H"&CONFRONTA(Mese;'c'.$H$1:$H$2512;0)+4);;;188);SCARTO(INDIRETTO("'c'.H"&CONFRONTA(Mese;'c'.$H$1:$H$2512;0)+4);;;188);0));RIF.RIGA('c'.$A$1:$A$188))>0;RIF.RIGA('c'.$A$1:$A$188))<>FALSO)*1))))+CONFRONTA(Mese;'c'.$H$1:$H$2512;0)+3))


Definisci "Conta_Unici":
Codice: Seleziona tutto   Espandi visualeStringi visuale
=MATR.SOMMA.PRODOTTO((SE(FREQUENZA(SE(VAL.ERRORE(CONFRONTA(SCARTO(INDIRETTO("'c'.H"&CONFRONTA(Mese;'c'.$H$1:$H$2512;0)+4);;;188);SCARTO(INDIRETTO("'c'.H"&CONFRONTA(Mese;'c'.$H$1:$H$2512;0)+4);;;188);0));FALSO;CONFRONTA(SCARTO(INDIRETTO("'c'.H"&CONFRONTA(Mese;'c'.$H$1:$H$2512;0)+4);;;188);SCARTO(INDIRETTO("'c'.H"&CONFRONTA(Mese;'c'.$H$1:$H$2512;0)+4);;;188);0));RIF.RIGA('c'.$A$1:$A$188))>0;RIF.RIGA('c'.$A$1:$A$188))<>FALSO)*1)


Definisci "Mese":(non si inserisce)
Codice: Seleziona tutto   Espandi visualeStringi visuale
=INDICE(INDIRETTO("'c'.H"&INDICE(121+(RIF.RIGA('c'.$A$1:$A$12)-1)*200;CONFRONTA(MAX(SE((('c'.$H$1:$H$2512<>"")*(SOSTITUISCI(SOSTITUISCI(SOSTITUISCI(SOSTITUISCI(SOSTITUISCI(SOSTITUISCI(SOSTITUISCI(SOSTITUISCI(SOSTITUISCI(SOSTITUISCI(SOSTITUISCI(MAIUSC('c'.$H$1:$H$2512);"GENNAIO";"");"FEBBRAIO";"");"MARZO";"");"APRILE";"");"MAGGIO";"");"GIUGNO";"");"AGOSTO";"");"SETTEMBRE";"");"OTTOBRE";"");"NOVEMBRE";"");"DICEMBRE";"")<>"")>0);RIF.RIGA('c'.$H$1:$H$2512)));121+(RIF.RIGA('c'.$A$1:$A$12)-1)*200;1)));)


Ti allego il file
Se hai qualche altro suggerimento è ben accetto

Grazie

sandro
Allegati
ordina decrescentemente prestazione di dipendenti - n1 - Copia.ods
(132.16 KiB) Scaricato 1 volta
openoffice 4.1.1
sandro merlino
 
Messaggi: 508
Iscritto il: giovedì 12 gennaio 2012, 20:33


Torna a Calc

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite