Den 1 april 2016 19:13 skrev Jan Öhman <Jan_Ohman@glocalnet.net
<mailto:Jan_Ohman@glocalnet.net>>:
Hej!
Har kört fast. Idéerna har sinat.
Windows är konfigurerat så att tal visas med decimalkomma dvs.
10,00 kr (inte 10.00 kr)
Min huvud fråga är egentligen
Hur omvandlar man 14,00 kr till text 14.00 (eller möjligen 14)?
Till 14 går ju bra med (om värdet ligger i A1):
=TEXT(A1;"0")
eller gör beräkningar på 4.67 * 0,8 = 3.74?
Det gör man inte, det är en styggelse. Och det är fult. Undvik!
Dessutom, om du omvandlar tal (oavsett form) till text, kan du inte
längre göra beräkningar på den cellen (såvida du inte omvandlar
tillbaka till ett värde igen, det vill säga går över både å och bäck
efter vatten).
Mitt tips är att omvandla till tal så tidigt det bara går, sedan kan
man i princip göra vad man vill med det hela genom vanlig formatering
utan att det påverkar resultatet i senare led eller strular till det
på annat sätt. Kort sagt, gör rätt från början, så blir det så mycket
enklare senare.
Att omvandla TEXT till VALUTA - inget problem => VALUTA()
Att omvandla TEXT till TAL - inget problem => TEXTNUM()
Märkligt, i Apache OpenOffice verkar den heta VÄRDE()… men inte i Excel.
Men hur omvandlar man VALUTA och TAL till TEXT med en funktion?
typ "NUMTEXT()"
TEXT()
(något jag missat?)
Ja, TEXT()
Från hjälpen:
Syntax
TEXT(tal; format)
*tal* är det siffervärde som ska omvandlas.
*Format* är den text som definierar formatet. Använd decimaler och
tusentalsavgränsare enligt språkinställningarna i cellformatet.
Men lugn, du kommer inte att behöva den, vi ska inte gå över alltför
många åar efter vattnet här.
Fortsätt att läsa istället.
_______________
För att förklara ytterligare, finns ett exempel nedan.
Ska försöka förenkla problemet så bra som möjligt.
Antag att det finns tre flikar (blad) i LibreOffice Calc.
Blad1, Huvud bladet - alla tal som valuta, är förmodligen (oftast)
representerade med decimalpunkt (ex. 14 eller 10.00 eller 4.67),
skräptecken och blanksteg kan förekomma.
Så egentligen är det inte alls ”alla tal som valuta”, utan snarare
alla tal som text, det vill säga inte tal alls, utan bara text. Eller
är det en blandning? Nåja, det visade sig inte spela så stor roll för
fortsättningen. Häng på…
Blad2, Resultatblad 1 - alla tal som valuta, är representerade med
decimalkomma (ex. 14,00kr eller 10,00kr eller 4,67kr)
Okej, låter ju vettigt, innan man fattat vad det egentligen är frågan om…
Blad3, Resultatblad 2 - alla tal som valuta, har förmodligen samma
representation som blad 1, men oönskade tecken är bortrensade.
Om blad två verkligen är ”som valuta”, finns inga oönskade tecken att
rensa bort, det kan det endast finnas om det är ”som text” (annars
blir ju resultatet ett felmeddelande), så jag antar att så är fallet
även på blad 2, alltså…
Men jag kommer att följa ditt exempel till punkt och pricka till att
börja med, bara lugn… innan jag vänder allt på ända och visar hur
enkelt man kan, och bör, göra det (slå mig gärna på fingrarna om det
finns ett ännu enklare sätt).
För att enklare kunna testa och beskriva idéerna / lösningarna
representerar Blad1 rad 10-19, Blad2 rad 20-29, och Blad 3 rad 30-39.
Varav det sista bladet är helt onödigt, men häng på så får du snart se
varför…
Antag att följande celler innehåller följande värden och formler.
(Blad1)
B10 = 14
C10 = 10.00
D10 = 4.67
E10 = 7,9
Japp, inmatat och klart.
(Blad2)
B20 =VALUTA(RENSA(STÄDA(BYT.UT(B10;".";",")))) => 14,00 kr
C20 =VALUTA(RENSA(STÄDA(BYT.UT(C10;".";",")))) => 10,00 kr
D20 =VALUTA(RENSA(STÄDA(BYT.UT(D10;".";",")))) => 4,67 kr
E20 =VALUTA(RENSA(STÄDA(BYT.UT(E10;".";",")))) => 7,90 kr
B21 = Valuta(B20*0,8) => 11,20 kr
C21 = Valuta(C20*0,8) => 8,00 kr
D21 = Valuta(D20*0,8) => 3,74 kr
E21 = Valuta(E20*0,8) => 6,32 kr
Så långt inget problem!
Beror på vad man menar med problem… alla värden är ju fortfarande i
textformat, vilket oftast är ett jätteproblem…
men...
(Blad3)
Min önskan är följande resultat i cellerna på Blad3 (ingen enhet,
samt decimalpunkt)
B30 = 14.00 (eller 14)
C30 = 10.00 (eller 10)
D30 = 4.67
E30 = 7.90 (eller 7.9)
B31 = 11.20 (eller 11.2)
C31 = 8.00 (eller 8)
D31 = 3.74
E31 = 6.32
Enklast skulle ha varit följande (men uppfyller inte önskemålet)
(talen/beloppen ändrar från decimalkomma till decimal punkt)
B30 = BYT.UT(B20;",";".") => 14.00 kr
C30 = BYT.UT(C20;",";".") => 10.00 kr
osv.
Det fungerar inte att formatera cellerna i bladet som text
istället för valuta, eftersom cellerna inte innehåller tal utan
formler.
Det är möjligt att utgå från Blad1 på följande sätt
B30 =RENSA(STÄDA(BYT.UT(B10;",";"."))) => 14
C30 =RENSA(STÄDA(BYT.UT(C10;",";"."))) => 10.00
Helt OK! (men det hade varit snyggare om resultatet hade haft
samma antal "decimaler")
Någon som har något tips?
Ja, gå inte över ån efter vatten. Och absolut inte så många gånger!
Jag utgår från ditt exempel:
B10 = 14
C10 = 10.00
D10 = 4.67
E10 = 7,9
Antar att du klistrat in dem från någon extern källa, som vanligt,
annars finns det ju ingen anledning till detta strul…
På rad 20 gör jag om dem till riktiga tal direkt, för att undvika mer
strul som kan uppkomma annars:
B20=TEXTNUM(RENSA(STÄDA(BYT.UT(B10;".";","))))
C20=TEXTNUM(RENSA(STÄDA(BYT.UT(C10;".";","))))
D20=TEXTNUM(RENSA(STÄDA(BYT.UT(D10;".";","))))
E20=TEXTNUM(RENSA(STÄDA(BYT.UT(E10;".";","))))
I Apache OpenOffice, byt ut TEXTNUM mot VÄRDE.
I detta fallet behövs inte RENSA och STÄDA, men det kan det kanske
göra i andra fall, så jag lämnar dem kvar. Jag har i princip bara bytt
ut ditt VALUTA mot TEXTNUM här.
Av någon anledning vill du multiplicera alla värden med 0,8 på rad 21,
så då gör vi väl det då. Utan att krångla till det:
B21=0,8*B20
C21=0,8*C20
D21=0,8*D20
E21=0,8*E20
Nu ville du visa detta (rad 20-21) som valuta med decimalpunkt
istället, eller hur? Varför ska vi göra extrarader (30-31) för det?
Det är ju bara att formatera raderna som vi vill ha dem! Du står redan
i ån med en hink i näven, bara att hämta upp vattnet!
Markera (i detta fall) B20:E21
Högerklicka, välj Formatera celler
Välj fliken Nummer
Välj Valuta under Kategori
Välj den valuta som passar dig bäst i kategorin Format, eller skriv in
en manuellt i fältet Formatbeskrivning
Välj Engelska (Storbritannien), eller annat språk där man använder
decimalpunkt, i kategorin Språk.
Klicka OK
Klart. Mer än så behövs inte. Krångla inte till det så förbaskat! ;)
För att sammanfatta, så styrs decimaltecknet av det språk du väljer. I
Sverige har vi decimalkomma, liksom i ungefär halva världen. I andra
halvan av världen använder de decimalpunkt (bortsett från att det
finns några få som använder andra symboler). Vill du ha decimalpunkt
istället för det i Sverige korrekta decimalkommat, välj ett språk som
passar dina önskemål för de cellerna.
Något annat sätt känner jag inte till, i alla fall inget bättre sätt.
Se dock upp med tusentalsavgränsare i originaldatat! Vad händer om du
exempelvis i cell B10 har värdet 14,530.25? Det vill säga med
kommatecken som tusentalsavgränsare? Detta är ju inte ett helt
ovanligt sätt att skriva i halva världen…
Jo, du får Err: 502 i B20 och B21. Efter teckenutbyte får du ju
”14,530,25”, vilket strular till det. Så hur man än gör, är man ute på
halt vatten eller djup is… Det går säkert att åtgärda detta också, men
komplicerat blir det om man också kan förvänta sig motsvarande värden
för andra språk, exempelvis 14.530,25, som inte heller är så ovanligt.
Har dock ingen bra lösning på detta just nu. Det verkar inte som att
de funktioner som behövs stöder reguljära uttryck, och då blir det ju
rätt svårt, om man inte gör sin egen funktion förstås.
Vänliga hälsningar
Johnny Rosenberg
//Jan Ö
--
For unsubscribe instructions e-mail to:
users+unsubscribe@sv.libreoffice.org
<mailto:users%2Bunsubscribe@sv.libreoffice.org>
Problems?
http://www.libreoffice.org/get-help/mailing-lists/how-to-unsubscribe/
Posting guidelines + more:
http://wiki.documentfoundation.org/Netiquette
List archive: http://listarchives.libreoffice.org/sv/users/
All messages sent to this list will be publicly archived and
cannot be deleted