Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Problema con excel (di openoffice)

Linguaggi e sistemi

Moderatori: Foto UtentePaolino, Foto Utentefairyvilje

0
voti

[11] Re: Problema con exel (di openoffice)

Messaggioda Foto Utentec1b8 » 6 dic 2009, 19:16

Se ti serve la formula completa da inserire in una sola cella:
B1=CONCATENA(SE(INT(A1/16)=3;"C";INT(A1/16)*4);SE(INT((A1-INT(A1/16)*16)/4)=3;"C";INT((A1-INT(A1/16)*16)/4)*4);SE((A1-INT(A1/16)*16-INT((A1-INT(A1/16)*16)/4)*4)=3;"C";(A1-INT(A1/16)*16-INT((A1-INT(A1/16)*16)/4)*4)*4))

Per far precedere al risultato una "C" ossia per ottenere 0="C000", 1="C004" ecc. prova con questa

B1=CONCATENA("C";SE(INT(A1/16)=3;"C";INT(A1/16)*4);SE(INT((A1-INT(A1/16)*16)/4)=3;"C";INT((A1-INT(A1/16)*16)/4)*4);SE((A1-INT(A1/16)*16-INT((A1-INT(A1/16)*16)/4)*4)=3;"C";(A1-INT(A1/16)*16-INT((A1-INT(A1/16)*16)/4)*4)*4))
Fabio
Avatar utente
Foto Utentec1b8
3.595 3 8 13
G.Master EY
G.Master EY
 
Messaggi: 1770
Iscritto il: 15 gen 2009, 15:23

0
voti

[12] Re: Problema con exel (di openoffice)

Messaggioda Foto UtenteDaniele92 » 6 dic 2009, 19:30

tutto perfetto ,grazie ancora.
adesso mi metto e cerco per bene di capire come funzionano queste formule.
anche per poterla modificare in un futuro ,senza disturbarvi ancora. :D
grazie a tutti per la disponibilita'
Avatar utente
Foto UtenteDaniele92
0 2
 
Messaggi: 17
Iscritto il: 22 nov 2009, 0:18

0
voti

[13] Re: Problema con exel (di openoffice)

Messaggioda Foto Utenteg.schgor » 6 dic 2009, 20:39

Ho riesaminato il problema ed ho concluso che invece che un algoritmo, ti conviene
completare una tabella con i valori stabiliti e poi fare riferimento a questa con le funzioni
Excel INDIRIZZO e INDIRETTO.
E' semplicissimo (2 sole istruzioni)
Se hai bisogno di dettagli, ci risentiamo.
Avatar utente
Foto Utenteg.schgor
57,8k 9 12 13
G.Master EY
G.Master EY
 
Messaggi: 16971
Iscritto il: 25 ott 2005, 9:58
Località: MILANO

0
voti

[14] Re: Problema con exel (di openoffice)

Messaggioda Foto UtenteDaniele92 » 7 dic 2009, 14:11

certo che sono interessato sig. g.schgor conoscere sistemi diversi e' sempre utile :P

se posso approfittare ancora della vostra pazienza, vorrei chiedere un'altra cosa.

ho un valore binario in una cella tipo a1
ho spezzato la stringa che mi risulta con il comando =stringa.estrai
adesso mi ritrovo a dover fare la moltiplicazione di queste celle con valori 0 e 1 con valori fissi
ammettiamo di avere questi valori nelle celle da a2 a a9
e il valore fisso a10

se faccio A11=PRODOTTO(A2;A10) mi rida' il valore di a10
con A11=A2*A10 mi rida' sempre 0
anche con A11=(A2*A10) oppure A11=(A2)*(A10) niente sempre 0

forse perche' i valori estratti non me li considera come numeri 0 e 1?
eppure le celle sono come valore numerico
Avatar utente
Foto UtenteDaniele92
0 2
 
Messaggi: 17
Iscritto il: 22 nov 2009, 0:18

0
voti

[15] Re: Problema con exel (di openoffice)

Messaggioda Foto Utentec1b8 » 7 dic 2009, 14:28

Ho provato e non ottengo lo stesso risultato da te descritto, a me funziona correttamente.
In ogni modo la Stringa.Estrai() ha come risultato una stringa. Prova a convertirla espressamente in numero:

Valore(Stringa.Estrai(stringa; inzio; num_caratteri))
Fabio
Avatar utente
Foto Utentec1b8
3.595 3 8 13
G.Master EY
G.Master EY
 
Messaggi: 1770
Iscritto il: 15 gen 2009, 15:23

0
voti

[16] Re: Problema con exel (di openoffice)

Messaggioda Foto UtenteDaniele92 » 7 dic 2009, 15:00

non so il perche' succede questo visto che le celle sono come formato numerico.
comunque con questa modifica corregge l'errore portando anche il valore scritto
allineato a sx passa a dx (non fa differenza per me).
grazie per i preziosi consigli
Avatar utente
Foto UtenteDaniele92
0 2
 
Messaggi: 17
Iscritto il: 22 nov 2009, 0:18

0
voti

[17] Re: Problema con exel (di openoffice)

Messaggioda Foto Utenteg.schgor » 7 dic 2009, 16:28

Dunque, constatato che i valori sono pochi e l'algoritmo complicato,
propongo una "tabella di conversione".
Per prova ho riportato i valori numerici (0...30) nelle caselle G1...G31.
e i codici corrispondenti (000...4C8) nelle caselle H1...H31

