Date: prev next · Thread: first prev next last


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 <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




--
For unsubscribe instructions e-mail to: users+unsubscribe@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

Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.