[Risolto] Calcolo all'interno di una formula

Discussioni sull'applicazione per i fogli di calcolo
Rispondi
Nando69
Messaggi: 484
Iscritto il: lunedì 21 settembre 2020, 11:03

[Risolto] Calcolo all'interno di una formula

Messaggio da Nando69 »

Salve a tutti. So che la domanda possa sembrare un pò particolare ma volevo sapere se tramite una formula era possibile fare un calcolo all'interno di una formula stessa. Porto 2 semplici esempi :

1° esempio : =INDIRIZZO(RIF.RIGA($V$12);22+RIF.RIGA(A1)*8-8;4)

In questo 1° caso mi servirebbe calcolare automaticamente la parte che va dal valore 22 fino al -8. Il valore A1 all'interno della parentesi deve essere inteso come +1. Fatto a mano il calcolo viene fatto in questo modo : [22+(1*8-8=0)]. Quindi 22+0=22

2° esempio : =INDIRIZZO(RIF.RIGA($V$12);22+RIF.RIGA(A2)*1+1;4)

Anche in questo 2° caso occorre partire dal valore 22 fino al -1. Il valore A2 all'interno della parentesi deve essere inteso come +2. Risultato finale 22+3=25
Ultima modifica di Nando69 il venerdì 13 maggio 2022, 16:58, modificato 3 volte in totale.
Libre Office 7.3.0.3
patel
Volontario attivo
Volontario attivo
Messaggi: 4019
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Calcolo all'interno di una formula

Messaggio da patel »

Non ho capito, allega un file di esempio con dati, spiegazioni e risultato desiderato.
-------------------
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
Nando69
Messaggi: 484
Iscritto il: lunedì 21 settembre 2020, 11:03

Re: Calcolo all'interno di una formula

Messaggio da Nando69 »

Qui un file d'esempio
Allegati
file d'esempio.ods
(21.66 KiB) Scaricato 80 volte
Libre Office 7.3.0.3
Avatar utente
gioh66
Volontario
Volontario
Messaggi: 1721
Iscritto il: lunedì 31 luglio 2017, 14:57
Località: Friuli

Re: Calcolo all'interno di una formula

Messaggio da gioh66 »

Ciao. Anche col file non mi è per niente chiaro cosa vuoi ottenere.
Detto ciò se quel A1 tra parentesi è riferito alla funzione RIF.RIGA, il risultato di RIF.RIGA(A1) è 1 e diventa 2, 3, 4, 5, ecc...man mano che trascini la formula in basso.
...se sei soddisfatto delle risposte ricevute metti il [Risolto] https://forum.openoffice.org/it/forum/v ... f=9&t=5661

Libreoffice 6/7 Ubuntu 22.04 - PcLinuxOS - LinuxMint 21
Nando69
Messaggi: 484
Iscritto il: lunedì 21 settembre 2020, 11:03

Re: Calcolo all'interno di una formula

Messaggio da Nando69 »

Dalla formula
=INDIRIZZO(RIF.RIGA($V$12);22+RIF.RIGA(A1)*8-8;4)

si prende solo la parte che va da 22 fino a -8 e si fa il calcolo. Quindi : 22+RIF.RIGA(A1)*8-8

22+(1*8)-8 = 0 (zero)

E' possibile fare questo automaticamente tramite una formula ? Se la cosa risulta troppo astrusa,non c'è problema. Metto [Risolto]

Il risultato di RIF.RIGA(A1) che da 1 diventa 2, 3, 4, 5 man mano che trascini la formula in basso,non modifica il problema
Libre Office 7.3.0.3
patel
Volontario attivo
Volontario attivo
Messaggi: 4019
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Calcolo all'interno di una formula

Messaggio da patel »

Il Risolto va messo soltanto se viene riportata la soluzione
-------------------
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
Avatar utente
lucky63
Volontario assiduo
Volontario assiduo
Messaggi: 2992
Iscritto il: martedì 18 maggio 2010, 17:01

Re: Calcolo all'interno di una formula

Messaggio da lucky63 »

Nando69 ha scritto:si prende solo la parte che va da 22 fino a -8 e si fa il calcolo
Il valore 22 è un valore fisso o può variare ?

Il simbolo (+) di addizione dopo il valore 22 è un parametro fisso o può variare anche in - / * … ?

Il simbolo (*) di moltiplicazione dopo il rif.riga() è un parametro fisso o può variare anche in + - / … ?

