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))
Problema con excel (di openoffice)
Moderatori:
Paolino,
fairyvilje
22 messaggi
• Pagina 2 di 3 • 1, 2, 3
0
voti
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.
grazie a tutti per la disponibilita'
adesso mi metto e cerco per bene di capire come funzionano queste formule.
anche per poterla modificare in un futuro ,senza disturbarvi ancora.
grazie a tutti per la disponibilita'
0
voti
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.
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.
0
voti
certo che sono interessato sig. g.schgor conoscere sistemi diversi e' sempre utile
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
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
0
voti
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))
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
0
voti
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
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
0
voti
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.
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.
0
voti
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
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?
come comunque era perfetta anche quella di c1b8 ,ma un po piu' incasinata da capire per un principiante come me
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?
0
voti
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.
0
voti
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
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
22 messaggi
• Pagina 2 di 3 • 1, 2, 3
Chi c’è in linea
Visitano il forum: Nessuno e 16 ospiti

Elettrotecnica e non solo (admin)
Un gatto tra gli elettroni (IsidoroKZ)
Esperienza e simulazioni (g.schgor)
Moleskine di un idraulico (RenzoDF)
Il Blog di ElectroYou (webmaster)
Idee microcontrollate (TardoFreak)
PICcoli grandi PICMicro (Paolino)
Il blog elettrico di carloc (carloc)
DirtEYblooog (dirtydeeds)
Di tutto... un po' (jordan20)
AK47 (lillo)
Esperienze elettroniche (marco438)
Telecomunicazioni musicali (clavicordo)
Automazione ed Elettronica (gustavo)
Direttive per la sicurezza (ErnestoCappelletti)
EYnfo dall'Alaska (mir)
Apriamo il quadro! (attilio)
H7-25 (asdf)
Passione Elettrica (massimob)
Elettroni a spasso (guidob)
Bloguerra (guerra)



