[sv-users] Calc - Valuta & tal till text.

classic Classic list List threaded Threaded
2 messages Options
Jan Öhman Jan Öhman
Reply | Threaded
Open this post in threaded view
|

[sv-users] Calc - Valuta & tal till text.

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)?
eller gör beräkningar på 4.67 * 0,8 = 3.74?

Att omvandla TEXT  till VALUTA - inget problem => VALUTA()
Att omvandla TEXT till TAL - inget problem => TEXTNUM()
Men hur omvandlar man VALUTA och TAL till TEXT med en funktion? typ
"NUMTEXT()"
(något jag missat?)
_______________

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.
Blad2, Resultatblad 1 - alla tal som valuta, är representerade med
decimalkomma (ex. 14,00kr eller 10,00kr eller 4,67kr)
Blad3, Resultatblad 2 - alla tal som valuta, har förmodligen samma
representation som blad 1, men oönskade tecken är bortrensade.

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.

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

(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!
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?

//Jan Ö

--
For unsubscribe instructions e-mail to: [hidden email]
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

Jan Öhman Jan Öhman
Reply | Threaded
Open this post in threaded view
|

Re: [sv-users] Calc - Valuta & tal till text.

Tack Johnny!
Det var funktionen TEXT() som jag sökte.
Min idé (som jag kanske måste skrota pga. att det inte går att sätta
absoluta referenser till en cell.)
Idag importeras / kopieras värden från Excel- filer / hämtas information
från leverantörers hemsidor till "Blad1"
Både text och annat hämtas / flyttas och blanka rader läggs in för att
skilja på olika grupper.
Detta innebär att "Blad1" kan innehålla "allt möjligt".

Från Blad1 tänkte jag bearbeta innehållet för att passa till två
exporter - En med decimal punkt och en annan med decimalkomma.
Idag måste nya formler skapas och kopieras till dessa sidor varje gång
det är dags för export.
_________

Jag visste inte att formatet "Valuta" inte räknades som tal.
Fungerar jätte bra att räkna med - är något av de ingående värden inte
tal visas det direkt.
Snabbt att se om talet är formaterat som text - visar sig direkt.
Det händer att jag ändrar på "valuta formatet" dvs. ändrar enheten från
kr till st.
Detta kan se ganska proffsigt ut - faktiskt.
Beräkningar på ett sådant fält fungerar perfekt.

formatet 1.500,00kr är ett problem (men inte så stort för mig)
Skulle detta uppkomma upptäcks det ganska snabbt vid omvandling eller
beräkning.
Uppkommer kanske 1-2 ggr/år.
________

Info!
Jag håller på att fördjupa mig i att kunna läsa, skriva och bearbeta
celler i Calc med ett externt program.
Vissa funktioner har jag rett ut hur det hanteras (som typsnitt,
storlek, färger, vertikal / horisontell justering osv.)
Andra funktioner har jag inte riktigt fått att fungera (som att slå ihop
celler / skriva in vissa beräkningar / läsa celler /skriva vertikal text
/ infoga bilder osv.)
Det har visat sig att jag fått hjälp med vissa funktioner skrivna i
VisualBasic.
Men söker forum och kunskap om ämnet.

Men tack för hjälpen denna gång.
//Jan Ö


Den 2016-04-02 kl. 12:52, skrev Johnny Rosenberg:

> Den 1 april 2016 19:13 skrev Jan Öhman <[hidden email]
> <mailto:[hidden email]>>:
>
>     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:
>     [hidden email]
>     <mailto:users%[hidden email]>
>     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
>
>


--
For unsubscribe instructions e-mail to: [hidden email]
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