Pagina 1 di 1

Excel/Calc: incollare numeri decimali con il punto in celle decimali con virgola

Inviato: mer gen 03, 2018 1:05 am
da Zane
Ciao ragazzi,
mi hanno segnalato un problema con il foglio di calcolo che ho presentato in questo articolo. In breve:
  • nel foglio di calcolo c'è una cella numerica
  • nella quale bisogna incollare un numero decimale copiato da un sito
  • Questo numero decimale è espresso con il punto (1.49)
  • Calc/Excel utilizzano il locale italiano e si aspettano i decimali separati da virgola (1,49)
  • quando incolli il valore con il punto, si imbananano e non lo riconoscono
Ho già provato a forzare il formato della specifica cella:

Immagine

Così funziona, ma se chiudi il file e lo riapri si perde il settaggio.

Sapete se c'è un modo per forzare il locale sullo specifico foglio o, in generale, come gestire la cosa?

Vorrei TANTO evitare le macro, se possibile.

Sono su Windows 10 x64 e ho già provato ad aggiornare a LibreOffice 5.4.4 x64.

Aggiornamento: grazie a chi mi ha risposto consigliando di modificare l'impostazione regionale del sistema operativo oppure del programma. Il problema è però che questo foglio di calcolo è disponibile a pubblicamente, e non posso chiedere che le persone interessate ad usarlo modifichino questa impostazione sui propri PC. Bisogna che troviamo un modo specifico e salvato all'interno del file per forzare l'uso del formato.

Re: Excel/Calc: incollare numeri decimali con il punto in celle decimali con virgola

Inviato: mer gen 03, 2018 2:30 am
da raffaele32
Ciao Zane , hai controllato se nelle impostazioni della lingua e del separatore decimale di Windows 10 viene usato la virgola al posto del punto?

Re: Excel/Calc: incollare numeri decimali con il punto in celle decimali con virgola

Inviato: mer gen 03, 2018 3:32 pm
da crazy.cat
Non ho calc a disposizione e non lo conosco così bene da fare prove.
Una sostituzione del testo è fattibile?
https://help.libreoffice.org/Calc/Text_ ... OSTITUISCI
Inseriscono il punto =SUBSTITUTE(A1;".";",") e questo diventa una virgola...
https://ask.libreoffice.org/en/question ... ain-cells/

Re: Excel/Calc: incollare numeri decimali con il punto in celle decimali con virgola

Inviato: gio gen 04, 2018 3:37 pm
da PippoDJ
Ciao Zane,
non credo esista un modo semplice/elegante per fare quello che ti serve: in Excel le impostazioni dei separatori sono locali all'ambiente di lavoro e non vengono salvate col documento.

Probabilmente la cosa migliore sarebbe di forzare un cambio dei separatori all'apertura del documento con questo codice VBA:

Codice: Seleziona tutto

Private Sub Workbook_Open()
	Application.DecimalSeparator = "."
	Application.ThousandsSeparator = ","
	Application.UseSystemSeparators = False
End Sub
In questo modo l'intero documento userebbe il "." come separatore decimale e tutti i problemi sarebbero risolti (non solo per il copia/incolla "nel" foglio, ma anche per il copia/incolla "dal" foglio).
Poi, per buona educazione, è il caso di risistemare tutto prima della chiusura del documento:

Codice: Seleziona tutto

Private Sub Workbook_BeforeClose(Cancel As Boolean)
	Application.UseSystemSeparators = True
End Sub
Tuttavia sono d'accordo con te:
Zane ha scritto:Vorrei TANTO evitare le macro, se possibile.
l'attivazione delle macro potrebbe dare agli utenti la falsa sensazione che il tuo documento faccia cose "nascoste" a loro insaputa.