Il simbolo prima dell'ultimo valore da gestire può essere solo (-) sottrazione o (+) addizione o può variare anche in / * … ?
.
.
Nando69
Messaggi: 484
Iscritto il: lunedì 21 settembre 2020, 11:03

Re: Calcolo all'interno di una formula

Messaggio da Nando69 »

Ciao. Chiarisco i tuoi dubbi, o almeno ci provo

1) Il valore 22 è un valore fisso o può variare ?

R) No,non è fisso e può variare



2) Il simbolo (+) di addizione dopo il valore 22 è un parametro fisso o può variare anche in - / * … ?

R) Il simbolo (+) di addizione dopo il valore 22 è un parametro fisso



3) Il simbolo (*) di moltiplicazione dopo il rif.riga() è un parametro fisso o può variare anche in + - / … ?

R) Il simbolo (*) di moltiplicazione dopo il rif.riga() potrebbe variare anche in + - /


4) Il simbolo prima dell'ultimo valore da gestire può essere solo (-) sottrazione o (+) addizione o può variare anche in / * … ?

Il simbolo prima dell'ultimo valore da gestire potrebbe variare anche in (/) divisione oppure (*) moltiplicazione
Libre Office 7.3.0.3
Avatar utente
lucky63
Volontario assiduo
Volontario assiduo
Messaggi: 2992
Iscritto il: martedì 18 maggio 2010, 17:01

Re: Calcolo all'interno di una formula

Messaggio da lucky63 »

Per quanto riguarda il risultato che vuoi ottenere in colonna G puoi utilizzare in G1 la seguente formula chiave e poi ricopiarla in basso:

Codice: Seleziona tutto

=SE(E1="";"";SE(CODICE(STRINGA.ESTRAI(E1;2;1))<58;STRINGA.ESTRAI(E1;1;1);SE(CODICE(STRINGA.ESTRAI(E1;3;1))<58;STRINGA.ESTRAI(E1;1;2);STRINGA.ESTRAI(E1;1;3))))
Per quanto riguarda il risultato che vorresti ottenere in colonna F con solo formule, alle condizioni che hai rappresentato e per quella che era la mia idea, ci vorrebbero credo circa 16 test nidificati nella funzione =SE() e un combinato di molte altre funzioni il tutto con una formula che già dopo poche combinazioni di riscontro stava diventando lunghissima/complicata/caotica per cui ho abbandonato l'idea optando per una macro collegata al pulsante “Calcola la stringa”.

Codice: Seleziona tutto

Sub CalcolaStringaComeFormula
Doc = ThisComponent
Foglio = Doc.Sheets.GetByName("Foglio2")
Cursore = Foglio.createCursor
Cursore.gotoEndOfUsedArea(false)
UltimaRiga = Cursore.RangeAddress.EndRow

For Riga = 0 To UltimaRiga
CellaEx = Foglio.GetCellByPosition(4,Riga)
CellaFx = Foglio.GetCellByPosition(5,Riga)

	If CellaEx.String = "" Then
	CellaFx.String = ""
	Else
	FormulaDellaCellaEx = CellaEx.Formula
	PuntoVirgolaPosizione1 = Instr(1,FormulaDellaCellaEx,";")
	PuntoVirgolaPosizione2 = Instr(PuntoVirgolaPosizione1+1,FormulaDellaCellaEx,";")
	
	StringaDaElaborareComeFormula = Mid(FormulaDellaCellaEx,PuntoVirgolaPosizione1+1,PuntoVirgolaPosizione2-PuntoVirgolaPosizione1-1)
	
	CellaFx.Formula = "=" & StringaDaElaborareComeFormula
	ValoreCellaFx   = CellaFx.Value
	CellaFx.Value   = ValoreCellaFx
	End If

Next Riga
End sub
Forse altri possono proporti soluzioni migliori e/o riescono a trasformarti il concetto base della mia macro in una funzione personalizzata.
.
Allegati
Test - Macro - CalcolaStringaComeFormula.ods
(24.38 KiB) Scaricato 67 volte
Nando69
Messaggi: 484
Iscritto il: lunedì 21 settembre 2020, 11:03

Re: [Risolto] Calcolo all'interno di una formula

Messaggio da Nando69 »