Con il dato da convertire in A1
ho scritto in A3 : =INDIRIZZO(A1+1;8;3)
ed in A5 : =INDIRETTO(A3)

In questo modo in A5 compare il codice corrispondente al dato in A1

spiegazione:
L'istruzione in A3 prende il Dato in A1 (+1) come indirizzo della colonna H (8)
assoluta ($H) e della riga relativa (codice 3)
mentre l'istruzione in A5 visualizza il contenuto della casella specificata in A3

Tutto qui.
Avatar utente
Foto Utenteg.schgor
57,8k 9 12 13
G.Master EY
G.Master EY
 
Messaggi: 16971
Iscritto il: 25 ott 2005, 9:58
Località: MILANO

0
voti

[18] Re: Problema con exel (di openoffice)

Messaggioda Foto UtenteDaniele92 » 7 dic 2009, 17:07

direi alternativa semplice e funzionale.
come comunque era perfetta anche quella di c1b8 ,ma un po piu' incasinata da capire per un principiante come me :wink:

mi scusi sig. g.schgor se le rubo altro tempo prezioso ma non riesco a capire una cosa

nella formula in a3 =INDIRIZZO(A1+1;8;3)

prende il dato in a1 (capito) colonna 8 (capito si riferisce alla H) ma il +1 a cosa corrisponde?
poi credo di aver capito che per riga relativa il codice 3 sia fisso o sbaglio?
Avatar utente
Foto UtenteDaniele92
0 2
 
Messaggi: 17
Iscritto il: 22 nov 2009, 0:18

0
voti

[19] Re: Problema con excel (di openoffice)

Messaggioda Foto Utenteg.schgor » 7 dic 2009, 17:33

Daniele92 ha scritto:il +1 a cosa corrisponde?

Semplicemente al fatto che le righe cominciano da 1,
mentre noi cominciamo la numerazione da 0.

Daniele92 ha scritto:per riga relativa il codice 3 sia fisso o sbaglio?

Il codice 3 indica la colonna assoluta ($H) e la riga relativa.
Avatar utente
Foto Utenteg.schgor
57,8k 9 12 13
G.Master EY
G.Master EY
 
Messaggi: 16971
Iscritto il: 25 ott 2005, 9:58
Località: MILANO

0
voti

[20] Re: Problema con excel (di openoffice)

Messaggioda Foto Utentephai » 11 dic 2009, 16:06

Ciao a tutti,

mi intrometto nella discussione che, incuriosito, ho provato a risolvere.

Ho fatto caso che il problema è risolvibile con un semplice algoritmo, ammesso che si debba ricevere il valore dalla cella A1:
=DEC2HEX((A1-MOD(A1;4))*16 + MOD(A1;4)*4)

Nello specifico ho notato che il valore ricercato non è altro che la rappresentazione esadecimale di (A1-MOD(A1;4))*16 + MOD(A1;4)*4
Pertanto se A1 contiene, ad esempio, 1 avrei:
modulo (11;4)=3 (ricordo che il modulo sarebbe il resto della divisione: 11/4=2 con il resto di 3)
11-MOD(11;4)=11-3=8. Questo in generale è il numero di base da cui partire se moltiplicato per 16 (8*16=128)
Quindi sia 8 che 9, 10 e 11 partano dalla base 8*16=128
A questo punto bisogna aggiungere 4 per ognuno dei numeri:
8=128+0=128
9=128+4=132
10=128+8=136
11=128+12=140
Pertando ecco spiegato perché il modulo del numero con 4 viene poi moltiplicato per 4 e infine aggiunto

Infine resta da fare la conversione decimale a esadecimale:
8=128(10)=080(16)
9=132(10)=084(16)
10=136(10)=088(16)
11=140(10)=08C(16)

Questo algoritmo dovrebbe funzionare con qualsiasi numero, a patto che i risultati siano contenibili da Calc (l'Excel di OpenOffice).
Ci sono attualmente solo due limiti per il mio suggerimento.

La funzione MOD(numero,divisore) è documentata su: http://wiki.services.openoffice.org/wik ... D_function
A me, però non viene trovata (forse uso una versione vecchia di Calc o forse la funziona dev'essere ancora implementata).
Io ho risolto scrivendo la seguente macro:

Function MOD(ByVal num as Integer, ByVal inModulo as Integer)
if (inModulo=0) then
MOD = 1
else
MOD = num -inModulo * INT(num/inModulo)
end if
End Function


Il secondo problema riguarda la conversione Decimale-Esadecimale: stesso affare di prima http://wiki.services.openoffice.org/wik ... X_function
In questo caso pare che installando un add-in si risolva.

La mia soluzione, se risolti i due problemi relativi al software Calc, dovrebbe essere più performante in quanto lavora con numeri e non con stringhe e istruzioni condizionali.
In ogni modo la mia non è una critica: solo un modo diverso per risolvere lo stesso problema...

Ciao ciao ;)
Avatar utente
Foto Utentephai
0 2
 
Messaggi: 32
Iscritto il: 4 dic 2009, 18:30

PrecedenteProssimo

Torna a PC e informatica

Chi c’è in linea

Visitano il forum: Nessuno e 16 ospiti