Come "second best" credo che la migliore alternativa sia di:
  • impostare le due caselle di input come testo generico (in questo modo Excel non si prenderà il disturbo di convertirle in numero prendendo delle cantonate),
  • definire due nomi (ad es. "capitale" e "prezzo") che si occupino di sostituire la "," al "." solo se necessario e di usarli nei calcoli successivi al posto dei riferimenti diretti alle celle.
Ad esempio:

Codice: Seleziona tutto

capitale = SE(SE.ERRORE(TROVA(".";'Dip buy'!$E$16);FALSO);NUMERO.VALORE('Dip buy'!$E$16;".";",");VALORE('Dip buy'!$E$16))
prezzo = SE(SE.ERRORE(TROVA(".";'Dip buy'!$E$17);FALSO);NUMERO.VALORE('Dip buy'!$E$17;".";",");VALORE('Dip buy'!$E$17))
In questo modo, indipendentemente dal separatore decimale inserito nelle caselle di input, nei nomi "capitale" e "prezzo" avrai un valore numerico correttamente separato da ",".

Questo metodo, rispetto al precedente, ha diverse falle:
  • rimane il problema di copiare/incollare i numeri separati da "," dal foglio al sito web che si aspetta "." come separatore,
  • può funzionare solo se il documento viene usato in Italia (o negli altri paesi che usano la virgola come separatore decimale),
  • funziona solo per valori < 1000 (se entra in gioco anche il separatore delle migliaia, le formule consigliate ovviamente non funzionano più).
Ciao, Pippo.

N.B.: Dimenticavo... quanto detto (entrambi i metodi) vale per Excel! Il secondo potrebbe funzionare anche in Calc (ma non l'ho provato), il primo sicuramente no.

Re: Excel/Calc: incollare numeri decimali con il punto in celle decimali con virgola

Inviato: gio gen 04, 2018 10:44 pm
da Zane
Grazie di cuore ragazzi!

Ho seguito il vostro suggerimento di lasciare il campo di input come testo, fare la sostituzione in una cella di lavoro, svolgere i calcoli su quelle e riconvertire i numeri prima di mostrarli all'utente.

Come diceva PippoDJ rimane la sfiga che funziona solo se l'utente ha impostato il programma nel formato italiano classico ("virgola" come separatore di decimali), ma per il nostro pubblico di riferimento dovrebbe essere OK così.

Se volete provare il foglio aggiornato e darmi un feedback, vi ascolto molto volentieri.

Re: Excel/Calc: incollare numeri decimali con il punto in celle decimali con virgola

Inviato: gio gen 04, 2018 11:42 pm
da PippoDJ
Ciao Zane,
Zane ha scritto:Se volete provare il foglio aggiornato e darmi un feedback, vi ascolto molto volentieri.
funziona bene in Excel 2013, ma dà problemi in OpenOffice Calc 4.1.1 e 3.3.0.
In OpenOffice Calc è necessario convertire esplicitamente da "testo" a "numero" anche se la cella ha formato numerico.
Dovresti risolvere sostituendo

Codice: Seleziona tutto

=SOSTITUISCI(E16;".";",")
con

Codice: Seleziona tutto

=VALORE(SOSTITUISCI(E16;".";","))
solo nelle celle "Valori convertiti" (nelle celle di output, formattate come testo, va già bene così).

Ciao, Pippo.

Re: Excel/Calc: incollare numeri decimali con il punto in celle decimali con virgola

Inviato: ven gen 05, 2018 2:44 pm
da Zane
Grazie di nuovo PippoDJ! Io ho LibreOffice 5.4.4.2 e con questa versione mi funzionava OK. Ho comunque modificato come da tuo suggerimento, così lo rendiamo compatibile anche con le vecchie versioni. Mi fai un ultimo check per favore?

Re: Excel/Calc: incollare numeri decimali con il punto in celle decimali con virgola

Inviato: dom gen 07, 2018 12:00 pm
da PippoDJ
Zane ha scritto:Mi fai un ultimo check per favore?
Mi sembra :approvo