Ciao Lucky. Scusa,non ho capito come hai ricavato il pulsante " CALCOLA LA STRINGA",come hai fatto a sovrascriverlo sul foglio ed anche come hai fatto a scrivere all'interno di questo rettangolo la frase stessa " CALCOLA LA STRINGA" . Puoi spiegarmi per favore ? Grazie
Allegati
pulsante calcola la stringa.jpg
pulsante calcola la stringa.jpg (130.89 KiB) Visto 1856 volte
Libre Office 7.3.0.3
Avatar utente
lucky63
Volontario assiduo
Volontario assiduo
Messaggi: 2992
Iscritto il: martedì 18 maggio 2010, 17:01

Re: Calcolo all'interno di una formula

Messaggio da lucky63 »

Nando69 ha scritto: mercoledì 11 maggio 2022, 16:55 come hai ricavato il pulsante " CALCOLA LA STRINGA",come hai fatto a sovrascriverlo sul foglio ed anche come hai fatto a scrivere all'interno di questo rettangolo la frase stessa " CALCOLA LA STRINGA" . Puoi spiegarmi per favore ? Grazie
Le tue nuove richieste meritavano di essere trattate come nuovo argomento/quesito essendo completamente diverse dal quesito iniziale che per altro avevi già segnato come risolto.

Invito @Charlie a valutare il caso di scorporarle e renderle autonome come nuovo argomento.


Menu > Visualizza > Barre strumenti > "Controlli Formulario" e attivi la barra relativa a tali controlli.
Posizionando il mouse sopra le sue varie icone appare il loro rispettivo nome.
Cliccare sull'icona “Modo struttura” (In OpenOffice: Bozza On/Off) per attivare la modalità Struttura/Bozza.
Le icone che prima non erano abilitate ora lo sono.

Cliccare sull'icona di nome "Pulsante"
Posizionarsi sul punto desiderato del foglio di lavoro.
Tenere premuto tasto sinistro del mouse e trascinare fino alle dimensioni desiderate del pulsante ...
Notare che il pulsante creato ha come definizione standard la parola “Pulsante” e sul perimetro otto quadrattini indicanti che si è in modalità “Struttura/Bozza”.

Tasto Dx del mouse sul Pulsante appena creato > Proprietà del controllo > Generale > Didascalia.
Nella casella a fianco trovi la scritta di default “Pulsante” che puoi sostituire con quella di tua preferenza.
Chiudendo la finestra delle proprietà del controllo troverai poi nel pulsante la scritta da te impostata.

Nelle “ Proprietà del controllo > Generale “ puoi valutare di apportare anche altre modifiche alle rispettive voci secondo le tue preferenze/esigenze del caso ...

Nelle “ Proprietà del controllo > Eventi “ puoi invece scegliere a quale evento associare una macro … seguendo il percoso fino alla macro interessata …

Terminate le modifiche di preferenza occorre cliccare di nuovo sull'icona modalità “Struttura/Bozza” per rendere operativo il collegamento del pulsante alla macro associata ...
.
.
Nando69
Messaggi: 484
Iscritto il: lunedì 21 settembre 2020, 11:03

Re: Calcolo all'interno di una formula

Messaggio da Nando69 »

Ciao,grazie. Tutto chiaro,eccetto una cosa. Quando arrivo in "Proprietà del controllo > Eventi " mi rimane tutto grigio e non riesco a scrivere nulla,tanto più scegliere a quale evento associare la macro seguendo come dici tu il percoso fino alla macro interessata
Allegati
13 maggio.jpg
13 maggio.jpg (129.42 KiB) Visto 1797 volte
Libre Office 7.3.0.3
Avatar utente
lucky63
Volontario assiduo
Volontario assiduo
Messaggi: 2992
Iscritto il: martedì 18 maggio 2010, 17:01

Re: Calcolo all'interno di una formula

Messaggio da lucky63 »

.
Devi usare l'icona "Pulsante" e non l'icona "Pulsante di scelta".
.
Pulsante e non pulsante di scelta.png
Pulsante e non pulsante di scelta.png (22.42 KiB) Visto 1787 volte
.
Esegui azione.png
Esegui azione.png (38.76 KiB) Visto 1787 volte
.
Scelta Macro.png
Scelta Macro.png (52.12 KiB) Visto 1787 volte
.
Segui il percorso di selezione della macro ...
.
Nando69
Messaggi: 484
Iscritto il: lunedì 21 settembre 2020, 11:03

Re: Calcolo all'interno di una formula

Messaggio da Nando69 »

Perfetto,grazie. Metto "Risolto" e scusa per il disturbo
Libre Office 7.3.0.3
Rispondi